看了很多方案,使用伪元素的方案最合理,简单,容易理解
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>1px</title> <style> /* box-shadow方案 */ .box-shadow-1px { width:100px; height:100px; box-shadow: inset 0px -1px 1px -1px #c8c7cc; } .border-1px { position: relative; } @media screen and (-webkit-min-device-pixel-ratio: 2) { .border-1px:before { content: " "; position: absolute; left: 0; top: 0; width: 100%; height: 1px; border-top: 1px solid #D9D9D9; color: #D9D9D9; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); } } @media screen and (-webkit-min-device-pixel-ratio: 3) { .border-1px:before { content: " "; position: absolute; left: 0; top: 0; width: 100%; height: 1px; border-top: 1px solid #D9D9D9; color: #D9D9D9; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(0.333); transform: scaleY(0.333); } } </style> </head> <body> <!-- <div class="box-shadow-1px"> 1px border </div> --> <div class="border-1px"> 1px border 伪元素 </div> </body> </html>
主要原理是使用媒体查询,通过伪元素来实现,针对不同的设备 dpr ,进行不同比例的缩放,
例如 dpr 设备像素比=2,说明,1px = 2 个物理像素,所以需要缩小一倍
如果 dpr=3,则 1px=3个物理像素,所以需要同比缩小至 1/3
标签:origin,transform,细线,1px,scaleY,webkit,h5,border From: https://www.cnblogs.com/beileixinqing/p/16809775.html