基于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 相关文章推荐
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
Apr 20 Javascript
jQuery 获取对象 定位子对象
May 31 Javascript
Windows 系统下安装和部署Egret的开发环境
Jul 31 Javascript
封装好的js判断操作系统与浏览器代码分享
Jan 09 Javascript
js编写一个简单的产品放大效果代码
Jun 27 Javascript
AngularJS开发教程之控制器之间的通信方法分析
Dec 25 Javascript
javascript 中关于array的常用方法详解
May 05 Javascript
node.js 用socket实现聊天的示例代码
Oct 17 Javascript
Cocos2d实现刮刮卡效果
Dec 20 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
Jan 15 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
May 23 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
Jul 22 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 生成WML页面方法详解
2009/08/09 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
django 创建过滤器的实例详解
2017/08/14 Python
Python3计算三角形的面积代码
2017/12/18 Python
pyhton列表转换为数组的实例
2018/04/04 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
大韩航空官方网站:Korean Air
2017/10/25 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
即兴演讲稿
2014/01/04 职场文书
网页美工求职信
2014/02/15 职场文书
第二课堂活动总结
2014/05/07 职场文书
关于环保的演讲稿
2014/05/10 职场文书
大学生求职信怎么写
2015/03/19 职场文书
安全员岗位职责范本
2015/04/11 职场文书
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
PHP获取学生成绩的方法
2021/11/17 PHP
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers