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效果图
伪元素after的高度为10px时Firefox效果图
伪元素after的高度为1px时chrome效果图
伪元素after的高度为1px时Firefox的效果图
1、伪元素的高度大于1px时scale可以正常渲染,当高度为1时,scale小于1时火狐浏览器不能很好的渲染出来。
2、实际上,当伪元素的高度为1px时,scale在谷歌浏览器虽然能正确显示出来,但是渲染的过程中只是改变了颜色的透明度,并没有改变高度的大小。
如下图所示:渲染前
渲染后
而此时,火狐浏览器压根是不渲染的(因为为元素的高度小于1且scale也小于1),所以scale的方式解决小于1px时会存在兼容问题
此时,最好的解决办法是
当设计稿的像素小于1px时,代码渲染直接是1px,然后给border-color或者background-color的色值设置为rgba形式
如下图,兼容谷歌和火狐
谷歌
火狐