对于JS中各种width和height总是分不太清楚,今天先来仔细分辨一下,记录这些宽度和高度到底有什么秘密吧!

直接上代码:

<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">* {padding: 0;margin: 0;}#oneDiv {width: 200px;height: 900px;padding: 10px;margin: 20px;border: 5px solid lightgreen;background: yellow;}
</style>
</head>
<body><div id="oneDiv">我是div</div>
</body>
<script type="text/javascript">console.log("==============浏览器===============")console.log("clientWidth:", document.body.clientWidth);console.log("clientHeight:", document.body.clientHeight);console.log("clientTop:", document.body.clientTop);console.log("clientLeft:", document.body.clientLeft);console.log("offsetWidth:", document.body.offsetWidth);console.log("offsetHeight:", document.body.offsetHeight);console.log("offsetTop:", document.body.offsetTop);console.log("offsetLeft:", document.body.offsetLeft);console.log("scrollWidth:", document.body.scrollWidth);console.log("scrollHeight:", document.body.scrollHeight);console.log("scrollTop:", document.body.scrollTop);console.log("scrollLeft:", document.body.scrollLeft);console.log("==============div容器===============")console.log("clientWidth:", document.getElementById('oneDiv').clientWidth);console.log("clientHeight:", document.getElementById('oneDiv').clientHeight);console.log("clientTop:", document.getElementById('oneDiv').clientTop);console.log("clientLeft:", document.getElementById('oneDiv').clientLeft);console.log("offsetWidth:", document.getElementById('oneDiv').offsetWidth);console.log("offsetHeight:", document.getElementById('oneDiv').offsetHeight);console.log("offsetTop:", document.getElementById('oneDiv').offsetTop);console.log("offsetLeft:", document.getElementById('oneDiv').offsetLeft);console.log("scrollWidth:", document.getElementById('oneDiv').scrollWidth);console.log("scrollHeight:", document.getElementById('oneDiv').scrollHeight);console.log("scrollTop:", document.getElementById('oneDiv').scrollTop);console.log("scrollLeft:", document.getElementById('oneDiv').scrollLeft);
</script>
</html>

上文代码中,我将每种width和height都打印出来查看实际效果(由于浏览器的不同会导致clientHeight、offsetHeight和scrollHeight三个属性返回的大小有区别,我在此处仅使用谷歌浏览器做示范,在浏览器中这三者返回的都是文档的大小):


现在,我们来具体区别一下:

一、clientWidth和clientHeigh 、 clientTop和clientLeft

1,clientWidth的实际宽度

clientWidth = width+左右padding

2,clientHeigh的实际高度

clientHeigh = height + 上下padding

3,clientTop的实际宽度

clientTop = boder.top(上边框的宽度)

4,clientLeft的实际宽度

clientLeft = boder.left(左边框的宽度)

二、offsetWidth和offsetHight 、 offsetTop和offsetLeft

1,offsetWidth的实际宽度

offsetWidth = width + 左右padding + 左右boder

2,offsetHeith的实际高度

offsetHeith = height + 上下padding + 上下boder

3,offsetTop实际宽度

offsetTop:当前元素 上边框 外边缘 到 最近的已定位父级(offsetParent) 上边框 内边缘的 距离。如果 级都没有定位,则是到body 顶部的距离。

4,offsetLeft实际宽度

offsetLeft:当前元素 左边框 外边缘 到 最近的已定位父级(offsetParent) 左边框 内边缘的距离。如果父级都没有定位,则是到body左边的距离。

三、scrollWidth和scrollHeight 、 scrollTop和scrollLeft

1,scrollWidth实际宽度

scrollWidth:获取指定标签内容层的真实宽度(可视区域宽度+被隐藏区域宽度)。

2,scrollHeight的实际高度

scrollHeight:获取指定标签内容层的真实高度(可视区域高度+被隐藏区域高度)

3,scrollTop

scrollTop :内容层顶部 到 可视区域顶部的距离。

4,scrollLeft

scrollLeft:内容层左端 到 可视区域左端的距离.

原文:https://blog.csdn.net/qq_42089654/article/details/80515916

