📚前端面试题速记
Q8

移动端 1px 问题怎么解决?

速记答案(30 秒)

高分屏上 1px 会被设备像素比放大,看起来比设计稿粗。解决方法:transform: scaleY(0.5) 缩放伪元素边框、border: 0.5px(部分浏览器支持)、linear-gradient 或 box-shadow 模拟。

📖 详细讲解

标准面试回答(推荐记住)

移动端 1px 问题是因为高分屏的设备像素比大于 1,导致 CSS 的 1px 实际会渲染成 2px 或 3px 的物理像素,看起来比设计稿粗。常见解决方案有:第一种用伪元素画线,然后 transform: scaleY(0.5) 缩放;第二种直接写 border: 0.5px,但只有部分浏览器支持;第三种用 linear-gradient 或 box-shadow 模拟细线。最常用的是 transform 缩放方案。

1px 问题原因

设备像素比 (DPR) = 物理像素 / CSS 像素

  • iPhone 6/7/8: DPR = 2, 1px CSS = 2px 物理
  • iPhone X/11/12: DPR = 3, 1px CSS = 3px 物理

面试要点

  • 理解设备像素比 DPR
  • 掌握 transform 缩放方案
  • 知道四边框的实现技巧

💻 代码示例

transform 缩放方案
🎨 效果预览