在网页中添加矢量图形,

  使用矢量图形在很多情况下,效果较好,拥有较小的文件尺寸,高度缩放,下面具体讲解如何在网页中添加矢量图形

  位图和矢量图

  位图文件包含了每个像素的位置和色彩信息,流行的位图格式包括Bitmap(.bmp),PNG(.png),JPEG(.jpg)和GIF(.gif)

  矢量图使用算法来定义,一个矢量图包含了图形和路径的定义,电脑可以根据这些定义计算出他们在屏幕上时呈现的样自,SVG用于创造精彩的web矢量图形。矢量图相对于同样的位图有更小的体积,因为仅需存储少量的算法,而不是逐个存储每个像素的信息。

  SVG的定义

SVG用于描述矢量图形的XML语言,基本上时像HTML一样的标记,用于图形,有一些简单元素来出创建简单图形。<circle><rect><feColorMatrix>(变换矩阵转换颜色) <animate>矢量图形的动画部分,<mask>在图像顶部应用蒙版。下面展示i一个简单的例子:

<svg version="1.1" baseProfile="full" width="300" height="2000" xmlns="http://www.w3.org/2000.svg">

  <rect width="100%" height="100%" fill="back"  />

  <circle  cx="150" cy="100" r="90"  fill="blue" />

</svg> 可以使用illustrator来创建各种插图,

SVG其他优点,矢量图形中的文本仍然可访问利于SEO,可以很好的适应样式/脚本。缺点 ,SVG非常容易变得复杂,文件大小会增加也会占用浏览器很长的处理时间。

SVG可能比栅格图像更难创建,取决于创建那种图像,SVG从IE9开始支持,因此光栅图形跟适合照片那样复杂精密的图像。

  将SVG添加到页面,使用img快捷方式,用src属性引用SVG。示例如下:

<img
src="equilateral.svg"
alt="triangle with all three sides equal"
height="87px"
width="100px" />

优点,快速,熟悉的图像语法,alt属性提供的内置文本等效,可以通过a元素嵌套img使图像成为超链接。  缺点,无法使用js实现操作图像,如果要操作样式必须内联CSS样式,外部样式不起作用,也不能用CSS伪类来重设图像样式(:focus)

  兼容性,对于不支持SVG IE8及更低版本,Android2.3及更低版本的浏览器,可以从src属性引用png或jpg,并使用srcset属性,只有最近的浏览器才能识别来引用SVG,这样支持SVG的浏览器将使用SVG,较旧的浏览器将加载PNG, 同样也可以通过CSS来讲SVG设置成背景图像,

background:url("fallback.png") np-repeat cener;

background-image:url("image.svg");

background-size:contain;

同样这种方式引入的SVG无法被js操作,样式设置也有了限制,限于内联样式。

引用SVG时,确保内联SVG即在标签内,优点,SVG内联减少HTTP请求,减少加载时间。

使用id或class选定SVG元素,添加央视规则。内联SVG唯一可以让CSS与其交互,CSS动画的方法,同样也可以包裹在a元素里,成为超链接。

缺点:多次使用导致资源密集难以维护,  SVG增加HTML文件大小,  浏览器不能像缓存普通图片一样缓存内联SVG,  在<foreignObject>元素中 包含回退,支持SVG的浏览器让然会下载后备图像。

  使用iframe嵌入SVG 像在网页中打开网页一样,打开SVG图像,

<iframe src="triangle.svg" width="500" height="500" sandbox>
<img src="triangle.png" alt="Triangle with three unequal sides" />
</iframe>

来分析下这种情况的优缺点,iframe有回退机制,如果浏览器不支持iframe,则只会显示回退,此外,除非SVG和您的当前网页有相同的origin,否则不能在主页面上使用js操作SVG.

最新文章

  1. 便捷的方式在手机上查看Unity3D的Console Log(调试信息)
  2. PIL中分离通道发生“AttributeError: &#39;NoneType&#39; object has no attribute &#39;bands&#39;”
  3. YY前端课程3
  4. 学习C语言常用的几个网站
  5. C# String.Format大全 去 decimal 后面的 0
  6. 135. Candy
  7. 在php中使用Memcache
  8. [IOI1999]花店橱窗布置(DP路径记录)
  9. OC基础15:内存管理和自动引用计数
  10. java数据类型与二进制
  11. grunt-contrib-connect自动刷新html页面
  12. 别再写 bug 了,避免空指针的 5 个案例!
  13. SQL注入检测
  14. 逆袭之旅DAY16.东软实训.Oracle.序列
  15. Selenium自动化测试Python三:WebDriver进阶
  16. 基于约束的SQL攻击
  17. 线程中sleep方法和wait方法有什么区别?(转)
  18. 删除maven本地库中下载不完全的jar包
  19. 根据经纬度坐标计算距离-python
  20. joel 相关

热门文章

  1. 关于操作HDFS的一个问题
  2. DC综合简单总结(2)
  3. boston_housing-多分类问题
  4. 前端笔记知识点整合之JavaScript(四)关于函数、作用域、闭包那点事
  5. A - Alice&#39;s Print Service ZOJ - 3726 (二分)
  6. c#操作Excel模板,替换命名单元格或关键字形成报表
  7. Docker----在Docker中部署Asp.net core2.1以及修改发布
  8. java请求URL带参之防XSS攻击
  9. listagg within group
  10. 模块2 hashlib;configparser; logging;