【发布时间】:2016-10-29 19:18:15
【问题描述】:
我有一个在悬停时出现的伪元素:
height: 0.4vh;
高度不会改变,只有宽度会改变。然而,出于某种原因,在某些条件下,不同伪元素的高度不同(这里的两条较暗的线都有height: 0.4vh):
我举起这个小提琴来演示,但意识到这取决于视口高度是否会发生这种奇怪现象: https://jsfiddle.net/vuw693La/
我在 Chromium 和 Firefox 上遇到了这个问题。是我做错了什么,还是无法使用vh 单位实现“像素完美”?
【问题讨论】:
-
自然舍入将以一种或另一种方式涉及,除非视口高度可以相应地完美划分为您使用的值。这也可能导致在不同地方对“相同”元素的不同渲染,因为所有分数的总和不一定等于 100%,所以在一个地方或另一个地方“有些东西必须给出”。 @jack 的回答是最好和最实用的解决方案恕我直言。
-
@CBroe 我明白你关于四舍五入的观点,谢谢。我会认为
calc(100vh * 0.004)在这种情况下会给我一个稳定的身高,但没有这样的运气。 -
calc(100vh * 0.004)仍然只能与100vh实际上 的内容一起使用。取一个任意 767 像素的视口高度,然后乘以 0.004 仍然会给您 3.068“像素”的结果。现在,将亚像素渲染作为大多数时候适度足够的对策放在一边,如果我们只使用“整个”像素,那么出现在多个位置的像素的 0.068 部分仍然必须去某个地方。在 X 位置将其四舍五入到 3 像素,至少会留下 1 个位置而不是大多数时间必须是 4 个位置(很简单,但我想你会明白我的意思。) -
@CBroe 我明白了,所以我明白为什么与相对单位不一致的舍入是有用的,我只是认为渲染引擎会使用 calc 函数一致地舍入。
-
我的意思是,在某些情况下它不一定能做到这一点。这不是因为它“有用”,而是因为它是数学上的必要性。
标签: css viewport-units