offsetWidth 是什么?从外形上来看,它和width很像,其实offsetWidth是取得一个DOM对象的border + padding + width的和。果然是和width属性是有关联的啊。
我们认识了offsetWidth后,看一下以下的代码,看看offsetWidth返回的值是什么。

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"/><title>offsetWidth的怪异问题</title><style>.img-wrap {width: 520px;height: 280px;position: relative;margin: 100px auto 0;border: 1px solid #F00;}.img-wrap ul {position: absolute;left: 0;top: 0;margin: 0;padding: 0;}.img-wrap ul li {list-style: none;float: left;}.img-wrap ul li img {display: block; /* 消除img的魔鬼间距 */}</style>
</head>
<body>
<div class="img-wrap"><ul><li><img src="./image/aa.webp"/></li><li><img src="./image/bb.jpg"/></li><li><img src="./image/cc.jpg"/></li><li><img src="./image/ee.webp"/></li></ul>
</div>
<script>var oImgWrap = document.querySelector('.img-wrap');var oUl = document.querySelector('ul');var aLi = oUl.getElementsByTagName('li');var aWidth = aLi[0].offsetWidth;console.log(aWidth);// 输出的值是什么?console.log(oUl.offsetWidth); // 输出的值是什么?
</script>
</body>
</html>

这里我要补充说明的是,代码中引入的图片的规格都是520 * 280的(单位:px)。所以以上代码输出的值是什么?520吗?很让人意外的是输出的是0。

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"/><title>幻灯片</title><style>.img-wrap {width: 520px;height: 280px;position: relative;margin: 100px auto 0;border: 1px solid #F00;}.img-wrap ul {position: absolute;left: 0;top: 0;margin: 0;padding: 0;}.img-wrap ul li {list-style: none;float: left;}.img-wrap ul li img {display: block; /* 消除img的魔鬼间距 */}</style>
</head>
<body>
<div class="img-wrap"><ul><li><img src="./image/aa.webp"/></li><li><img src="./image/bb.jpg"/></li><li><img src="./image/cc.jpg"/></li><li><img src="./image/ee.webp"/></li></ul>
</div>
<script>
window.onload = function () {var oImgWrap = document.querySelector('.img-wrap');  var oUl = document.querySelector('ul');var aLi = oUl.getElementsByTagName('li');var aWidth = aLi[0].offsetWidth;console.log(aWidth); // 520console.log(oUl.offsetWidth);// 520
}
</script>
</body>
</html>

这段代码比上段代码多出了一句window.onload = function () {},这句话的作用是当文档内容或者图片加载完毕后再执行里面的代码,我们发现offsetWidth的值被正确的获取到了,可是按照我的理解,最初的那段代码的js是放在最后面的,按道理来说,执行输出offsetWidth值得时候,文档和图片都应该是加载完毕了的,不应该会出现获取不到offsetWidth值得情况呀。这种怪异的现象先记录在此,以后写代码的时候尽量要写上window.onload = function() {}

