基于js中style.width与offsetWidth的区别(详解)


Posted in Javascript onNovember 12, 2017

作为一个初学者,经常会遇到在获取某一元素的宽度(高度、top值...)时,到底是用 style.width还是offsetWidth的疑惑。

1. 当样式写在行内的时候,如 <div id="box" style="width:100px">时,用 style.width或者offsetWidth都可以获取元素的宽度。

但是,当样式写在样式表中时,如 #box{ width: 100px; }, 此时只能用offsetWidth来获取元素的宽度,而style.width所返回的值为空。

2. style.width 获取的元素宽度只是div的宽度,不包括border、和padding所占的宽度,且宽度值是带单位px的。

offsetWidth 获取的元素宽度为width+border+padding的值(不包括margin),且返回值只为一个数值,不带单位。

如下面的例子所示:

<head>
    <script>
      window.onload = function(){
        var box = document.getElementById('box');
        console.log(box.style.width); 
        console.log(box.offsetWidth); 
       }
</script>
  </head>
  <body>
    <div id="box" style="width:300px; height: 300px; padding:3px; margin: 1px; border: 1px solid red;"></div>
  </body>

控制台输出的第一个结果为:  300px

控制台输出的第二个结果为:  308      注:300+ 3x2 +1x2 = 308, 且不带单位

3. style.width 也可以在js中用来设置元素的宽度,而offsetWidth不可以。

如下面的例子所示:

<script>
      window.onload = function(){
        var box = document.getElementById('box');
        box.style.width = '200px';
        console.log(box.offsetWidth);
        console.log(box.style.width);
        box.offsetWidth = '400px';
        console.log(box.offsetWidth);
        console.log(box.style.width);
      }
    </script>
  </head>
  <body>
    <div id="box" style="width:300px; height: 300px; padding:3px; margin: 2px; border: 1px solid red;"></div>
  </body>

控制台输出的结果分别为 208     200px     208      200px

也就是说通过style.width 设置宽度成功,而 通过offsetWidth设置宽度失败。

以上这篇基于js中style.width与offsetWidth的区别(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在视频前插入广告
Nov 20 Javascript
犀利的js 函数集合
Jun 11 Javascript
JavaScript 权威指南(第四版) 读书笔记
Aug 11 Javascript
jquery之empty()与remove()区别说明
Sep 10 Javascript
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
javascript定义变量时加var与不加var的区别
Dec 22 Javascript
Jquery实现textarea根据文本内容自适应高度
Apr 03 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
Sep 10 Javascript
bootstrap多层模态框滚动条消失的问题
Jul 21 Javascript
Vue实现固定定位图标滑动隐藏效果
May 30 Javascript
JS绘图Flot如何实现可选显示曲线图功能
Oct 16 Javascript
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 Vue.js
浅谈webpack下的AOP式无侵入注入
Nov 12 #Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
Nov 12 #Javascript
JS实现小球的弹性碰撞效果
Nov 11 #Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
Nov 11 #jQuery
解决vue组件中使用v-for出现告警问题及v for指令介绍
Nov 11 #Javascript
JS Input里添加小图标的两种方法
Nov 11 #Javascript
fetch 使用及如何接收JS传值
Nov 11 #Javascript
You might like
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
Yii2如何批量添加数据
2016/05/17 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
基于WebUploader的文件上传js插件
2016/08/19 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
Python中用altzone()方法处理时区的教程
2015/05/22 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
Django自定义用户认证示例详解
2018/03/14 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
Python常用类型转换实现代码实例
2020/07/28 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
毕业生自我推荐
2013/11/04 职场文书
班主任寄语大全
2014/04/04 职场文书
经营目标管理责任书
2014/07/25 职场文书
法人身份证明书
2014/10/08 职场文书
廉政承诺书
2015/01/19 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
电台广播稿范文
2015/08/19 职场文书