参考:https://www.zhihu.com/question/21815101
https://blog.csdn.net/array_huang/article/details/50162525
哈哈,如果你压根不用图片,就不存在图片优化的问题了。像一些修饰效果,比如半透明、边框、圆角、阴影、渐变等,都可以通过css达成,而不需要更换图片。
SVG是基于矢量的,它会通过数学函数对形状和颜色进行计算,对它缩放不会失真。位图是基于像素的,缩放会失真。因为之前没有接触过SVG,这里补充一下SVG的基础知识。
SVG是纯粹的XML,SVG文件必须使用.svg后缀来保存。
<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 元素和文档本身。
标签
<embed src="rect.svg" width="300" height="100"
type="image/svg+xml"
pluginspage="http://www.adobe.com/svg/viewer/install/" />
标签
<object data="rect.svg" width="300" height="100"
type="image/svg+xml"
codebase="http://www.adobe.com/svg/viewer/install/" />
标签<iframe src="rect.svg" width="300" height="100">
iframe>
Ok,补充完毕!
DataURL是一种对文件进行编码,并将编码后的内容嵌入及呈现在另一个文件中的规范/协议。
目前DataURL用得最多的领域是把图片文件转化成DataURL(此时,这个DataURL就是这个图片的所有内容)并在网页上利用直接输出,而非给
指定文件路径让浏览器另行下载。
data:[][;base64],
示例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图片,由于数据太长,用省略号代替