在网页中添加矢量图形,

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

  位图和矢量图

  位图文件包含了每个像素的位置和色彩信息,流行的位图格式包括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.

HTML入门11的更多相关文章

  1. Cesium入门11 - Interactivity - 交互性

    Cesium入门11 - Interactivity - 交互性 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ ...

  2. Kotlin入门(11)江湖绝技之特殊函数

    上一篇文章介绍了Kotlin对函数的输入参数所做的增强之处,其实函数这块Kotlin还有好些重大改进,集中体现在几类特殊函数,比如泛型函数.内联函数.扩展函数.尾递归函数.高阶函数等等,因此本篇文章就 ...

  3. springcloud 入门 11 (Hystrix Dashboard)

    hystrix: 断路器我在前面已经介绍,不了解的可以参考 :springcloud 入门 6 (断路器hystrix)  关于搭建,测试我都在这里面进行说明了,这章介绍的是  Hystrix Das ...

  4. SVG 2D入门11 - 动画

    交互性      SVG拥有良好的用户交互性,例如:1. SVG能响应大部分的DOM2事件.2. SVG能通过cursor良好的捕捉用户鼠标的移动.3. 用户可以很方便的通过设置svg元素的zoomA ...

  5. [转]ASP.NET MVC 入门11、使用AJAX

    在ASP.NET MVC beta发布之前,M$就宣布支持开源的JS框架jQuery,然后ASP.NET MVC beta发布后,你建立一个ASP.NET MVC beta的项目后,你可以在项目的sc ...

  6. C# 经典入门11章,比较

    1类型比较 所有的类懂从System.Object中继承了GetType()方法,这个方法和typeof()运算符一起使用,可以确定对象的类型.例如: if(myObj.GetType()==type ...

  7. Linux入门(11)——Ubuntu16.04安装texlive2016并配置texmaker和sublime text3

    安装过程中需要调用 Perl 的模块 Digest::MD5 来检测 ISO 文件的完整性:升级过程中界面需要调用 Perl 的模块 Tk: sudo apt-get install libdiges ...

  8. JAVA入门[11]-jsp几点基础语法

    一.include <%@include file="copyright.jsp"%> <jsp:include page="copyright.jsp ...

  9. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十一 || AOP自定义筛选,Redis入门 11.1

    代码已上传Github+Gitee,文末有地址 书说上文<从壹开始前后端分离[ .NET Core2.0 Api + Vue 2.0 + AOP + 分布式]框架之十 || AOP面向切面编程浅 ...

随机推荐

  1. web前端效率提升之禁用缓存-遁地龙卷风

    1.使用场景 我用的是Chrome,Ctrl+F5并不是在任何时候都能清楚缓存,这样很影响效率,下面的方式可以在开发者工具打开的使用禁止浏览器缓存任何资源, 还是出现不及时更新的情况,就要考虑服务器是 ...

  2. L1-Day11

    1.问问他能不能来.[我的翻译]Ask him wether he can come.[标准答案]Ask him whether/if he can come.[对比分析]天呐 whether都能拼写 ...

  3. Angular_上拉刷新

    1.先不做上拉触发,用button模拟一下,触发函数 export class StudyComponent implements OnInit { /*列表数据流 */ list$: Observa ...

  4. ‘Host’ is not allowed to connect to this mysql server

    ‘Host’ is not allowed to  connect to this mysql server mysql 数据库不允许远程连接 方法一:修改 host 表 进入mysql数据库,选择m ...

  5. 使用scrapy爬虫,爬取起点小说网的案例

    爬取的页面为https://book.qidian.com/info/1010734492#Catalog 爬取的小说为凡人修仙之仙界篇,这边小说很不错. 正文的章节如下图所示 其中下面的章节为加密部 ...

  6. MailKit系列之转发电子邮件

    原文:http://www.it1352.com/429181.html 问题 我尝试通过MailKit访问一个IMAP账号,我设法下载邮件(作为的MimeMessage),并在某些时候我需要转发给其 ...

  7. 帆软报表(finereport)使用row_number ()进行组内排序

    ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号.在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也 ...

  8. JavaScript 变量声明:var、let、const

    1. 概述 1.1 说明 在ES5 声明变量的方法:var命令和function命令. 在ES6 声明变量的方法:var命令.function命令.let命令.const命令.import命令.cla ...

  9. js原型链+继承 浅析

    名称:    prototype--原型对象    __proto__--属性 原型链与继承网上搜索定义,看起来挺绕的 .先说继承: 所有的对象实例都可以共享原型对象包含的属性和方法  例如一个实例A ...

  10. Qt-c++桌面编程报错:qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "",已解决

    语言:c++ 编译库:Qt GUI,qt5.12.1 软件类型:Qt application,qt桌面软件 运行平台:window 10 ?按照[https://www.devbean.net/201 ...