必须显式声明border三要素并适配dpr:用border: 1px solid #333替代简写,高DPI屏用@media(-webkit-min-device-pixel-ratio:2){.line{border-width:.5px}}或伪元素scale(0.5),table需加border-collapse:collapse,避免outline。
border-style: solid 在不同浏览器渲染差异怎么处理
HTML5 本身不定义边框样式,实线边框靠 CSS 的 border-style: solid 实现,但老版本 Safari、IE11 或某些 Android WebView 对 border 缩写解析不一致,尤其在 border: 1px solid #000 中省略单位或颜色时容易失效或回退为默认灰色。
- 必须显式声明三要素:宽度、样式、颜色,例如
border: 1px solid #333,不能只写border: solid或border: 1px - 避免使用
border: initial或border: unset,它们在 IE 和部分旧版 Chrome 下不生效 - 若需兼容 iOS 12 及更早系统,建议用分开写法:
border-width: 1px; border-style: solid; border-color: #333,减少解析歧义
移动端高清屏(dpr > 1)下 1px 边框变粗怎么办
在 iPhone 或高 DPI 安卓设备上,CSS 的 1px 实际渲染为 2 物理像素,导致“实线”看起来比预期粗、发虚。这不是 HTML5 问题,而是 CSS 像素与设备像素比(dpr)错配所致。
- 用
transform: scaleY(0.5)配合transform-origin: top压缩单侧边框(仅适用于底部/顶部边框) - 更稳妥的做法是媒体查询 + dpr 检测:
@media (-webkit-min-device-pixel-ratio: 2) { .line { border-width: 0.5px; } },但注意 Firefox 不支持0.5px,需 fallback - 实际项目中推荐使用伪元素 +
transform: scale(0.5)方案,兼容性好且可控性强
border-collapse: collapse 对 table 实线边框的干扰
表格内设置 border: 1px solid #ccc 后,发现边框重复叠加、变粗或出现缝隙——大概率是没处理 table 的边框合并逻辑。