基于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 相关文章推荐
List the Stored Procedures in a SQL Server database
Jun 20 Javascript
js中创建对象的几种方式示例介绍
Jan 26 Javascript
javascript类型转换使用方法
Feb 08 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
Feb 26 Javascript
jQuery中replaceAll()方法用法实例
Jan 16 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
Aug 19 Javascript
JS实现的最简Table选项卡效果
Oct 14 Javascript
js实现日历与定时器
Feb 22 Javascript
vue实现单选和多选功能
Aug 11 Javascript
微信小程序实现自上而下字幕滚动
Jul 14 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
Aug 08 jQuery
angular1.x ui-route传参的三种写法小结
Aug 31 Javascript
浅谈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 获取文件权限函数介绍
2013/07/11 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
jquery键盘事件使用介绍
2011/11/01 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
vue组件中的数据传递方法
2018/05/14 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
python实现给微信公众号发送消息的方法
2017/06/30 Python
Python实现的计数排序算法示例
2017/11/29 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
建筑工程专业学生的自我评价
2013/12/25 职场文书
文秘求职信范文
2014/04/10 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
骨干教师个人总结
2015/02/11 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
python process模块的使用简介
2021/05/14 Python
python中tkinter复选框使用操作
2021/11/11 Python
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python