记录移动端开发1像素边框问题, stylus代码转成less
需求:
需要解决1像素问题:
物理像素是设备像素的2倍,在手机上预览,1px边框会变成2px
参考cube-ui的mixin.styl 中1像素解决方案,如下:
border-1px($color = #ccc, $radius = 2PX, $style = solid)
position: relative
&::after
content: ""
pointer-events: none
display: block
position: absolute
left: 0
top: 0
transform-origin: 0 0
border: 1PX $style $color
border-radius: $radius
box-sizing border-box
width 100%
height 100%
@media (min-resolution: 2dppx)
width: 200%
height: 200%
border-radius: $radius * 2
transform: scale(.5)
@media (min-resolution: 3dppx)
width: 300%
height: 300%
border-radius: $radius * 3
transform: scale(.333)问题:
我们的项目中所有样式文件都是用less写的,而且就用一个mixin.styl 中的这个方法而已
解决:
改成less 语法,对照less官方文档,写入 mixin.less文件,引用
除了语法的不同,变量定义、方法的调用外,改了一处
//原来: border: 1PX $style $color //改成:我只需要下边框 border-bottom: 1PX @style @color;
改后代码如下:
.border-1px(@color: #ccc, @radius: 2PX, @style: solid){
position: relative;
&::after {
content: "";
pointer-events: none;
display: block;
position: absolute;
left: 0;
top: 0;
transform-origin: 0 0;
border-bottom: 1PX @style @color;
border-radius: @radius;
box-sizing: border-box;
width: 100%;
height: 100%;
@media (min-resolution: 2dppx){
width: 200%;
height: 200%;
border-radius: @radius * 2;
transform: scale(.5);
}
@media (min-resolution: 3dppx){
width: 300%;
height: 300%;
border-radius: @radius * 3;
transform: scale(.333);
}
}
}使用:
@import "../../assets/style/mixin.less";
li {
.border-1px(#E1E1E1);
}在手机上预览,已经发生变化:
修改前:

修改后:

问题解决,下班走人!
相关推荐
前端 2020-08-03
骷髅狗 2020-08-02
wghou 2020-06-21
wghou 2020-06-16
覆雪蓝枫 2020-06-16
骷髅狗 2020-06-14
骷髅狗 2020-06-12
sixyearsorless 2020-05-27
zhanghaibing00 2020-05-27
maiktom 2020-05-26
比格杰森 2020-05-26
e度空间 2020-05-17
maiktom 2020-05-11
buttonChan 2020-05-10
Enjoyendless 2020-05-08
sixyearsorless 2020-05-07
骷髅狗 2020-04-24