Svg那些事(一):Svg格式及主流用法

来源:程序思维浏览:3171次
之前一直做移动页面的开发,用的是图标字体,具体用的就是阿里的iconfont,因为图标字体是矢量图,在高分辨率的移动端上不会失真。

因为赶工期没有对iconfont做具体研究,最近有点时间,在回顾的代码,发现了很多有用的知识,在此和大家分享一下。

打开阿里矢量图标库官网http://www.iconfont.cn/,选择项目中可能用到的所有图标添加到购物车,统一添加至项目,然后在图标管理中,我的项目中,点到具体的项目,就会看到我们添加的所有图标,这样方便我们以后对图标进行删除,增加和对项目的图标进行管理。最后点击“下载到本地”。具体的样子如图:

阿里矢量图标库官网

解压下载下来的图标文件,文件明细如下:

文件明细

原来iconfont为我们提供了三种矢量图标的用法,分别是:demo_fontclass.html、demo_symbol.html、demo_unicode.html。

即fontclass、symbol、unicode的用法。具体如下:

fontclass

fontclass

Unicode

Unicode

Symbol

Symbol

之前一直用的是fontclass这种方法,其实我们细观察发现unicode这种用法和fontclass方法几乎一样,只是fontclass更易用,比如:我们觉得以前的播放图标不好看,我们想再换一下,那么fontclass这个类名可以不用变,只需要改变fontclass中的定义,如图:

改变fontclass中的定义

只需要改变content属性中的unicode码,html不需要动。而unicode方法,就需要改变样式类和html,不适合之后的更新维护。

然后,就来到我们今天的主角Symbol用法。

所谓的Symbol用法,即svg用法。

那么svg常用用法都有什么,听我们一一讲解。

首先,svg的定义。svg是二维矢量图形的一种图形格式。比如我们常见的图片格式有.jpg、.png一样,它只是一种图片格式。只不过它是:
  1. 使用 XML 格式定义图形
  2. 图像在放大或改变尺寸的情况下其图形质量不会有所损失
  3. 由于svg是xml文件,任何文本编辑器都可以对它进行编辑,而且更适合seo优化。
  4. Svg文件比jpg格式要小很多
兼容性:IE9+及主流移动浏览器。
然后,svg常用用法。
<svg xmlns=”” width=”” height=”” version =“”></svg>
xmlns :SVG 命名空间
width、height:svg的宽和高
version :定义所使用的 SVG 版本

Svg常用标签含义标签常用属性
<desc>标签
<svg><desc></desc></svg>
对 SVG 中的元素的纯文本描述 - 并不作为图形的一部分来显示。用户代理会将其显示为工具提示 
<title>标签
<svg><title></title></svg>
对 SVG 中的元素的纯文本描述 - 并不作为图形的一部分来显示。用户代理会将其显示为工具提示 
<g>标签
<svg><g></g></svg>
把相关元素进行组合的容器元素id="该组的名称"
fill="该组填充颜色"
opacity="该组不透明度"
<path>标签
<svg><path></path></svg>
定义一个路径Id=”路径id”
d="定义路径指令”
fill=”路径颜色值”
transform="css3动画属性转换列表"
<defs>标签
<svg><defs></defs></svg>
引用的元素容器 
< symbol >标签
<svg><symbol></symbol></svg>
一个完整的图标元件,与SVG Sprite有关(类似css sprite,稍后会讲)
 
Id=”一个图标的id”
viewBox=””
viewBox 属性设置 viewBox="x y width height",这些值指定了viewPort(视口)位置、大小
<use>标签
<svg>< use ></ use ></svg>
svg中非常重要的一个元素,使用已定义的svg图标xlink:href=”#”+”一个图标的id”
x=”在x轴上的位置”
y=”在Y轴上的位置”

下面是定义svg图标的例子:

svg图标的例子

按照上面表格中的标签定义,这个图片中的代码应该能理解吧。

这段代码表示:一个svg文件,包括了3个图标元件,从它们的id属性上看,第一个图标是播放,第二个图标是返回,第三个图标是点赞; 第一个图标由两条路径组成,第二个图标由一条路径组成,第三个图标由两条路径组成。

仅接着是如何使用的例子:

svg如何使用的例子

这段代码表示:分别使用上面已定义好的3个图标,用<use></use>标签,xlink:href=”#”+图标的id。最后在页面上显示的样子如下:

定义好的3个图标

另外上面代码中的 icon class 定义如下:

fill:currentColor,通过设置color来改变svg的颜色

这里用到了我们上一篇文章“css3中的currentColor ,这个关键字你知道吗”中讲的currentColor关键字,fill:currentColor,通过设置color来改变svg的颜色。

好了,到此为止svg的主流web用法已说完。我们紧接着会出svg那些事(二):包括svg sprite 和svg的应用情况,如何创建svg图片等。喜欢程序思维的朋友们请继续关注我们。
精品好课
HTML5基础入门视频教程易学必会
HTML5基础入门视频教程,教学思路清晰,简单易学必会。适合人群:创业者,只要会打字,对互联网编程感兴趣都可以学。课程概述:该课程主要讲解HTML(学习HTML5的必备基础语言)、CSS3、Javascript(学习...
HTML5视频播放器video开发教程
适用人群1、有html基础2、有css基础3、有javascript基础课程概述手把手教你如何开发属于自己的HTML5视频播放器,利用mp4转成m3u8格式的视频,并在移动端和PC端进行播放支持m3u8直播格式,兼容...
最新完整React视频教程从入门到精通纯干货纯实战
React是目前最火的前端框架,就业薪资很高,本课程教您如何快速学会React并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习React高薪就...
最新完整React+VUE视频教程从入门到精,企业级实战项目
React和VUE是目前最火的前端框架,就业薪资很高,本课程教您如何快速学会React和VUE并应用到实战,教你如何解决内存泄漏,常用库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习Re...
Vue2+Vue3+ES6+TS+Uni-app开发微信小程序从入门到实战视频教程
2021年最新Vue2+Vue3+ES6+TypeScript和uni-app开发微信小程序从入门到实战视频教程,本课程教你如何快速学会VUE和uni-app并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己...
jQuery视频教程从入门到精通
jquery视频教程从入门到精通,课程主要包含:jquery选择器、jquery事件、jquery文档操作、动画、Ajax、jquery插件的制作、jquery下拉无限加载插件的制作等等......
React实战视频教程仿京东移动端电商
React是前端最火的框架之一,就业薪资很高,本课程教您如何快速学会React并应用到实战,对正在工作当中或打算学习React高薪就业的你来说,那么这门课程便是你手中的葵花宝典。
VUE2+VUE3视频教程从入门到精通(全网最全的Vue课程)
VUE是目前最火的前端框架之一,就业薪资很高,本课程教您如何快速学会VUE+ES6并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习VUE高薪就...
收藏
扫一扫关注我们