相信大家昨天打開某 404 搜索引擎的時候應該都看到這張圖片了,不得不說,后人會以這么一種方式來紀念前人,而且還是一個偉大的公司,挺感動的。
前言
在開發 H5 頁面的時候發現,部分安卓機的原生瀏覽器不兼容 0.5px 的 border ,這時候就很鬧心了,如下所示代碼:
input { border-bottom: 0.5px solid #DCDCDC;}
使用 rem 改進
后面想到了用 rem 的方式,因為 H5 頁面借鑒了手淘的響應式像素,根據移動設備的 dpi 設定了根元素的 font-size 大小,所以幾乎所有的 px 都改成了 rem 作為單位,這樣可以更好地去實現移動端的響應式像素以及 Retina 屏幕上的表現。代碼如下:
input { /* 47 是頁面根元素的 font-size 大小 */ border-bottom: calc(1rem/47) solid #DCDCDC;}
測試中有部分機型完美展示了,但是有部分還是不顯示,網上有帖子說可以利用偽元素 :before 和 :after 進行 1px 的表現,然后利用 transform: scaleY(0.5); 進行高度上的調整,思路很好,但奶奶個熊 input 元素不支持偽元素。
最后,物色到了一個很妙的方法:在 CSS 中使用 svg!
css 中引入 svg 來改進
具體思路是為元素加上 background-image ,然后把 svg 置為圖片類型,因為 svg 上的 1px 就是實實在在的只占 1 個物理像素。
實現很簡單,代碼如下:
input { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%'><line x1='0' y1='100%' x2='100%' y2='100%' stroke='#dcdcdc' stroke-width='1'/></svg>") ;}
倒騰不止于此,利用 php 代碼把 svg 的 xml 代碼轉成 base64 格式再試試:
<?php echo base64_encode("<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%'><line x1='0' y1='100%' x2='100%' y2='100%' stroke='#dcdcdc' stroke-width='1'/></svg>");?>
輸出如下:
PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnPjxsaW5lIHgxPScwJyB5MT0nMTAwJScgeDI9JzEwMCUnIHkyPScxMDAlJyBzdHJva2U9JyNkY2RjZGMnIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPg==
再引入到 css 的 background-image 中:(注意原 utf8 要改成 base64 )
input { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnPjxsaW5lIHgxPScwJyB5MT0nMTAwJScgeDI9JzEwMCUnIHkyPScxMDAlJyBzdHJva2U9JyNkY2RjZGMnIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPg==") ;}
結語
其實還有很多方法可以來解決這個問題,大家盡情發揮一下腦洞吧。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答