vh 单元行为不一致

jcu*_*nod 5 css viewport-units

我有一个伪元素,悬停时出现:

height: 0.4vh;
Run Code Online (Sandbox Code Playgroud)

高度不会改变,只有宽度会改变。然而,由于某种原因,在某些条件下,不同伪元素的高度不同(这里的两条深色线都有height: 0.4vh):

vh单位怪异

我举起这个小提琴来演示,但意识到这种奇怪现象是否发生取决于视口高度: https: //jsfiddle.net/vuw693La/

我在 Chromium 和 Firefox 上遇到这个问题。我是否做错了什么,或者没有办法使vh单位达到“像素完美”?

jac*_*ack 4

浏览器渲染存在一些不精确性,尤其是当百分比或视口单位发挥作用时。在这种情况下,我会考虑将这些线的高度与视口联系起来是否真的值得。对于大多数屏幕尺寸来说,它似乎仅限于几个像素的差异;也许可以为其设置一个大小,或者在几个断点处设置静态大小以逐渐放大它。

.icon_piece::after { height: 1px; }

// tweak breakpoints to whatever works best for your design
@media (min-height: 600px) { 
  icon_piece::after { height: 2px; } 
}

@media (min-height: 900px) {
  icon_piece::after { height: 3px; }
}
Run Code Online (Sandbox Code Playgroud)

  • 对我来说很奇怪的是,当所有块的选择器都相同时,应该会出现不精确的情况。当然浏览器应该只计算一次单位(然后在视口发生变化时重新计算)? (2认同)