getBoundingClientRect().width 和 height 是否包括元素的填充和边框?

2024-02-29

Does getBoundingClientRect().width and height属性,同时返回值包括元素的填充和边框?


TLDR;

它将始终返回尺寸边框框(下面的绿色框),其中包含内容区, 填充区域 and 边区,如定义在CSS 盒子模型 https://drafts.csswg.org/css2/#box-model.

宽度样式

然而,决不能混为一谈内容宽度(元素布局的属性)和样式宽度(对元素布局的约束,width: xxx;规则),这是非常不同的事情。这box-sizing只会影响是否样式宽度约束应包括border and padding, 或不。

举例说明

在第一个片段中,我们使用box-sizing: border-box规则使得样式宽度 == 边框 + 内边距 + 内容宽度。的结果getBoundingClientRect().width is 140,它等于样式宽度.

var x = document.getElementById("x");
console.log('getBoundingClientRect().width =', x.getBoundingClientRect().width);
console.log('getComputedStyle(x).width =', getComputedStyle(x).width);
#x {
  border: 20px solid blue;
  padding: 10px;
  width: 140px;
  box-sizing: border-box;
}
<div id=x>Border Box</div>

在第二个片段中,我们使用box-sizing: content-box规则使得样式宽度==内容宽度。的结果getBoundingClientRect().width还是140 因为总和 of border + padding + 内容宽度 没有改变, only 样式宽度已经改变。

var y = document.getElementById("y");
console.log('y.getBoundingClientRect().width =', y.getBoundingClientRect().width);
console.log('getComputedStyle(y).width =', getComputedStyle(y).width);
#y {
  border: 20px solid blue;
  padding: 10px;
  width: 80px;
  box-sizing: content-box;
}
<div id=y>Content Box</div>

参考

  • MDN | CSS盒子模型简介 https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model
  • CSSWG | CSS2(盒子模型) https://drafts.csswg.org/css2/#box-model
  • MDN | Element.getBoundingClientRect() https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

getBoundingClientRect().width 和 height 是否包括元素的填充和边框? 的相关文章

  • 在 Three.js 中绕点旋转对象的正确方法是什么?

    关于 Three js 的大多数教程 问题都建议使用 Three js 绕点旋转对象的方法是在要旋转的位置创建父对象 附加对象 然后移动子对象 然后 当父级旋转时 子级围绕该点旋转 例如 Make a pivot var pivot new
  • Jquery 悬停卡

    我在用着http designwithpc com Plugins Hovercard http designwithpc com Plugins Hovercard 但我不知道如何在悬停卡上声明 var 每个工作描述都有自己的 ID 当悬
  • JavaScript 添加布尔值

    console log true true 2 console log typeof true true number console log isNaN true true false 为什么两个布尔类型相加会产生一个数字 我有点理解 如
  • 从函数返回函数的目的是什么?

    阅读一些遗留代码 发现 A prototype setSize function var v1 new Vector2 return function size var halfSize v1 copy size multiplyScala
  • 位置特征检测:固定

    我正在尝试找到一个脚本来检测设备是否放置position fixed元素相对于视口而不是整个文档 目前 标准桌面浏览器和 Mobile Safari 适用于 iOS 5 都是这样做的 而 Android 设备则相对于整个文档放置固定元素 我
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 如何在网站上使用 svg 元素制作块的屏幕截图?

    我在网站上创建了一个构造函数 其本质是将所选元素及其颜色 svg中的元素 添加到访问者选择的背景和背景颜色 png中的背景 中 然后必须单击 保存 结果 按钮并仅执行工作区的屏幕截图 我写了这个脚本 但它需要屏幕截图 但只有背景 并忽略选定
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 为什么 setTimeout 在 Chrome 中触发两次,而在 IE 或 Firefox 中则不然?

    有人能告诉我为什么 javascript 函数 生成新号码 在 Chrome 中触发两次 但在 IE 或 Firefox 中则不会 使用 Chrome 20 0 1132 57 IE9 和 Firefox 13
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • $resource.query 返回分割字符串(字符数组)而不是字符串

    我正在使用像下面这样的 Angular resource angular module app factory data function resource var Con resource api data update method P
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供

