|  |      1bnm965321      2021-12-24 16:52:06 +08:00 链接需要网络请求后才能渲染,可能会有一段背景是空白的时间 | 
|  |      2yaphets666      2021-12-24 16:54:01 +08:00 其实设计师不用考虑这些问题.主要是程序上的问题.比如维护这个 url 的字符串.我不希望他出现在 css 里.而且用 bg 和用 svg 都得一个标签.没必要去用 bg | 
|      3MissSixty      2021-12-24 16:57:06 +08:00  1 第一种每个 svg 都会请求一个 url ,而第二种前端优化后会让所有 svg 只请求一次 | 
|  |      4VictorFrank1 OP @bnm965321 刚确实发现了这个问题,图标 hover 时,确实会空白闪一下再变成 hover 状态。 | 
|  |      5VictorFrank1 OP @yaphets666 我感觉稍微了解一下才能更好的跟前端同学打交道,目前项目的图标到色号都比较混乱,想整体重构一下 @MissSixty 准备让前端同学用个 2 倍 png 切图了,好像 svg 不能很好的支持渐变色 | 
|  |      6demo      2021-12-24 17:10:06 +08:00 设计师随便设计,前端是有解决方案的,比如用 svg-sprite-loader 直接全部挂到 DOM 里。 | 
|  |      7superfatboy      2021-12-24 17:14:00 +08:00 @MissSixty 不过好多网站都采用内联的 svg 方式,无需额外的请求 | 
|  |      8FFFFourwood      2021-12-24 17:42:59 +08:00 我个人的看法: 1 ,在写一些自适应页面时候,比如一个页面 一套代码, 兼容 小到 iphone5 大到 5k 8k 的超大屏,,直接写在 src 或者直接用<svg></svg>,可以很轻松的做到自适应调整图片的大小或者一些奇奇怪怪的动画 2 ,src 或者<svg> 直接写 后期好维护,直接替换就行了,,不至于还要改 css 文件 3 ,只有涉及到雪碧图之类的 用 background 方式 比较方便,一次加载,节省资源 | 
|  |      9duduaba      2021-12-24 17:45:04 +08:00 网络慢就看出差异了,但是一般这个可以忽略,有的有技术规范,比如一定数量级减少 http 请求,跟设计没关系。 | 
|      10renmu123      2021-12-24 18:12:00 +08:00 via Android 要不用 font ,好处多多 | 
|      11thinkershare      2021-12-24 18:12:49 +08:00 HTTP2 后面应该就不需要考虑这些破事了, 反正链接可以多路复用, 现在为了加速加载实际, 会使用一些类似 css sprite 这样的技巧, 尽量在一个 HTTP 请求里面加载好资源, 可以节省服务器资源 | 
|  |      12VictorFrank1 OP @renmu123 用浏览器字体渲染 icon 吗 | 
|      13kidonng      2021-12-24 20:11:25 +08:00 其实其他格式的图像也能 base64 后直接放 HTML 省请求,只是 SVG 比较适合这种用途罢了。 SVG 还有 <use> 这种专门用来复用的元素。 | 
|  |      14old9      2021-12-24 21:13:46 +08:00 放在 HTML 里灵活很多,可以用 CSS 控制样式,也可以用 JS 控制内容 | 
|  |      15nondanee      2021-12-24 23:13:27 +08:00 其实在 background-image 里用 svg 也可以是内联的,不一定需要网络请求 做一下 urlencode 就行,可以用这个转换 https://yoksel.github.io/url-encoder/ svg 内联在 html 的好处楼上大佬已经说的很多了,svg 放在 background-image 中也有些好处 1. 如果 svg 里定义了 id (比如用了渐变 /遮罩效果),内联在 html 中 id 相同可能会有 bug ,在 background-image 中即使 id 相同也不会相互干扰 2. 垂直居中问题,如果上下间距和除不尽 2 ,那 html 中内联 svg 就很难居中,放在 background-image 里用 `background-position: center` 保证是居中的 | 
|  |      16shenyuzhi      2021-12-25 11:55:50 +08:00 1 前者没有 dom ,性能好,更干净。后者有 dom ,有时候还很多。 2 前者无法用 css 进一步修改,后者可以用 css 进一步修改(主要是可以改颜色,别的没什么要改的)。 3 作为背景图片,前者定位很方便,center/cover/contain 就一两行 css 的事情。后者麻烦一点。 4 前者的缓存由浏览器控制,更方便。后者由开发者自己控制,没处理好可能会抖一下。 | 
|  |      17lysS      2021-12-25 15:15:46 +08:00 @VictorFrank1 不只是闪一下的问题,新的 http 请求会加大服务器负担,而且如果是 https 的话,光证书的大小都有 1~2KB ,而且还要进行一系列协商啥的,至少 5 个 RTT 以上。所以小文件能放在一起就放在一起,包括 js,css 啥的 | 
|  |      18yaphets666      2021-12-26 22:36:12 +08:00 @VictorFrank1 看你们是什么项目了。偏向中后台或者 B 端的项目,其实没必要优化了,下次做好吧。哪怕调个颜色,前端调个颜色没你想的那么简单,有时候样式是被程序( js )控制的。 |