博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用SVG解决移动端1px的技巧
阅读量:4118 次
发布时间:2019-05-25

本文共 1152 字,大约阅读时间需要 3 分钟。

今天介绍一个通过svg来实现移动端1px效果的小技巧

SVG的描边方式

通常我们在使用一些设计软件时,描边会有三种选择,分别是内描边、居中描边和外描边,比如 photoshop

那么,svg 中的描边是哪种方式呢?

答案是居中描边,并且无法更改,如下:

可以看到,rect 的描边是居中的,两边各是 5

0.5px的实现

根据上面的结论,如果 stroke-width 为 1 时,那么就很轻松的被分成了两边各 0.5,然后把外侧的部分截断就可以了

这里直接设置 rect 的宽高都为 100%,并且 svg 默认是超出隐藏的 (overflow:hidden),如下:

这里对比一下1px的效果

可以用手机访问或者扫描以下网址体验https://codepen.io/xboxyan/

SVG作为背景使用

以上是直接使用 svg 标签,实际项目当然不能这样使用了,不过可以将svg 作为背景图片来使用,例如

div {  background: url("data:image/svg+xml,
");}

很简单,在 svg 前面添加一段 data:image/svg+xml, 表示这是一张 svg格式的图片,和 base64 的写法比较类似,后面 svg 的属性xmlns='http://www.w3.org/2000/svg'表示命名空间,暂时还不能去除,记住这层规律就可以了

当然在IE下,svg可能还需要转义才能正常显示,这里可以参考张鑫旭老师的这篇文章

下面来看几个案例

1、 1px分割线

这个在移动端特别常见,这里可以这样来实现,直接使用 line 画一条底部的线

p {  background: url("data:image/svg+xml,
");}

2、 1px边框

和分割线类似,只是用rect来画一个自适应的矩形,这里宽高均为 100%

div {  background: url("data:image/svg+xml,
");}

3、 1px带圆角的边框

常规方式实现带圆角的边框就无能为力了,svg 可以很轻松的实现,借助rx 属性,还有元素自身的border-radius就可以了

div {  border-radius:5px;  background: url("data:image/svg+xml,
");}

总结

以上就是几个svg实现边框的小技巧了,这里是用background-image模拟的,比使用伪元素要方便的多,同时也不占据空间,算是相对完美的解决方案了~

转载地址:http://hfbpi.baihongyu.com/

你可能感兴趣的文章
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2016——个人年度总结
查看>>
2017——新的开始,加油!
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
Linux设备模型(总线、设备、驱动程序和类)之四:class_register
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
弱类型、强类型、动态类型、静态类型语言的区别是什么?
查看>>