【SVG】为了前端页面的美丽,我选择学习SVG
【SVG】为了前端页面的美丽,我选择学习SVG
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!说明 SVG在之前自学的过程中,其实一直都是很高深的样子不敢触碰,但是想要理解终究都会走到这一步的。再怎么看起来难的技术都是由简单的知识点累计起来的。
什么是SVG?
- SVG 意为可缩放矢量图形(Scalable Vector Graphics)。
- 它使用 XML 格式定义图像。
- SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失。
- SVG 是万维网联盟的标准。
- SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体。
由于SVG是XML文件,SVG图像可以用任何文本编辑器创建,但是复杂的图形还是得借助图形编辑工具哟SVG的优势
- SVG 可被非常多的工具读取和修改(比如记事本)。
- SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。
- SVG 是可伸缩的。
- SVG 图像可在任何的分辨率下被高质量地打印。
- SVG 可在图像质量不下降的情况下被放大。
- SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)。
- SVG 是开放的标准。
- SVG 文件是纯粹的 XML。
SVG 的主要竞争者是 Flash。与 Flash 相比,SVG 最大的优势是与其他标准(比如 XSL 和 DOM)相兼容。而 Flash 则是未开源的私有技术。一个小小的示例 示例代码
效果
文章图片
代码解析
第一行包含了 XML 声明。- standalone 属性规定此 SVG 文件是否是"独立的",或含有对外部文件的引用,standalone="no" 意味着 SVG 文档会引用一个外部文件 - 在这里,是 DTD 文件。
和
是表示SVG代码,相当于开始标签和结束标签,这是根元素。- width 和 height 属性可设置此 SVG 文档的宽度和高度。
- version 属性可定义所使用的 SVG 版本。
- xmlns 属性可定义 SVG 命名空间。
用来创建一个圆。cx 和 cy 属性定义圆中心的 x 和 y 坐标。如果忽略这两个属性,那么圆点会被设置为 (0, 0)。r 属性定义圆的半径。- stroke 和 stroke-width 属性控制如何显示形状的轮廓。我们把圆的轮廓设置为 2px 宽,黑边框。
- fill 属性设置形状内的颜色。我们把填充颜色设置为红色。
- 关闭标签的作用是关闭 SVG 元素和文档本身。
注意:所有的开启标签必须有关闭标签!如何在HTML中使用SVG? SVG 文件有5种方法嵌入 HTML 文档:
文章图片
代码解析:
- rect 元素的 width 和 height 属性可定义矩形的高度和宽度
- style 属性用来定义 CSS 属性
- CSS 的 fill 属性定义矩形的填充颜色(rgb 值、颜色名或者十六进制值)
- CSS 的 stroke-width 属性定义矩形边框的宽度
- CSS 的 stroke 属性定义矩形边框的颜色
示例二:
填充和边框的透明度
效果:
文章图片
代码解析:
- x 属性定义矩形的左侧位置(例如,x="0" 定义矩形到浏览器窗口左侧的距离是 0px)
- y 属性定义矩形的顶端位置(例如,y="0" 定义矩形到浏览器窗口顶端的距离是 0px)
- CSS 的 fill-opacity 属性定义填充颜色透明度(合法的范围是:0 - 1)
- CSS 的 stroke-opacity 属性定义轮廓颜色的透明度(合法的范围是:0 - 1)
示例三:
整个元素的透明度
效果:
文章图片
代码解析:
- CSS opacity 属性用于定义了元素的透明值 (范围: 0 到 1)。
示例四:
圆角矩形
效果:
文章图片
代码解析:
- rx 和 ry 属性可使矩形产生圆角。
圆形
示例:
效果:
文章图片
代码解析:
- circle 标签可用来创建一个圆
- cx和cy属性定义圆点的x和y坐标。如果省略cx和cy,圆的中心会被设置为(0, 0)
- r属性定义圆的半径
椭圆
示例:
效果:
文章图片
代码解析:
- ellipse 标签可用来创建一个椭圆
- CX属性定义的椭圆中心的x坐标
- CY属性定义的椭圆中心的y坐标
- RX属性定义的水平半径
- RY属性定义的垂直半径
线
示例:
效果:
文章图片
代码解析:
- line 标签可用来创建一条直线
- x1 属性在 x 轴定义线条的开始
- y1 属性在 y 轴定义线条的开始
- x2 属性在 x 轴定义线条的结束
- y2 属性在 y 轴定义线条的结束
折线
示例一:
效果:
文章图片
代码解析:
- polyline 是用于创建任何只有直线的形状
- points是点的集合
示例二:
画一个五角星
效果:
文章图片
代码解析:
利用了填空,因为线段是不闭合的
多边形
示例一:
效果:
文章图片
代码解析:
- polygon标签用来创建含有不少于三个边的图形
- points是点的集合
示例二:
画一个五角星
效果:
文章图片
代码解析:
最后一个点会自动闭合,这也是和polyline的一个区别
路径
路径数据:
- M = moveto
- L = lineto
- H = horizontal lineto
- V = vertical lineto
- C = curveto
- S = smooth curveto
- Q = quadratic Bézier curve
- T = smooth quadratic Bézier curveto
- A = elliptical Arc
- Z = closepath
示例:
画一个三角形
效果:
文章图片
代码解析:
定义了一条路径,它开始于位置150 0,到达位置75 200,然后从那里开始到205 270,最后在150 0关闭路径。
总结
SVG的基础部分已经介绍了,但对于path的运用才刚刚开始,后续会专门细聊一下path,当然还有SVG的一些”高级“属性。
其实一路操作下来,发现SVG的操作和我们使用PS、AI等绘图工具的原理大致相像,对于我们来理解此类图形的绘制也有一定的帮助。
感谢
万能的网络
菜鸟教程
以及勤劳的自己,个人博客,GitHub测试,GitHub
【【SVG】为了前端页面的美丽,我选择学习SVG】公众号-归子莫,小程序-小归博客
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长