浏览器如何处理高度和宽度的非整数值?

2024-03-23

当浏览器给出的元素的宽度和高度不是整数值时,它们如何处理它们?

尤其,

  • 非整数值在什么阶段进行四舍五入?它们是四舍五入到最接近的整数,还是截断它们?
  • 当容器的子元素具有非整数尺寸时,是否会出现子元素长度或高度之和不等于父元素的内部宽度/高度的情况?
  • 提供的非整数维度的处理方式是否与基于百分比的维度的非整数结果不同?
  • 填充和边距的非整数值怎么样?
  • Edit: Is是浏览器执行此舍入,还是操作系统?如果是操作系统,是否会造成浏览器“认为”项目大于其绘制区域的条件,并且这是否会导致父容器的大小调整问题?

断言

浏览器旨在处理浮点数和小于一像素的值。


去看一个简单的例子 http://jsfiddle.net/2hhdm/显示浏览器在计算中使用浮点数,创建一个 3% 宽度的项目,并在调整大小时在 Chrome 开发人员工具中查看其计算属性。

你应该看到这样的东西:

“35.296875”无法通过将一个像素映射到物理显示器(CRT、传统 LCD)中的一个像素的显示器来精确渲染。然而,较新的高密度显示器使用与 1-1 不同的比率,并且该分数值在概念上可用于提供更高的精度。

即使在低密度显示器上,小数值也可以提供提示亚像素渲染 http://en.wikipedia.org/wiki/Subpixel_rendering,它使用像素的红色、绿色和蓝色分量使对象的边缘看起来比整个像素值更平滑。

但确切地说what浏览器将如何处理这些数字是不太可预测的。您(目前)无法要求浏览器制作一个 31.5px 宽的框并期望获得一致甚至有意义的结果。有些浏览器会截断小数值;其他人向上/向下舍入。

子像素渲染通常用于文本,并且在大多数/所有浏览器中都能很好地工作,但每个浏览器的实现方式都不同,开发人员几乎无法影响其工作方式。

When

非整数值在继承中的哪个阶段进行四舍五入 链?

