前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10.8 如何用js验证一下boz-sizing样式对块级盒子大小的影响?

10.8 如何用js验证一下boz-sizing样式对块级盒子大小的影响?

作者头像
LIYI
发布2020-10-26 15:49:44
9260
发布2020-10-26 15:49:44
举报
文章被收录于专栏:艺述论专栏艺述论专栏

如何用js验证一下boz-sizing样式对块级盒子大小的影响?

可以用getClientRects方法,获取元素的边界矩形的矩形集合。

代码语言:javascript
复制
document.querySelector("#medium").getClientRects()[0].width
document.querySelector("#thick").getClientRects()[0].width

使用getBoundingClientRect验证

返回值是一个 DOMRect 对象,这个对象是由该元素的 getClientRects() 方法返回的一组矩形的集合,就是该元素的 CSS 边框大小 。

1,如果是标准盒子模型,如果box-sizing: content-box,元素的尺寸等于width/height + padding + border-width的总和。

2,如果box-sizing: border-box,元素的的尺寸等于 width/height。

返回接口与上面的方法是一样的。

另外,使用clientWidth查看内部宽度

Element.clientWidth 属性表示元素的内部宽度,以像素计。该属性包括内边距 padding,但不包括边框 border、外边距 margin 和垂直滚动条(如果有的话)。

代码:

代码语言:javascript
复制
    <h1>关于getBoundingClientRect验证示例1</h1>
    <div id="x">Border Box</div>
    <script>
        var x = document.querySelector("#x");
        console.log('getBoundingClientRect().width =', x.getBoundingClientRect().width);
        console.log('getComputedStyle(x).width =', getComputedStyle(x).width);
</script>
    <style>
        #x {
            border: 20px solid blue;
            padding: 10px;
            width: 140px;
            box-sizing: border-box;
        }
</style>
    <h1>关于getBoundingClientRect验证示例2</h1>
    <div id="x1">Border Box1</div>
    <script>
        var x1 = document.querySelector("#x1");
        console.log('getBoundingClientRect().width =', x1.getBoundingClientRect().width);
        console.log('getComputedStyle(x1).width =', getComputedStyle(x1).width);
</script>
    <style>
        #x1 {
            border: 20px solid blue;
            padding: 10px;
            width: 80px;
            box-sizing: content-box;
        }
    </style

输出:

虽然样式里宽度不同,但是输出的getBoundingClientRect().width相同。

当我们将width样式改为相同的值以后,输出便不同了。效果:

9月29日


【关于作者】

李艺,笔名“石桥码农,腾讯云最具价值专家(TVP),腾讯课堂启明星俱乐部成员,日行一课联合创始人兼 CTO,前 VIPKID 资深技术专家。国内早期闪客之一,具有 15 年以上互联网软件研发经验。

参与研发的音视频直播产品曾在腾讯 QQ 上线,为数千万人使用。从 0 到 1 创建课件标准,被团队誉为课件之父,官方评定为 Adobe 中国 15 位社区管理员之一。著有《小程序从0到1:微信全栈工程师一本通》等计算机图书,是极客时间视频畅销课《微信小程序全栈开发实战》的作者,知乎 Live 讲师,在行互联网技术专家。欢迎到“在行”找我一对一约聊。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 艺述论 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何用js验证一下boz-sizing样式对块级盒子大小的影响?
    • 使用getBoundingClientRect验证
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档