在移动端中,宽度100%,1px的线看起来要比pc端中宽度100%,1px的线粗,
那是因为css中的1px并不等于移动设备(物理像素)的1px。物理像素显示是1个像素代表2个像素,所以出现为2px
所以我们在移动端中为了让1px的线“看起来”苗条些,会采用一些手段。
解决办法
实现1px的线
方法一:transform
在移动端中,我们对宽度100%,1px的线进行改造,将其宽度设为200%,高度不变,之后使用transform对其缩放50%。
.line{ width:200% ; height:1px ; transform:scale(.5) ; -ms-transform:scale(.5) ; -o-transform:scale(.5) ; -webkit-transform:scale(.5) ; -moz-transform:scale(.5) ; transform-origin:top left ; }
这样苗条的线就出现了!
实现1px的边框
方法一:伪类 + transform
原始border:去掉border,设置相对定位
新border:设置 :before 或者 :after 重做 border ,并使用 transform 的 scale 缩小一半,设置绝对定位
.scale-1px{ position: relative; width:100px; height:100px; border:none; } .scale-1px:after{ content: ''; position: absolute; top: 0; left: 0; border: 1px solid #000; -webkit-box-sizing: border-box; box-sizing: border-box; width: 200%; height: 200%; -webkit-transform: scale(0.5); transform: scale(0.5); -webkit-transform-origin: left top; transform-origin: left top;}
优点:
所有场景都能满足
支持圆角(伪类和本体类都需要加border-radius)
缺点:
对于已经使用伪类的元素(例如clearfix),可能需要多层嵌套
方法二:-webkit-min-device-pixel-ratio + 媒体查询
media query对应devicePixelRatio有个查询值-webkit-min-device-pixel-ratio, css可以写成这样 .border { border: 1px solid #999 } @media screen and (-webkit-min-device-pixel-ratio: 2) { .border { border: 0.5px solid #999 } } @media screen and (-webkit-min-device-pixel-ratio: 3) { .border { border: 0.333333px solid #999 } }
缺点:
安卓与低版本IOS不适用
实现边框宽度为1px,宽高各为父元素
方法一:伪类 + transform
.box1 { position: relative; border: none; height: 100px; width: 100px; text-align: center; } .box1 div::after { content: ''; border:solid 1px aqua; position: absolute; left: -50%; top: -50%; bottom: -50%; right: -50%; -webkit-transform: scale(.5); transform: scale(.5); box-sizing: border-box; }
<div class="box1"> <div></div> </div>
以上就是移动端如何实现1px细线的方法的详细内容,更多关于移动端如何实现1px细线的方法的资料请关注九品源码其它相关文章!