移动端1px 边框完整方案(四个方向)

使用stylus(预处理)

需要一个函数接收两个参数 第一个需要在哪个方向出现边框 第二个边框颜色

$border1px(face,$color)

根据传入的方向属性,调整其他参数

l  左右方向

t  垂直方向

w 上下出现边框则为width反之为height(边框在方向上的长度)

b 上出现边框则为bottom

x 为哪个方向上的缩放

具体对应关系如下

  face==top    && (l=left  t=top b=bottom w=width  x=scaleY)
  face==bottom && (l=left  b=top t=bottom w=width  x=scaleY)
  face==left   && (l=left  t=top b=right  w=height x=scaleX)
  face==right  && (l=right t=top b=left   w=height x=scaleX)

下面是边框

  .border-1px {
    position relative
  }
  .border-1px::after {
    display block
    position absolute
    {l} 0
    {t} 0
    {w} 100%
    border-{b} 1px solid $color
    content ‘ ‘
  }

媒体查询

这里需要使用字符串拼接 写成x(0.7)  x将不会赋值

  @media (-webkit-min-device-pixel-ratio 1.5),(min-device-pixel-ratio1.5) {
    .border-1px::after {
      -webkit-transform x+‘(0.7)‘
      transform x+‘(0.7)‘
    }
  }
  @media (-webkit-min-device-pixel-ratio 2),(min-device-pixel-ratio 2) {
    .border-1px::after {
      -webkit-transform x+‘(0.5)‘
      transform x+‘(0.5)‘
    }
  }

html

  <div class="product">
    <div class="border-1px">
      <p>111</p>
      <p>111</p>
      <p>111</p>
      <p>111</p>
    </div>
  </div>

css

<style scoped lang="stylus">
@import ‘../common/css/index‘
.product
  $border1px(top,red)
  border-bottom 1px solid red
</style>

效果图

完整代码

 1 $border1px(face,$color)
 2   face==top    && (l=left  t=top b=bottom w=width  x=scaleY)
 3   face==bottom && (l=left  b=top t=bottom w=width  x=scaleY)
 4   face==left   && (l=left  t=top b=right  w=height x=scaleX)
 5   face==right  && (l=right t=top b=left   w=height x=scaleX)
 6   .border-1px {
 7     position relative
 8   }
 9   .border-1px::after {
10     display block
11     position absolute
12     {l} 0
13     {t} 0
14     {w} 100%
15     border-{b} 1px solid $color
16     content ‘ ‘
17   }
18   @media (-webkit-min-device-pixel-ratio 1.5),(min-device-pixel-ratio1.5) {
19     .border-1px::after {
20       -webkit-transform x(0.7)
21       transform x+‘(0.7)‘
22     }
23   }
24   @media (-webkit-min-device-pixel-ratio 2),(min-device-pixel-ratio 2) {
25     .border-1px::after {
26       -webkit-transform x+‘(0.5)‘
27       transform x+‘(0.5)‘
28     }
29   }
时间: 2024-08-26 10:44:34

移动端1px 边框完整方案(四个方向)的相关文章

移动端 1px边框 问题

https://segmentfault.com/a/1190000015736900 https://blog.csdn.net/yexudengzhidao/article/details/98480173 本文介绍了解决移动端1px边框问题的5种方法.当然了,在这之前先整理了与这些方法相关的知识:物理像素.设备独立像素.设备像素比和viewport. 物理像素.设备独立像素和设备像素比 在CSS中我们一般使用px作为单位,需要注意的是,CSS样式里面的px和物理像素并不是相等的.CSS中的

解决CSS移动端1px边框问题

移动项目开发中,安卓或者IOS等高分辨率屏幕会把1px的border渲染成2px来显示,网上搜了一下,解决方法如下: 一.利用css中的transform的缩放属性解决,推荐这个.如下面代码. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>解决1px边框问题</title> <meta name="viewport"

解决移动端1px边框问题的几种方法

1.边框粗细原因 在移动端下设置border为1px,在某些设备上看比1px粗. 这些由于不同的手机有不同的像素密度.在window对象中有一个devicePixelRatio属性,他可以反应css中的像素与设备的像素比. devicePixelRatio的官方的定义为:设备物理像素和设备独立像素的比例,也就是 devicePixelRatio = 物理像素 / 独立像素. 2.解决办法 a.使用border-image实现 根据需求选择图片,然后根据css的border-image属性设置.代

用伪元素写移动端1px边框时想实现边角效果

做移动端页面时,又想用伪元素做真实1像素边框,又想有边角时,会发现只加一个border-radius时出来的效果边款并没有变成圆角,解决办法是加两个border-radius <div class="white_wrap border b_all"> </div> .white_wrap{margin:1.5rem 1.5rem 0 1.5rem;background-color:#fff;border-radius:6px;} .border{ positio

移动端1px边框的两种解决方案

方案一:scss 方案二:stylus 原文地址:https://www.cnblogs.com/jsjx-xtfh/p/9902585.html

7种方法解决移动端Retina屏幕1px边框问题

在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样.没有办法,只有在后面的版本中去修改了,但是要改的话,需要知道是为什么.所以查了很多资料,终于搞懂了这个问题,并且总结了几种方法. 造成边框变粗的原因 其实这个原因很简单,因为css中的1px并不等于移动设备的1px,这些由于不同的手机有不同的像素密度.在window对象中有一个devicePixe

移动端视网膜(Retina)屏幕下1px边框线 解决方案

原因: 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在devicePixelRatio=2的retina屏下会显示成2px. 但在IOS8中,已经支持0.5px了,那就意味着, 在devicePixelRatio=2的时候,我们可以使用如下的css: div{ border:1px solid #000; } @media (-webkit-min-device-pixel-ratio: 2) { div{ border:0.5px solid #000; } } 但在ios7以

mobile web retina 下 1px 边框解决方案

http://www.tuicool.com/articles/ZRv6bun 再谈mobile web retina 下 1px 边框解决方案 时间 2015-01-03 12:03:31  Hugo Web前端开发 原文  http://www.ghugo.com/css-retina-hairline/ 主题 WebKitiOSCSS 本文实际上想说的是ios8下 1px解决方案. 1px的边框在devicePixelRatio = 2的retina屏下会显示成2px,在iphone 6

html移动端1px细线解决方案汇总

现在的PM和UI总以看app的眼光看html5, html页面要做的专业美观,而且必须很精细. 去年的时候UI就告诉我h5上的边框线太粗,把整站都给拉low了. 当时工期紧就没太在意1px粗细, 好在那个版本没上线就迭代掉了,后面的版本针对这个问题做了些尝试, 这里总结下1px细线的处理方法 移动端1px变粗的原因 为什么移动端css里面写了1px, 实际看起来比1px粗. 其实原因很好理解:这2个'px'的含义是不一样的. 移动端html的header总会有一句 <meta name="