基于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 相关文章推荐
filemanage功能中用到的lib.js
Apr 08 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
Apr 10 Javascript
js的[defer]和[async]属性
Nov 24 Javascript
javascript中的五种基本数据类型
Aug 26 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
Dec 06 Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 Javascript
深入理解js中的加载事件
Feb 08 Javascript
Angular.js中定时器循环的3种方法总结
Apr 27 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
Oct 19 jQuery
jQuery获取随机颜色的实例代码
May 21 jQuery
如何实现小程序与小程序之间的跳转
Nov 04 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简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
laravel5.6实现数值转换
2019/10/23 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
js获取页面description的方法
2015/05/21 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
Python正则表达式介绍
2012/08/06 Python
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
python返回昨天日期的方法
2015/05/13 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
Python3中exp()函数用法分析
2019/02/19 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
毕业生幼师求职自荐信
2013/10/01 职场文书
物流仓管员工作职责
2014/01/06 职场文书
学校安全生产承诺书
2014/05/23 职场文书
医学求职信
2014/05/28 职场文书
2014年检验员工作总结
2014/11/19 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
春风化雨观后感
2015/06/11 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书