CSS:Em舍入错误

最近,我重写了我正在制作的网站的CSS文件,并尝试使用em而不是px使大多数元素和字体的大小动态.尺寸工作..有点,但至少有一个问题.

当使用em单位作为框的边距(边距:0.25em)时,在Firefox中,我在顶部/左边获得4px,在右边/底部获得3px – 基于14px字体大小(实际上是框的字体 – 浏览器16px的大小0.875em).

现在,我是新手,很有可能我误解了几件事但是使用了我的理解,我认为0.25p的14px是3.5px.如果是这种情况,并且舍入是边距中4或3像素的原因,这真的是它应该如何工作吗?具有舍入结果的某个计算应该每次完全相同,不是吗?此外,在Internet Explorer中,它恰恰相反:顶部/左侧是3px,右侧/底部是4px.我尝试将值更改为0.286em(x 14px – > 4.004px)以避免最终达到正好半个像素并且这在Firefox中为4/4/4/4,在IE中为4/3/4/3.

除了这些像素错误之外,更改浏览器字体大小实际上非常好地扩展了所有内容.

我疯了,我误解了什么,浏览器都破了还是……什么? (使用IE8和FF3和19.)

解决方法

不一致的舍入=平滑缩放

浏览器有时会向上舍入某个值并在其他时间向下舍入相同的值,以便整个舍入操作均匀.

最好的例子是缩放页面.页面通常在移动设备上缩放,但如果用户手动缩放页面,也可以在桌面浏览器上缩放.缩放页面时,以前为整数的px值现在是浮点值.同样,用于转换为px中的整数值的em或%值现在转换为浮点值.

为了使浏览器能够根据屏幕像素绘制元素的大小或位置,它必须将每个值四舍五入为整数.如果整体均匀化,则四舍五入才有效.

假设您有3个浮动div,每个100px,组合宽度为300px.该页面在移动设备上缩放为通常大小的2/3.缩放div的组合宽度应为200px.

如果每个缩放div的(大致)66.7px被向上舍入,则每个将为67px,这相当于201px(1太多).如果每个div向下舍入,则每个div为66px,最多为198px(2太少).如果舍入不一致(将其中两个向上舍入,将另一个向下舍入),则将大小加到200px的唯一方法是.

当缩放应用于具有位置和大小值的绝对定位元素时,或者应用于具有从子画面文件获取的背景图像的元素时,缩放元素的舍入中的任何不均匀性都是非常明显的.

浏览器支持

我最后一次检查时,Firefox是唯一能够有效扩展页面的浏览器,以正确的方式平衡舍入值.其他浏览器可能会做一些这样的事情(希望它会越来越好),但过去做得不好.

这种方法 – 对于页面缩放非常有效 – 可能与您遇到的行为类型相同,但乍看之下可能并不明显为什么会发生这种情况.

相关文章

Css3如何实现鼠标移上变长特效?(图文+视频)
css3怎么实现鼠标悬停图片时缓慢变大效果?(图文+视频)
jquery如何实现点击网页回到顶部效果?(图文+视频)
css3边框阴影效果怎么做?(图文+视频)
css怎么实现圆角边框和圆形效果?(图文+视频教程)
Css3如何实现旋转移动动画特效