美文网首页
代码合并svg

代码合并svg

作者: 临安linan | 来源:发表于2019-06-08 02:37 被阅读0次

我们常常会使用svg,但如果引入的svg过多时,将他们整合成一个svg图会是更好的选择,可以减少请求次数以及保证多个图标同时加载出(避免出现svg加载顺序差异造成体验不好)
那么,我们要怎样将svg合并呢?
其实有不止一种办法,可以选择在网上找现成的工具,也可以用代码合并。
如何用代码合并?
先引入两个svg

<?xml version="1.0" encoding="UTF-8"?>
<svg width="120px" height="120px" viewBox="0 0 120 120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
// ...
</svg>

<?xml version="1.0" encoding="UTF-8"?>
<svg width="120px" height="120px" viewBox="0 0 120 120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
// ...
</svg>

然后将svg标签改为symbol,并且加上id

<?xml version="1.0" encoding="UTF-8"?>
<symbol  id="icon-pre" width="120px" height="120px" viewBox="0 0 120 120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
// ...
</symbol>

<?xml version="1.0" encoding="UTF-8"?>
<symbol id="icon-next" width="120px" height="120px" viewBox="0 0 120 120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
// ...
</symbol>

接下来,既然是要合并,那就在最外层包裹一个svg标签吧

<svg>
  <?xml version="1.0" encoding="UTF-8"?>
  <symbol  id="icon-pre" width="120px" height="120px" viewBox="0 0 120 120" version="1.1"  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  // ...
  </symbol>

  <?xml version="1.0" encoding="UTF-8"?>
  <symbol id="icon-next" width="120px" height="120px" viewBox="0 0 120 120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  // ...
  </symbol>
</svg>

完工,接下来,只需要在需要使用的地方通过id引用即可,如下:

<svg>
  <use xlink:href="#icon-pre"></use>
</svg>

做完这些,我们已经可以使用合并后的svg了,但还有一些可以优化的地方

由于svg标签本身是占空间的,所以上面那一个svg也会在页面占据空间,这不是我们所希望的,所以我们要把它隐藏掉

<svg style="display: none" >
// ...
</svg>

此时,我们的svg已经很完备了,但是就是不够优雅,毕竟那么一大堆代码放在html里,我们只要用JS动态创建插入body中就好了。

let svgWrapper = document.createElement('div')
svgWrapper.style.display = "none"
document.body.appendChild(svgWrapper)
svgWrapper.innerHTML = `<svg>
  // ...略略略
</svg>`

以上。

相关文章

  • 代码合并svg

    我们常常会使用svg,但如果引入的svg过多时,将他们整合成一个svg图会是更好的选择,可以减少请求次数以及保证多...

  • Svg Sprite

    演示地址 代码 SVG Sprite 传统的做法使用AI或者合并SVG图像,然后用background-posti...

  • svg合并

    假如页面有多个svg图标要加载,多次加载不利,可将多个svg合并为一个加载 如下有两个svg 将他们的前后缀改为s...

  • 一款vue loading组件

    svg代码 vue代码

  • 前端性能优化汇总

    网络优化 减少请求文件数,资源合并(雪碧图、SVG(Iconfont)、JS/CSS文件合并) 减少资源体积,资源...

  • svg实例

    一个简单的SVG图形例子: 这里是SVG文件(SVG文件的保存与SVG扩展): SVG 代码解析: 第一行包含了 ...

  • svg

    SVG 在HTML页面 SVG 文件可通过以下标签嵌入 HTML 文档:、 或者 SVG的代码可以直接嵌入到HTM...

  • 导出pathdata

    1.利用 illustrator2.另存为svg3.svg选项中点击svg代码 4.弹出图下就是pathdata ...

  • SVG在前端应用的理解

    SVG 代码修改 如果导出的svg,想要在代码里面修改颜色 关键属性stroke和fill 修改值即可 比如说我们...

  • 【前端数据可视化】SVG

    1. svg入门 示例代码 : 参考网址 : SVG 菜鸟教程[https://www.runoob.com/sv...

网友评论

      本文标题:代码合并svg

      本文链接:https://www.haomeiwen.com/subject/silvtctx.html