HTML代码

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>last-child</title>
<style> body{
color:#333;
}
li.test-last-child:after{
display: block;
content: '';
height: 10px;
background-color: #0000ed;
transform:scaleY(0.3);
}
li.test-last-child:last-child:after{
display: none;
}
</style>
</head>
<body>
<ul>
<li class="test-last-child">321312</li>
<li class="test-last-child">31313</li>
<li class="test-last-child">3131</li>
<li class="test-last-child">1413</li>
<li class="test-last-child">141321</li>
<li class="test-last-child">1421</li>
</ul> </body>
</html>

伪元素after的高度为10px时chrome效果图

 css笔记--web端小于1px设计的处理方法-LMLPHP 

伪元素after的高度为10px时Firefox效果图

css笔记--web端小于1px设计的处理方法-LMLPHP

伪元素after的高度为1px时chrome效果图

css笔记--web端小于1px设计的处理方法-LMLPHP

伪元素after的高度为1px时Firefox的效果图

css笔记--web端小于1px设计的处理方法-LMLPHP

1、伪元素的高度大于1px时scale可以正常渲染,当高度为1时,scale小于1时火狐浏览器不能很好的渲染出来。

2、实际上,当伪元素的高度为1px时,scale在谷歌浏览器虽然能正确显示出来,但是渲染的过程中只是改变了颜色的透明度,并没有改变高度的大小。

如下图所示:渲染前

css笔记--web端小于1px设计的处理方法-LMLPHP

渲染后

css笔记--web端小于1px设计的处理方法-LMLPHP

而此时,火狐浏览器压根是不渲染的(因为为元素的高度小于1且scale也小于1),所以scale的方式解决小于1px时会存在兼容问题

此时,最好的解决办法是

当设计稿的像素小于1px时,代码渲染直接是1px,然后给border-color或者background-color的色值设置为rgba形式

如下图,兼容谷歌和火狐

谷歌

css笔记--web端小于1px设计的处理方法-LMLPHP

火狐

css笔记--web端小于1px设计的处理方法-LMLPHP

05-07 15:07