JS中各种width和height的区别相关推荐

  1. html offsetwidth 字符串宽度,基于js中style.width与offsetWidth的区别(详解)

    作为一个初学者,经常会遇到在获取某一元素的宽度(高度.top值...)时,到底是用 style.width还是offsetWidth的疑惑. 1. 当样式写在行内的时候,如 时,用 style.wid ...

  2. js中 style.width与 offsetWidth的区别

    作为一个初学者,经常会遇到在获取某一元素的宽度(高度.top值...)时,到底是用 style.width还是offsetWidth的疑惑. 1. 当样式写在行内的时候,如 <div id=&q ...

  3. js删除网页中图片width 和 height

    js删除网页中图片width 和 height 一段代码轻松搞定 适用于: 电脑端网页带图片属性导致移动网页显示错位/错误 备注: 需搭配jquery.min.js (注!jquery-2.0以上版本 ...

  4. js中的target与currentTarget的区别转

    关于js中target与currentTarget的区别的关键在于他们所处在的事件流的阶段是不一样的,target处于事件流的目标阶段,currentTarget处理事件流的捕获.处于目标阶段和冒泡阶 ...

  5. node.js中exports与module.exports的区别分析

    前言 关于Node.js中的exports和module.exports,很多时候都比较容易让人混淆,弄不清楚两者间的区别.那么我们就从头开始理清这两者之间的关系. 来源 在开发Node.js应用的时 ...

  6. js中构造函数与普通函数的区别

    构造函数不仅只出现在JavaScript中,它同样存在于很多主流的程序语言里,比如c++.Java.PHP等等.与这些主流程序语言一样,构造函数在js中的作业一样,也是用来创建对象时初始化对象,并且总 ...

  7. js中关于length与size的区别

    length与size的区别 用了很长时间的length的一直没考虑过其与size的区别,今天同事问起,特意查找资料,将两者的相同点与共同点列出来. 相同点:在jQuery中用于返回元素的个数,siz ...

  8. JS中的let和var的区别

    ES6 新增了let命令,用来声明局部变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束. 在ES6之前,我们都是用var来声明变量,而且JS只有函 ...

  9. php中的foreach和js中的foreach的用法和区别

    PHP中的foreach循环: 主要用于遍历数组 例如: (1)// $colors=array("red","yellow","blue" ...

  10. js中(function(){}()),(function(){})(),$(function(){});之间的区别

    1. (function(){}())与(function(){})() 这两种写法,都是一种立即执行函数的写法,即IIFE (Immediately Invoked Function Express ...

最新文章

  1. DateEdit如果开启Vista模式并显示日期+时间模式
  2. hp-ux锁定用户密码_UX设计101:提出正确的问题-规划和促进用户访谈
  3. sublime text 3 前端开发常用插件
  4. C和汇编----存储类别、链接和内存管理
  5. 转: ant condition使用
  6. 地图 插件 html 经纬度,如何往地图位置(经纬度)选择插件页面传递经纬度
  7. 7.3.8.1 - 并发多线程 死锁和递归锁 - 信号量
  8. MYSQL第一章 创建表 修改表名 删除字段 添加字段 修改地段名
  9. 苹果全面开放漏洞奖励计划:最高100万美元等你拿
  10. 分享几个vue后台模板
  11. 【Python】详解pandas的isin索引和~反向索引
  12. Roaring位图具有更好的位图性能
  13. Kafka之sync、async以及oneway
  14. Variable Values‘ hover uses the same modifier as ‘Combined Hover‘ hover.
  15. WSUS将Hyper-V Server 2019视为Windows 10
  16. R实战| 雷达图(Radar Chart)
  17. 车牌识别-模板匹配-BP神经网络-卷积神经网络[深度学习]
  18. matlab-信号与系统
  19. 五类、超五类、六类跳线
  20. Altera PDN 设计和 FPGA 收发器性能

热门文章

  1. 最新二开微信表情包小程序+前后端 【去授权版】
  2. IMDB 5000 Movie Dataset(来自IMDB的5000个电影的数据集)
  3. TortoiseSVN—Repo-browser,打开你要比较的两个版本所在的地址,选择一个版本做为比较的基础(单击右键—选择mark for comparison),再选择另外一个版本(单击右键—选
  4. 网易VIP等级,QQ会员等级,TOMVIP邮箱多少钱?
  5. The <Router /> component appears to be a function component that returns报错解决方式
  6. 天文竞赛怎么用计算机,师范生教学技能大赛!计算机设计大赛!主持礼仪风采大赛!天文台活动预告!民宿企划竞赛!舞蹈大赛!...
  7. 【寻找最佳小程序】12期:小程序数据助手——微信官方打造,移动端数据分析工具...
  8. Ubuntu20.04 + ROS Noetic 安装 Projectory Dave 仿真环境
  9. 短信通知接口json报文开发设计总结
  10. 【构建基于树莓派cm4的机器人控制系统的运行环境】