CSS 中的 1 像素问题指的是在⾼分辨率屏幕上显示的 1 像素边框或者细线在实际显示时会⽐ 1 个物理像素更宽或更粗,从⽽导致边框或者细线看上去⽐预期的更粗或者更宽。
造成这个问题的原因是由于⾼分辨率屏幕的像素密度⽐传统的屏幕要⾼,所以在屏幕上显示的⼀个 CSS 像素对应的物理像素个数也会相应地增多,当使⽤ CSS 中的 1px 来设置边框或者细线时,实际上渲染出来的线条在屏幕上会被拆分为多个物理像素,从⽽导致看上去更粗。
.border { position: relative; border: 1px solid #000; } .border:after { content: ""; position: absolute; top: -1px; left: -1px; right: -1px; bottom: -1px; border: 1px solid #000; transform: scale(0.5); } .border { border: 1px solid transparent; border-image: url(border.png) 1 1 stretch; } .border { box-shadow: 0 0 0 1px #000; } 使⽤ viewport,在 head 中添加如下代码可以解决 1px 问题: