写了一个 JS 将 svg sprite 加载到页面上脚本,已经放在 github,可以 bower 安装 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
redyyu
V2EX    Javascript

写了一个 JS 将 svg sprite 加载到页面上脚本,已经放在 github,可以 bower 安装

  •  
  •   redyyu 2015-07-15 21:40:56 +08:00 3257 次点击
    这是一个创建于 3759 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ------------------------
    https://github.com/Soopro/svg-sprites-render

    bower install svg-sprites-render
    ------------------------

    文档看github里面的

    js 读取svg sprites 文件,并且根据html 中的属性,将sprite单元渲染到对应svg tag中。支持 icomoon 之类的 svg sprites 生成器生成的svg 文件。

    写这个的目的是为了让svg sprite在使用的时候 能具备 inline svg的特性,可以用css fill color 之类的特性,如果用 svg 做 background 不用遮罩干不了这事儿,而且大小宽高 在不同浏览器里面实际上是有差别的(这也要看svg生成的好不好)

    搜到有一说可以用 svg fragment 类似 svg_name.svg#fragId 之类的方式通过src加载,我之前也试过,然而并没有什么卵用。 在Safari有跳帧的现象。

    两天没有找到靠谱的库(snap svg 可以用,但是太重,没有选)

    往上搜到过一些说用svg sprite 不好的地方,那么用这个脚本 干脆就把 svg inline了。
    只要是现代浏览器,都应当完美支持。

    昨天一些人也没有见靠谱的解决方案,于是自己写一个凑合用先。
    在 angular material 中用类似的效果,实现它的 md-icon,它咋个实现我没看,但是html 上写的时候差不多。

    PS: 老IE 支持不支持 不在我的考虑之内,很抱歉。。。微软自己都不要的东西,我也不会鸟他。
    2 条回复    2015-07-17 01:31:24 +08:00
    bramblex
        1
    bramblex  
       2015-07-16 12:02:29 +08:00
    还以为是妹纸
    redyyu
        2
    redyyu  
    OP
       2015-07-17 01:31:24 +08:00
    Update 到 0.0.5 此前的版本 忘了 safari 和 opera 的支持。太傻逼了。。。今天用的时候发现了就修掉了。
    IE 还是没有测,理论上说 IE 10 以上可以支持。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2640 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 15:20 PVG 23:20 LAX 08:20 JFK 11:20
    Do have faith in what you're doing.
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-11940834-2', 'v2ex.com'); ga('send', 'pageview'); ga('send', 'event', 'Node', 'topic', 'js'); ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86