移动端如何实现1px细线的方法

前端开发   发布日期:2023年05月22日   浏览次数:411

在移动端中,宽度100%,1px的线看起来要比pc端中宽度100%,1px的线粗,

那是因为css中的1px并不等于移动设备(物理像素)的1px。物理像素显示是1个像素代表2个像素,所以出现为2px

所以我们在移动端中为了让1px的线“看起来”苗条些,会采用一些手段。

解决办法

实现1px的线

方法一:transform

在移动端中,我们对宽度100%,1px的线进行改造,将其宽度设为200%,高度不变,之后使用transform对其缩放50%。

  1. .line{
  2. width:200% ;
  3. height:1px ;
  4. transform:scale(.5) ;
  5. -ms-transform:scale(.5) ;
  6. -o-transform:scale(.5) ;
  7. -webkit-transform:scale(.5) ;
  8. -moz-transform:scale(.5) ;
  9. transform-origin:top left ;
  10. }

这样苗条的线就出现了!

实现1px的边框

方法一:伪类 + transform

原始border:去掉border,设置相对定位

新border:设置 :before 或者 :after 重做 border ,并使用 transform 的 scale 缩小一半,设置绝对定位

  1. .scale-1px{
  2.   position: relative;
  3.   width:100px;
  4.   height:100px;
  5.   border:none;
  6. }
  7. .scale-1px:after{
  8.   content: '';
  9.   position: absolute;
  10.   top: 0;
  11.   left: 0;
  12.   border: 1px solid #000;
  13.   -webkit-box-sizing: border-box;
  14.   box-sizing: border-box;
  15.   width: 200%;
  16.   height: 200%;
  17.   -webkit-transform: scale(0.5);
  18.   transform: scale(0.5);
  19.   -webkit-transform-origin: left top;
  20.   transform-origin: left top;}

优点:

所有场景都能满足

支持圆角(伪类和本体类都需要加border-radius)

缺点:

对于已经使用伪类的元素(例如clearfix),可能需要多层嵌套

方法二:-webkit-min-device-pixel-ratio + 媒体查询

  1. media query对应devicePixelRatio有个查询值-webkit-min-device-pixel-ratio, css可以写成这样
  2. .border { border: 1px solid #999 }
  3. @media screen and (-webkit-min-device-pixel-ratio: 2) {
  4. .border { border: 0.5px solid #999 }
  5. }
  6. @media screen and (-webkit-min-device-pixel-ratio: 3) {
  7. .border { border: 0.333333px solid #999 }
  8. }

缺点:

安卓与低版本IOS不适用

实现边框宽度为1px,宽高各为父元素

方法一:伪类 + transform

  1. .box1 {
  2. position: relative;
  3. border: none;
  4. height: 100px;
  5. width: 100px;
  6. text-align: center;
  7. }
  8. .box1 div::after {
  9. content: '';
  10. border:solid 1px aqua;
  11. position: absolute;
  12. left: -50%;
  13. top: -50%;
  14. bottom: -50%;
  15. right: -50%;
  16. -webkit-transform: scale(.5);
  17. transform: scale(.5);
  18. box-sizing: border-box;
  19. }
  1. <div class="box1">
  2. <div></div>
  3. </div>


以上就是移动端如何实现1px细线的方法的详细内容,更多关于移动端如何实现1px细线的方法的资料请关注九品源码其它相关文章!