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形式
如下圖,兼容谷歌和火狐
谷歌
火狐