使用SVG作为WEB站点图标方案简介

摘要:
SVG有可能取代IconFont作为在网页中显示图标的实现方案。显示清晰、语义清晰。CSS可用于控制图标样式并减少http请求。如果您想查看svg和iconfont之间的具体比较,请选择1。使用img、object和嵌入式标记直接引用SVG的缺点是每个图标都需要保存为单独的SVG文件。

前端世界变化好快,一时之间,SVG已经大有取代Icon Font 作为网页中显示图标的实现方案之势,SVG作为图标具有如下优点:

  1. 缩放无损还原,显示清晰
  2. 语义性良好
  3. 可用CSS控制图标样式以及动画
  4. 减少http请求

如果想具体看看svg和icon font具体对比对比,可以参考下CSS Trick的《Inline SVG vs Icon Font》这篇文章。

使用SVG图标有如下方法:

1.使用img、object、embed 标签直接引用SVG

此方法的缺点主要在于每个图标都需单独保存成一个 SVG 文件,使用时单独请求,增加了HTTP请求数量。

<img src="http://www.w3school.com.cn/svg/rect1.svg"  width="300" />

2.Inline SVG,直接把SVG写入 HTML 中

Inline SVG 作为HTML文档的一部分,不需要单独请求。临时需要修改某个图标的形状也比较方便。但是Inline SVG使用上比较繁琐,需要在页面中插入一大块SVG代码不适合手写,图标复用起来也比较麻烦。

<body>
    <svg width="100%" height="100%">
        <rect x="20" y="20" width="250" height="250" style="fill:#fecdddd;"/>
    </svg>
</body>

3. SVG Defs/Symbols

一些提供制作 Icon Font 功能的网站(如icomoon)已经提供输出 SVG Sprites 。和传统的位图的雪碧图一样,将所有的图标以一定的间隔排列起来组成一整张大图片后,可以有效减少web请求次数。

更方便的是,我们可以使用类似引用的方式使用图标了。

<svg class="icon">
  <use xlink:href="/img/posts/svg-icons.svg#circle-check"></use>
</svg>
<svg class="icon">
  <use xlink:href="/img/posts/svg-icons.svg#circle-cross"></use>
</svg>

这个是我推荐的方式,除了自己制作外,一些项目也提供了SVG Sprites下载,如tabler-icons

参考文章:

免责声明:文章转载自《使用SVG作为WEB站点图标方案简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSS实现栅格布局Apache Jmter 压力测试教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue 移动端添加 时间日期选择器

效果:  index.vue <template> <div class="user-wrap" style="padding-bottom: 0;text-align: center"> <h1>-----------------------时间选择器------------------...

【安全】CSRF、XSS攻击了解与防范

============================== 目录   一、了解CSRF攻击及防范   二、了解XSS攻击及防范 =============================== 一、了解CSRF攻击及防范 1、了解csrf   中文叫跨站请求伪造,指攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击...

【原创】QT简单计算器

代码 //main.cpp #include "calculator_111.h" #include <QtWidgets/QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Calculator_111 w; w.show(); retu...

驱动硬件Framebuffer驱动程序框架 skeletonfb.c 分析

新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正     Framebuffer驱动程序框架 skeletonfb.c 析分     近来想好好研究一下lcd驱动发开程过,lcd驱动发开重要就是framebuffer的编写了,这里只要想做framebuffer驱动的发开可能这里是必经之路,因为这里这个skeletnfb.c是framebu...

手把手写一个html_json信息源

html_json用于从网页里提取json数据。 这里用新浪读书的书讯举个例子,手把手写一个html_json信息源。 打开新浪读书的首页,可以看到页面下方有最新、书讯、童书、小说等几个Tab,这里我们提取书讯的内容。 查看页面的源码,找不到书讯的内容。 这是因为网站使用了json技术:额外加载了json对象、并通过javascript把json的内容显...

el-table刷新后table出现抖动现象

问题描述 el-table刷新后table出现抖动现象,而且如果使用了排序功能,点击排序后table抖动渲染后排序的选中状态图标消失了。 问题分析 <el-table-column :key="index + Math.random()" // 注意!!! > 渲染时key使用了Math.random()导致每次都是重新渲染表头。 所...