大多数/所有计算均以浮点数执行,任何舍入可能会在过程后期发生,甚至超出浏览器的控制范围。例如,浏览器可以将其抗锯齿功能委托给操作系统组件(例如IE9 对 Windows Direct2D 和 DirectWrite 的影响 http://blogs.msdn.com/b/ie/archive/2010/11/03/sub-pixel-fonts-in-ie9.aspx).

CSS 转换可以与操作系统和/或硬件加速紧密集成。这是另一种情况,我认为浮点值很可能被浏览器保留并传递到底层。

舍入行为/错误

当容器的子级具有非整数维度时,是否会出现 曾经有过这样的情况:孩子的长度或高度的总和不 等于父元素的内部宽度/高度?

我在旧版浏览器(IE7)中看到了这一点,这是百分比计算的结果,其中50% + 50% > 100%。通常,除非您尝试做更复杂的事情,否则这不是问题。有趣的是,当我尝试将 HTML 元素作为动画的一部分进行精确对齐时,我发现了“相差一个像素”的错误。

百分比与其他单位

提供的非整数维度的处理方式是否与 基于百分比的维度的非整数结果?

它们是四舍五入到最接近的整数,还是截断它们?

它有所不同。这个较旧的答案 https://stackoverflow.com/questions/4308989/are-the-decimal-places-in-a-css-width-respected声明它们被截断,但是(在 Chrome 24 中)我看到舍入(注意示例小提琴)。请注意我之前关于同一台计算机上 Chrome 和 Safari 之间差异的评论。

填充和边距的非整数值怎么样?

相同的规则(或缺乏规则)似乎也适用。

标准

我还没有找到在所有情况下如何处理浮点值的标准定义。这最接近的相关规格 http://www.whatwg.org/specs/web-apps/current-work/#pixel-manipulation我可以找到有关的讨论canvas pixels:

当指定的坐标不正确时像素舍入的处理 精确映射到设备坐标空间不是由此定义的 规范,但以下必须导致不可见 渲染更改:[...条件列表...]

再说一遍,这是专门讨论的部分canvas,但它确实暗示了:

  • 浏览器绝对与分数像素交互。
  • 实际实施情况会有所不同。
  • 确实存在一些标准化。
  • 映射到设备的显示屏可能会影响计算。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浏览器如何处理高度和宽度的非整数值? 的相关文章

  • 背景图像上的透明导航栏

    我试图找出让我的英雄 背景图像位于透明 Bootstrap 4 导航栏后面的最佳方法 一些建议是将背景图像应用到页面的 这是可行的 但我不希望应用程序内的所有其他静态页面上都有背景图像 只有登陆页面 Rails 应用程序 我尝试在导航栏和
  • 应用于整个 HTML 的 BODY 标签的背景颜色[重复]

    这个问题在这里已经有答案了 我对 html 中 body 标签的大小感到困惑 我有一个艰难的代码如下 body padding 0px height 100px background color e5e5e5 为什么背景覆盖整个页面 我认为
  • onMouseEnter 和 onMouseLeave 未按预期运行

    我正在尝试为我的组件模拟悬停效果 然而 onMouseEnter Leave 事件没有按预期工作 现在我试图让它简单地 console log 一个字符串来检查它是否正常工作 但什么也没有发生 目的是我可以在悬停时更改其背景颜色 我尝试通过
  • 滚动效果:先慢后快

    我正在尝试创建滚动效果 当onclick事件被触发 我想要那个div1滚动到dev2 一开始应该慢 然后快 这是一个使用此效果的网站 http community saucony com kinvara3 http community sa
  • 跨浏览器方法使子 div 适合其父级的宽度

    我正在寻找适合孩子的解决方案div进入它的父母width 我在这里看到的大多数解决方案不跨浏览器兼容 eg display table cell IE 不支持 lt 8 解决方案就是不声明width 100 默认为width auto 对于
  • FF 和 Webkit 中边框折叠的差异

    我有一个包含以下规则的表 table cellspacing 0 cellpadding 0 style width 100 并且单元格具有以下 CSS td padding 4px height 22px border 1px solid
  • 将自定义 CSS 添加到使用 Compass 生成的精灵中

    我有这个代码my images scss file icon layout smart icon sprite dimensions true import icon png include all icon sprites 输出是这样的
  • 谷歌浏览器不显示一个网站的alert()弹出窗口

    我正在开发一个 javascript 循环 该循环会随着循环的进行而提醒每个键值 为了加快速度 我选中了 阻止此页面创建其他对话框 框 通常这只会抑制一个例程的弹出窗口 但它们还没有回来 在 Google Chrome 中 alert 消息
  • 您最喜欢的 JS/CSS 下拉菜单是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 希望在网站上实现一个 只是好奇其他人都使用过什么以及他们有过什么样的体验 EDIT我也不是一个超级粉丝
  • 与 body 相比,将 css 规则应用于 html 有什么区别?

    我看不出以下之间的区别 html background f1f1f1 and body background f1f1f1 有什么解释吗 没有真正的区别 如果你只是谈论在哪里申请background 否则BoltClock 对另一个问题的回
  • HTML 链接在移动设备上不可点击,但在桌面设备上可点击

    我在使用移动网站顶部的两个按钮时遇到问题 www thefrienddentist ie 它们在桌面上可点击 但在移动设备上我没有得到任何响应 html 放置在 WP 主题的标题中 div style background color wh
  • 如何使用 jQuery 在按下按钮后保持按钮处于活动状态

    我见过一些非常相似的问题 但一直无法找到我正在寻找的答案 我已经确定了解决方法 但想知道执行该任务的正确方法 我想要的是单击按钮并使活动状态保持不变 下一次单击将切换状态 这是所需的 我真正需要知道的是如何解决 uiButton activ
  • 如何在 HTML 表格上使用分页?

    我正在尝试使用这个分页library http flaviusmatis github io simplePagination js 在我的 HTML 表格页面 特别是浅色主题 中 但不知何故 我无法理解如何在我的 HTML 页面中以这种方
  • Swift - 将图像插入 PDF 不再适用于 iOS 13

    目前正在开发在我的贷款计算器应用程序上导出 PDF 的功能 我有一个预览屏幕 可以在您保存 PDF 之前显示它 预览屏幕由带有 html 的 webView 组成 其中包含占位符 我能够成功地将图像插入到正确的占位符上 并将其显示在 PDF
  • @font-face 字体在 Mac 的 Safari 和 Chrome 中显示模糊

    I m using two special fonts on my website for headings and subtitles They are working fine on a PC in IE Firefox and Chr
  • 如何更改元素的 CSS 类并在单击时删除所有其他类

    我如何处理 AngularJS 2 中的一种情况 即单击一个元素需要更改其自己的样式 并且如果其他元素具有该样式 则需要将其删除 最好在一个函数中 如同Angular js 如何在单击时更改元素 css 类并删除所有其他元素 https s
  • 如何在不设置动画的情况下突然更改 CSS 动画中的属性

    这是我试图弄清楚的 但没有使用 51 关键帧作为实现更改的黑客方法transform origin 这里有一个小提琴演示 http jsfiddle net p7pswnpq keyframes spin 0 transform origi
  • CSS:理解和调整字体的行距/行高

    有人问了一个非常相似的问题here https stackoverflow com questions 13701110 css remove line height leading on larger text但确实回答得足够了 CSS
  • 浏览器显示“已阻止摄像头以保护您的隐私”

    浏览器说 阻止摄像头以保护您的隐私 我的项目包括使用用户摄像头 当我从本地主机访问应用程序时 摄像头工作正常 但是当通过 IP 地址访问时 浏览器默认阻止摄像头和其他资源 我如何允许它们用于我的应用程序 我的应用程序适用于将使用 IP 地址
  • 将下拉按钮和下拉菜单放在中心?

    div class dropup center block div

随机推荐