博主信息
何澤小生的博客
博文
90
粉丝
0
评论
0
访问量
72263
积分:1
P豆:364

clientWidth 和 getBoundingClientRect 区别

2018年08月21日 15:30:42阅读数:1942博客 / 何澤小生的博客/ 前段技术大集合
document.documentElement.clientWidth
document.documentElement.getBoundingClientRect().width;

两个方法获取宽度的区别:

getBoundingClientRect().width获取到的其实是父级的右边距离浏览器原点(0,0)左边距离浏览器原点(0,0)的距离,即父级的宽度+2padding+2border。

此时的clientWidth等于父级的宽度+2*padding,不包括边框的宽度。

当不隐藏子级内容,即overflow为auto时,前者的宽度依然为这个数字,因为父级并没有改编盒模型。后者的宽度为上述得到的宽度-滚动条的宽度(17px);

例子如下:

<div id="divParent" style="background-color: #aaa; padding:8px; border:solid 7px #000; height:200px; width:500px; overflow:hidden;">
    <div id="divDisplay" style="background-color: #0f0; margin: 30px; padding: 10px;
        height: 400px; width: 600px; border: solid 3px #f00;">
    </div>
</div>

<script>
    var divP = document.getElementById('divParent');
    var divD = document.getElementById('divDisplay');

    var clientWidth = divP.clientWidth;
    var getWidth = divP.getBoundingClientRect().width;
    divD.innerHTML += 'clientWidth: ' + clientWidth + '<br/>';
    divD.innerHTML += 'getWidth: ' + getWidth + '<br/>';
</script>


全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • jsphp之间有有:1、php的字符串连接符是“.”
    今天我们来看一下 Array中 Array.forEach() Array.map()方法之间的。forEach()map()方法通常用于遍历Array元素,但几乎没有,我们来一一介绍。
    springbootspringmvc的是springboot只是一个配置工具,整合工具,辅助工具,springmvc是框架,项目中实际运行的代码。
    箭头函数普通函数
    GO语言中=:=的:=是赋值,:=是声明变量并赋值。本文通过实例为大家介绍了GO语言中=:=的,希望随大家有一定的帮助。
    vuereact相似:1、相似之处是他们都是JavaScript的UI框架,专注于创造前端的富应用;2、是react数据流单向,而vue数据双向绑定。
    nginx教程:本文为大家介绍了fastcgicgi有什么,具有一定的参考价值,希望可以帮助到大家。fastcgicgi的是:是否重复fork进程,处理请求。
    PHPCMSPHP的:PHPCMS是一个完整开源的网站内容管理系统,而PHP是一种计算机编程语言,而PHPCMS是用PHP语言进行编写的,所以两者是完全不同的东西,也无法比较
    centosredhat的是:1、版权问题不同,redhat的红帽图标是有版权的,CentOS被称为redhat的社版;2、服务不同,redhat是有相应的收费服务的,centos没有。
    css中”:“”::“的:”:“表示伪类,”::“表示伪元素。
    Struts2SpringMVC的:1、SpringMVC开发效率性能高于Struts2;2、Struts2的配置文件量比SpringMVC大;3、Struts2更加符合OOP的编程思想;4、SpringMVC
    ​下面由thinkphp框架教程栏目给大家介绍ThinkPHP5下has_onebelongs_to的,希望对需要的朋友有所帮助!
    【git rebase 】【merge】的是:1、采用mergerebase后,git log的,merge命令不会保留merge的分支的commit;2、加了【rebase】就是以【rebase
    jquery length()size():1、length是属性,而size是方法;2、lengthsize获的值是一样的,但是如果是获取字符串的长度就只得用length。
    heapstack:1、heap是堆,stack是栈;2、stack的空间由操作系统自动分配释放,heap的空间是手动申请释放的;3、stack空间有限,heap的空间是很大的自由
    jquery prop()attr():1、【attr()】方法设置或返回被选元素的属性值;2、【prop()】方法设置或返回被选元素的属性值。
    SpringBootSpringMVC:SpringBoot是一个全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,而SpringMVC是Spring框架内置的MVC的实现,
    Docker容器镜像的:镜像是由一层层只读层堆在一起组成的,而Docker容器是由镜像的只读层读写层组成的,两者的唯一是Docker容器的最上面的一层是可读可写的。
    vuereact本质的是模板组件化的;Vue本质是MVVM框架,由MVC发展而来,而React是前端组件化框架,由后端组件化发展而来。
    js中“==”“===”的是:1、“==”表示等同,“===”表示恒等;2、“==”只比较内容,“===”既比较内容也比较数据类型。