记录一个有关offsetWidth的怪异问题相关推荐

  1. 记录一个海思TOE的BUG

    原始引用地址: 记录一个海思TOE的BUG time: 2020.5.3 17:57 发现的过程 ​ 最近在做onvif开发时,有x86的验证的功能没有问题,移动到海思Hi3536上简单运行貌视也很正 ...

  2. 复习Java第一个项目学生信息管理系统 04(权限管理和动态挂菜单功能) python简单爬数据实例Java面试题三次握手和四次挥手生活【记录一个咸鱼大学生三个月的奋进生活】016

    记录一个咸鱼大学生三个月的奋进生活016 复习Java(学生信息管理系统04权限管理和动态挂菜单功能) 改写MainFrame的构造方法 新增LoginFrame的验证登录是否成功的代码 新增Logi ...

  3. 记录一个vue监控屏幕宽度的问题

    记录一个vue监控屏幕宽度的问题 因为今天有查询过如何用vue监控屏幕宽度的问题,搜到的很多都是这样的写法: data() {return {screenWidth: null, //屏幕尺寸};}, ...

  4. 记录一个db2 中LISTAGG函数问题:The length resulting from “LISTAGG“ is greater than “4000“

    记录一个db2 中LISTAGG函数问题 什么是LISTAGG函数 LISTAGG("字段名","分隔符") as "自定义字段名" 就是将 ...

  5. 记录一个C++多线程的坑

    记录一个C++多线程的坑 VS2019报错 解决方案: 错误代码 修改方案: 写在最后,发牢骚 VS2019报错 1>C:\Program Files (x86)\Microsoft Visua ...

  6. 记录一个CentOS 6版本中,yum install 命令无法实现的问题 # 谭子

            记录一个CentOS 6版本中,yum install 命令无法实现的问题. 在初次使用yum install mysql命令时,出现了下文内容,这里的报错内容主要指向的内容是 Cen ...

  7. 复习Java小球游戏代码分享Java面试题MySQL中常用的锁生活【记录一个咸鱼大学生三个月的奋进生活】021

    记录一个咸鱼大学生三个月的奋进生活021 复习Java小球游戏 游戏界面的代码 小球运动线程的代码 运行游戏的代码 运行结果 代码分享 学习Java面试题(MySQL中常用的锁) 照片分享 复习Jav ...

  8. 记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径。)

    记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径.) 第一想法是路径问题: 1.检查文件路径是否正确 2.另外 ...

  9. 记录一个子串在整串种出现的次数(JAVA)

    记录一个子串在整串种出现的次数(Java) 1. 任务描述 编写一个程序,记录一个子串在整串种出现的次数,例如记录子串"nba"在整串" nbaernbatnbaynba ...

最新文章

  1. 50 种系统免遭黑客侵袭的方法 [2017 年版]
  2. 配置Chrome支持本地(file协议)的AJAX请求
  3. drools dmn_使用Drools的DMN运行时示例
  4. Java中的紧凑堆外结构/组合
  5. 100条常用写作谚语(1)(2)(3)(4)
  6. mysql 数据库中数据去重,oracle数据库中如何达到像mysql数据库中group by 那种去重的效果..求大神解答...
  7. 手把手带你入门Python爬虫(四、ORM与peewee)
  8. html、css、js实现简易计算器
  9. UI完美素材|(Watch展示篇)Mockups动态图提案模板
  10. Linux下设置文件权限
  11. c语言里面你不知道的break与switch,contiune的用法
  12. 【机器学习】广义回归神经网络(GRNN)的python实现
  13. Javascript第五章为什么用firstChild获取table中最后一个节点会取到text或者tbody第十一课
  14. 手柄xinput模式_让你的普通手柄变成360手柄(XInputEmulator)下载_让你的普通手柄变成360手柄(XInputEmulator)官方下载-太平洋下载中心...
  15. java 进销存系统_java进销存系统(含数据库)
  16. 三七皂苷-壳聚糖(PNS-CSB)水凝胶/聚乙烯吡咯烷酮/pH敏感性羧甲基/壳聚糖水凝胶的制备
  17. nodejs+vue结合七牛云实现图片上传
  18. PopupWindow 监听返回键
  19. 集线器、交换机、路由器、网桥、网关之间的区别
  20. 到底还有没有月薪3万以下的程序员?程序员工资真的这么高?

热门文章

  1. 如何修改hosts文件内容
  2. 一套完整的三甲医院医学影像科PACS系统源码
  3. 安卓怎样查看网站服务器地址,怎样查看安卓APP服务器地址
  4. Java poi生成 Excel
  5. 个人贡献者与团队成员
  6. 蓝牙解锁电脑_如何通过附近的蓝牙电话来(解锁)锁定您的PC
  7. Autoit 常用函数
  8. PDF怎么直接绘图?这些渠道可以试试
  9. C#中ComboBox的SelectedIndexChanged事件获取Tag值
  10. 用PS打造无限旋转阶梯级