SVG长话短说

简介: 一、何为SVG?SVG是可伸缩的矢量图形,用来定义用于网格的基于矢量的图形,它使用XML格式定义图形,图像在放大或缩小的情况下,其图形质量不会有损失,SVG还是万维网联盟的一个标准。

一、何为SVG?

SVG是可伸缩的矢量图形,用来定义用于网格的基于矢量的图形,它使用XML格式定义图形,图像在放大或缩小的情况下,其图形质量不会有损失,SVG还是万维网联盟的一个标准。

二、与JPEG和PNG等图像相比有何优点?

JPEG和PNG等图像属于位图,是由像素点所构成,图片放大或缩小时容易造成失真。而SVG则属于矢量图,无论如何放大缩小都可以保证其清晰度不会降低。

三、如何使用SVG?

1、直接内联引入

<div class="del">
    <svg class="icon" width="20" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg">
        <path d="M4 10v20c0 1.1 0.9 2 2 2h18c1.1 0 2-0.9 2-2v-20h-22zM10 28h-2v-14h2v14zM14 28h-2v-14h2v14zM18 28h-2v-14h2v14zM22 28h-2v-14h2v14z"></path>
        <path d="M26.5 4h-6.5v-2.5c0-0.825-0.675-1.5-1.5-1.5h-7c-0.825 0-1.5 0.675-1.5 1.5v2.5h-6.5c-0.825 0-1.5 0.675-1.5 1.5v2.5h26v-2.5c0-0.825-0.675-1.5-1.5-1.5zM18 4h-6v-1.975h6v1.975z"></path>
    </svg>
    <span>删除</span>
</div>

2、使用img标签引入,与引用位图方式无异

<div class="del">< img src="svg/delete.svg" /><span>删除</span></div>

3、使用iframe标签引入

<div class="del"><iframe class="icon" src="svg/delete.svg" frameborder="0"></iframe><span>删除</span></div>

4、SVG Sprites,使用use引入(可以看这篇文章"移动端小图标模糊问题"有介绍)

<body>
    <svg display="none" version="1.1" xmlns="http://www.w3.org/2000/svg">
        <symbol id="icon-delete" viewBox="0 0 32 32">
            <title>delete</title>
            <path d="M4 10v20c0 1.1 0.9 2 2 2h18c1.1 0 2-0.9 2-2v-20h-22zM10 28h-2v-14h2v14zM14 28h-2v-14h2v14zM18 28h-2v-14h2v14zM22 28h-2v-14h2v14z"></path>
            <path d="M26.5 4h-6.5v-2.5c0-0.825-0.675-1.5-1.5-1.5h-7c-0.825 0-1.5 0.675-1.5 1.5v2.5h-6.5c-0.825 0-1.5 0.675-1.5 1.5v2.5h26v-2.5c0-0.825-0.675-1.5-1.5-1.5zM18 4h-6v-1.975h6v1.975z"></path>
        </symbol>
    </svg>
    <div class="del"><svg class="icon icon-bin"><use xlink:href="#icon-delete"></use></svg><span>删除</span></div>
</body>
</html>

当然,类似于写CSS时使用style标签写在HTML内一样,在页面内直接写过多的SVG代码总感觉不太好,会让页面感觉很臃肿。那么当然与使用link标签外链样式类似的,SVG也能通过外链的方式引入,就像这样:

<div class="del"><svg class="icon icon-bin"><use xlink:href="demo.svg#icon-delete"></use></svg><span>删除</span></div>

其中demo.svg中则可以保存许多可供调用的SVG:

<!--demo.svg-->
<svg display="none" version="1.1" xmlns="http://www.w3.org/2000/svg">
     <symbol id="icon-delete" viewBox="0 0 32 32">
         <title>delete</title>
         <path d="M4 10v20c0 1.1 0.9 2 2 2h18c1.1 0 2-0.9 2-2v-20h-22zM10 28h-2v-14h2v14zM14 28h-2v-14h2v14zM18 28h-2v-14h2v14zM22 28h-2v-14h2v14z"></path>
         <path d="M26.5 4h-6.5v-2.5c0-0.825-0.675-1.5-1.5-1.5h-7c-0.825 0-1.5 0.675-1.5 1.5v2.5h-6.5c-0.825 0-1.5 0.675-1.5 1.5v2.5h26v-2.5c0-0.825-0.675-1.5-1.5-1.5zM18 4h-6v-1.975h6v1.975z"></path>
     </symbol>
     <!--省略-->
</svg>

但是需要注意的是,以上SVG Sprites外联方式在IE下全军覆没,甚至IE11都不行!


那么,如何改变SVG的大小与颜色呢?
很简单,直接给调用SVG的标签上设置CSS样式即可,比如上面的例子可以这样设置:

.del .icon{ display: inline-block; width: 20px; height: 25px; margin-right: 2px; vertical-align: middle; fill: red;}

注意:以img标签和iframe标签方式调用的时候改变SVG颜色无效!

最后贴上以上四种使用SVG方式的实例效果图:


本文为原创文章,转载请注明出处,谢谢!

相关文章
|
4月前
|
XML JavaScript 前端开发
SVG学习
【10月更文挑战第1天】
70 3
|
9月前
|
XML 前端开发 JavaScript
canvas和svg的比较
canvas和svg的比较
|
9月前
|
XML 移动开发 前端开发
Canvas和SVG:你应该选择哪一个?
Canvas和SVG:你应该选择哪一个?
145 2
|
9月前
|
Web App开发 移动开发 前端开发
SVG
这段代码将引用刚才定义的圆形,并将其放置在(20,20)的位置,大小为60x60。 除了<svg>和<use>元素外,SVG还提供了许多其他的元素和属性,可以帮助你创建各种复杂的图形。比如<rect>、<line>、<polygon>等元素,可以用来创建矩形、线条和多边形等。
86 0
|
9月前
|
前端开发 JavaScript API
【HTML】SVG实现炫酷的描边动画
今天闲来无事,看到Antfu大佬的个性签名,觉得还是非常炫酷的,于是也想要搞一个自己的个性签名用来装饰自己的门面,不过由于手写的签名太丑了,遂放弃。于是尝试理解原理,深入研究此等密法,终于小有所成,发现原来是描边动画,于是记载如下,方便日后借鉴。
124 3
|
XML 前端开发 JavaScript
你可以学会的svg动画(SMIL)
你可以学会的svg动画(SMIL)
|
XML 编解码 前端开发
|
JavaScript
vue中svg的使用,可改变icon颜色(svg-sprite-loader)
今天来和小伙伴们分享下之前改 UI 的笔记 , 由于项目需要,要在项目中使用设计师给的 icon 图标,还要改变 icon 的颜色。 幸好找到这么一个神器~ 插件:svg-sprite-loader 版本:@vue/cli 4.3.1 使用: 1. npm install -D svg-sprite-loader 2. 在 src/components/ 下创建 SvgIcon 组件 配置SvgIcon.vue <template> <svg :class="svgClass" aria-hidden="true"> <use :xlink:href="iconNa
2342 0
|
前端开发 JavaScript
利用 SVG 和 CSS3 实现有趣的边框动画
今天我们来探索一下Carl Philipe Brenner的网站上一个微妙而有趣的动画效果。当鼠标经过网格元素时,会有一个微妙的动画发生——网格元素变得透明,每条边有个顺时针的动画,创造了非常好的效果。这种效果是通过JS给span标签的宽或者高做了动画。我们待会会用SVG和CSS渐变来完成。注意,这个技术还是实验性的。
308 0
纯CSS3实现GIF图片动画效果
在线演示 本地下载
1331 0

热门文章

最新文章

相关课程

更多