基于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 相关文章推荐
js由下向上不断上升冒气泡效果实例
May 07 Javascript
javascript如何定义对象数组
Jun 07 Javascript
JavaScript实现窗口抖动效果
Oct 19 Javascript
JS+CSS3制作炫酷的弹窗效果
Nov 08 Javascript
vue.js动态数据绑定学习笔记
May 19 Javascript
详解vue.js移动端导航navigationbar的封装
Jul 05 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
Dec 14 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
Jan 08 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
May 31 Javascript
Vue-cli@3.0 插件系统简析
Sep 05 Javascript
node将geojson转shp返回给前端的实现方法
May 29 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
AngularJS基础知识
2014/12/21 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
Python continue语句用法实例
2014/03/11 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
Python列表解析操作实例总结
2020/02/26 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
物业门卫岗位职责
2013/12/28 职场文书
优秀经理事迹材料
2014/02/01 职场文书
信息技术培训感言
2014/03/06 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书