移动端 1px 问题的解决办法
在 dpr=2(Retina 屏)或 dpr=3 的设备上,border: 1px solid 实际会占 2~3 个物理像素,看起来比设计稿"粗"一倍。推荐解决方法:媒体查询 + transform。
/* 2 倍屏 */
@media only screen and (-webkit-min-device-pixel-ratio: 2.0) {
.border-bottom::after {
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
}
/* 3 倍屏 */
@media only screen and (-webkit-min-device-pixel-ratio: 3.0) {
.border-bottom::after {
-webkit-transform: scaleY(0.33);
transform: scaleY(0.33);
}
}
补充:常见解决方案对比:
- 媒体查询 + transform:兼容性最好(iOS 8+、Android 4.4+),推荐。
border-image:维护成本略高,需要切一张 1px 渐变图。box-shadow模拟边框:box-shadow: 0 1px 1px -1px rgba(0,0,0,0.5),不会触发回流,但点击事件需要额外处理。- viewport 缩放:
initial-scale: 1/dpr,会影响所有元素的尺寸,不推荐单独用于解决 1px。