随机推荐

  • jsTree 节点展开/折叠

    今天早上我遇到了优秀的 jstree jQuery UI 插件 一句话 太棒了 它易于使用 易于设计并且符合包装盒上的说明 我尚未弄清楚的一件事是 在我的应用程序中 我想确保在任何给定时间仅扩展一个节点 即 当用户单击 按钮并展开节点时 任
  • PyQt4 使用 __init__ 的不同方式

    所以 我正在尝试使用 PyQt4 从基本的 Python 转向一些 GUI 编程 我正在看几本不同的书籍和教程 它们似乎都有稍微不同的启动类定义的方式 一个教程是这样开始课程的 class Example QtGui QDialog def
  • 当简单捕获中的标识符显示为参数的声明符 id 时,没有编译器诊断

    关于 lambda 捕获的部分 expr prim lambda capture 5 http eel is c draft expr prim lambda capture 5 指出 如果 simple capture 中的标识符作为 l
  • 如何将结构数组传递给 C++ 中的函数

    我需要将结构数组传递给函数 我这样做 这是我的职责 void ShowRoutes Route routeList int n string title 这是函数调用 ShowRoutes routeList n Unsorted list
  • 如何在 Javascript 中循环键/值对象? [复制]

    这个问题在这里已经有答案了 var user 现在我想创建一个setUsers 方法接受一个键 值对对象并初始化user多变的 setUsers function data loop and init user 其中数据如下 234 joh
  • CTE 和 TEMP 表之间的主要区别是什么?

    使用有好处吗CTE s common table expressions 而不是使用temp tables 我对它们进行了性能测试 但我找不到它们之间有多大区别 使用有哪些优点和缺点CTE S CTE 和临时表之间最大的区别可能是 CTE
  • 按值设置选择选项“选定”

    我有一个select字段中包含一些选项 现在我需要选择其中之一options使用 jQuery 但是当我只知道value of the option必须选择那个 我有以下 HTML div class id 100 div
  • 安装 DBD::Oracle 时出错

    我正在尝试在我的 RHEL6 1 服务器上安装 Perl 模块 DBD Oracle 在此过程中 我遵循了以下步骤 安装以下 RPM oracle instantclient12 1 basic 12 1 0 2 0 1 x86 64 rp
  • Xcode 构建设置“构建产品路径”(CONFIGURATION_BUILD_DIR)是一个谎言?

    如果我创建一个新的应用程序项目 构建设置如下所示 它声称正在使用构建目录build Debug iphoneos 我认为这是相对于项目目录的 实际上 该项目被编译到 派生数据 目录下 Library Developer Xcode Deri
  • Rails:使用 Authlogic 进行授权

    我需要一个非常精细的授权系统 可以与真实逻辑 http github com binarylogic authlogic tree master 到目前为止我已经尝试过这些宝石 插件 Lockdown http stonean com wi
  • 在 Chef 中使用属性

    刚刚开始使用chef最近 我发现属性存储在一个名为的大型整体哈希中node可在您的食谱和模板中使用 似乎有多种定义属性的方法 直接在食谱本身中 在属性文件下 例如attributes default rb 在传递给的 JSON 对象中che
  • 将多行合并为具有多列的不同行的查询

    我不认为自己是一个完整的 SQL 新手 但我已经断断续续地盯着这个问题两天了 我开始想也许我就是 使用以下两个表 ID Category 1 Animal 2 Color 3 Sport Name ID Value Fred 1 Cat F
  • iOS 8 上的 MPVolumeView 动画

    iOS 8 中存在一个问题或一个功能 当 MPVolumeView 显示时 它会被动画化 就像从 0 扩展到它的宽度一样 我该如何纠正这种行为 iOS 7 上没有这个问题 消除此行为的一种可能方法是子类化 MPVolumeView 并在之后
  • Svelte商店功能更新

    Svelte 存储文档显示正在更新字符串或整数 但我没有在存储中找到任何动态函数 我不明白如何制作getData作为可写函数以通知 html 发生的变化 在下面的示例中 我想b后显示updateKey函数被调用 您将在此处找到 REPL 中
  • 将 OpenSSL 与自定义通道结合使用

    我 在 CPP 中 开发了一种基于 HTTP 的独特协议 并使用它与我的服务器进行通信 现在 我想通过我的专有协议建立 SSL 连接来传输数据本身 我可以使用 OpenSSL 来实现吗 我在网上搜索了所有与 BIO 相关的内容 但我不明白如
  • Objective C 中从 id 到 class 的动态类型转换

    我想在 Objective C 中动态转换并访问实例属性 这里有一个伪代码 id obj if condition1 obj Class1 fetchedResults objectAtIndex indexPath row else ob
  • Mocha 在测试中保留文件状态

    我有一个单元测试正在测试配置文件的更新 当然 在运行测试后 我的文件现在被更改了 我想我可以使用 之前 来缓存文件并在 之后 恢复它 mod require modtotest describe Device Configuration f
  • 在线时未呈现 Google+ 登录按钮

    我正在为我的新手机游戏开发一个社区网站 并尝试向其中添加 google plus 登录流程 实施过程中采取的步骤 gt 已关注this https developers google com web signin add button谷歌开
  • 检测HTML元素是否包含特定字符实体

    如果我有这样的标记 div xf067 div 我想稍后检测 div foo 是否仍然包含相同的字符实体 我希望能够通过将其与 xf067 而不是为了 在我的代码库中 出于维护目的 这相当迟钝 我尝试过这样的事情 使用 jQuery con
  • getBoundingClientRect().width 和 height 是否包括元素的填充和边框?

    Does getBoundingClientRect width and height属性 同时返回值包括元素的填充和边框 TLDR 它将始终返回尺寸边框框 下面的绿色框 其中包含内容区 填充区域 and 边区 如定义在CSS 盒子模型 h