前端开发中对图片的优化

参考:https://www.zhihu.com/question/21815101
https://blog.csdn.net/array_huang/article/details/50162525

尽可能少用图片

哈哈,如果你压根不用图片,就不存在图片优化的问题了。像一些修饰效果,比如半透明、边框、圆角、阴影、渐变等,都可以通过css达成,而不需要更换图片。

使用矢量图代替位图

SVG是基于矢量的,它会通过数学函数对形状和颜色进行计算,对它缩放不会失真。位图是基于像素的,缩放会失真。因为之前没有接触过SVG,这里补充一下SVG的基础知识。

svg基础

SVG是纯粹的XML,SVG文件必须使用.svg后缀来保存。

<?xml version="1.0" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg width="100%" height="100%" version="1.1"
xmlns="http://www.w3.org/2000/svg">

<circle cx="100" cy="50" r="40" stroke="black"
stroke-width="2" fill="red"/>

</svg>

这就是一个简单的SVG文件。第一行包含了 XML 声明。请注意 standalone 属性!该属性规定此 SVG 文件是否是“独立的”,或含有对外部文件的引用。

standalone=“no” 意味着 SVG 文档会引用一个外部文件 - 在这里,是 DTD 文件。

第二和第三行引用了这个外部的 SVG DTD。该 DTD 位于 “http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd”。该 DTD 位于 W3C,含有所有允许的 SVG 元素。

SVG 代码以 元素开始,包括开启标签 和关闭标签 。这是根元素。width 和 height 属性可设置此 SVG 文档的宽度和高度。version 属性可定义所使用的 SVG 版本,xmlns 属性可定义 SVG 命名空间。

SVG 的 用来创建一个圆。cx 和 cy 属性定义圆中心的 x 和 y 坐标。如果忽略这两个属性,那么圆点会被设置为 (0, 0)。r 属性定义圆的半径。

stroke 和 stroke-width 属性控制如何显示形状的轮廓。我们把圆的轮廓设置为 2px 宽,黑边框。

fill 属性设置形状内的颜色。我们把填充颜色设置为红色。

关闭标签的作用是关闭 SVG 元素和文档本身。

svg文件嵌入html文档
  • 使用<embed>标签
<!--pluginspage属性指向下载的插件-->
<embed src="rect.svg" width="300" height="100" 
type="image/svg+xml"
pluginspage="http://www.adobe.com/svg/viewer/install/" />
  • 使用<object>标签
    它是 HTML 4 的标准标签,被所有较新的浏览器支持。它的缺点是不允许使用脚本。
<!--codebase属性指向下载的插件-->
<object data="rect.svg" width="300" height="100" 
type="image/svg+xml"
codebase="http://www.adobe.com/svg/viewer/install/" />
  • 使用<iframe>标签
    它可工作在大部分的浏览器中。
<iframe src="rect.svg" width="300" height="100">
</iframe>

Ok,补充完毕!

使用data url

DataURL是一种对文件进行编码,并将编码后的内容嵌入及呈现在另一个文件中的规范/协议。
目前DataURL用得最多的领域是把图片文件转化成DataURL(此时,这个DataURL就是这个图片的所有内容)并在网页上利用<img>直接输出,而非给<img>指定文件路径让浏览器另行下载。

DataURL的格式是怎么样的?
data:[<mediatype>][;base64],<data>
示例1:data:,Hello%2C%20World! //简单的text/plain类型数据
示例2:data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D //base64编码过的text/plain类型数据
示例3:data:image/jpg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4QLQRXhp…… //base64编码过的jpg图片,由于数据太长,用省略号代替
Data Url适用场景
  • 当访问外部资源很麻烦或受限时
  • 当图片是在服务器端用程序动态生成,每个访问用户显示的都不同时
  • 当图片的体积太小,占用一个HTTP会话不是很值得时
Data Url缺点
  • Base64编码的数据体积通常是原数据的体积4/3,也就是Data URL形式的图片会比二进制格式的图片体积大1/3。
  • Data URL形式的图片不会被浏览器缓存,这意味着每次访问这样页面时都被下载一次。这是一个使用效率方面的问题——尤其当这个图片被整个网站大量使用的时候。
    在CSS里使用Data Url就可解决浏览器不能缓存的问题。所有浏览器都会积极的缓存CSS文件来提高页面加载效率。

使用图标字体、雪碧图和图片懒加载技术来进行优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值