首页 > 网页制作 > CSS

css中引入svg来兼容部分安卓机显示0.5px边框的示例

admin CSS 2022-02-06 12:53:00 svg   css     兼容   安卓   0.5px边框"

相信大家昨天打开某 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,") ;
}

倒腾不止于此,利用 php 代码把 svg 的 xml 代码转成 base64 格式再试试:

<?php
  echo base64_encode("");
?>

输出如下:

PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnPjxsaW5lIHgxPScwJyB5MT0nMTAwJScgeDI9JzEwMCUnIHkyPScxMDAlJyBzdHJva2U9JyNkY2RjZGMnIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPg==
 

再引入到 css 的 background-image 中:(注意原 utf8 要改成 base64 )

input {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnPjxsaW5lIHgxPScwJyB5MT0nMTAwJScgeDI9JzEwMCUnIHkyPScxMDAlJyBzdHJva2U9JyNkY2RjZGMnIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPg==") ;
}

结语

其实还有很多方法可以来解决这个问题,大家尽情发挥一下脑洞吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持潘少俊衡。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文地址:/web/CSS/76398.html

留言与评论(共有 0 条评论)
   
验证码:

潘少俊衡

| 桂ICP备2023010378号-4

Powered By EmpireCMS

爱享小站

中德益农

谷姐神农

环亚肥料

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

感谢潘少俊衡友情技术支持