实现 1像素border

实现 1像素border

1
2
3
4
5
6
7
8
9
10
11
12
13
14
border -1px ($color)
   position relative
   &:after
     display block
     position absolute
     left 0
     bottom 0
     width 100%
     border-top 1px  solid  $color
     content ' '
 
border- none ()
   &:after
     display none

使用时首先

1
@import  "../../common/stylus/mixin.styl" ;

为匹配不同设备,定义基本样式

1
2
3
4
5
6
7
8
9
10
11
@media (-webkit-min-device-pixel-ratio:  1.5 ),(min-device-pixel-ratio:  1.5 )
   .border -1px
     &::after
       -webkit-transform: scaleY( 0.7 )
       transform: scaleY( 0.7 )
 
@media (-webkit-min-device-pixel-ratio:  2 ),(min-device-pixel-ratio:  2 )
   .border -1px
     &::after
       -webkit-transform: scaleY( 0.5 )
       transform: scaleY( 0.5 )

转自:http://www.cnblogs.com/jiangyangchang/p/6530385.html

注: 先定义一个 mixin (mixin 是 css 预处理器提供的一个方法,它可以通过定义一个函数,比如 border-1px($color),在其中定义的css代码,可以在其他css中直接通过调用函数来引用)

通过对伪类的缩放,来实现在不同屏幕下的1px 效果。

为了方便依赖所有的公共样式,创建一个 index.scss ,引入其他的公共scss,当应用到其他 css 时,直接引入index即可(@import "./index")

 mixin.scss

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
  * 解决1px问题
  */
@mixin border -1px ($color) {
   position relative ;
   &:after {
     display block ;
     position absolute ;
     left 0 ;
     bottom 0 ;
     width 100% ;
     border-top 1px  solid  $color;
     content ' ' ;
   }
}

base.scss

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
  * 判断在不同 dpr 下的显示情况
  */
@media (-webkit-min-device-pixel-ratio:  1.5 ),(min-device-pixel-ratio:  1.5 ) {
   .border -1px  {
     &::after {
       -webkit-transform: scaleY( 0.7 );
       transform: scaleY( 0.7 );
     }
   }
}
 
@media (-webkit-min-device-pixel-ratio:  2 ),(min-device-pixel-ratio:  2 ) {
   .border -1px  {
     &::after {
       -webkit-transform: scaleY( 0.5 );
       transform: scaleY( 0.5 );
     }
   }
}
 
/**
  * 等同于
  */
[data-dpr= '1.5' ] & {
   .border -1px  {
     &::after {
       -webkit-transform: scaleY( 0.7 );
       transform: scaleY( 0.7 );
     }
   }
}
 
[data-dpr= '2' ] & {
   .border -1px  {
     &::after {
       -webkit-transform: scaleY( 0.5 );
       transform: scaleY( 0.5 );
     }
   }
}

index.scss

扫描二维码关注公众号,回复: 170569 查看本文章

注:@import 后面的 ';'不能省略,否则会报错

猜你喜欢

转载自blog.csdn.net/wandoumm/article/details/80167264