css中引入svg來相容部分安卓機執行個體

來源:互聯網
上載者:User
本文主要和大家介紹了css中引入svg來相容部分安卓機顯示0.5px邊框的樣本的相關資料,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望能協助到大家。

前言

在開發 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.php.cn/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.php.cn/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==") ;}
相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.