矢量图形已广泛应用于印刷媒体中 。 在网站中,我们还可以使用SVG或可缩放矢量图形添加矢量图形。 根据W3.org的官方规范 ,SVG被描述为:

一种用于描述XML中的二维图形的语言。 SVG支持三种图形对象:矢量图形形状(例如,由直线和曲线组成的路径),图像和文本。

实际上 ,它 自1999年以来就存在,并且到2011年8月16日,它已成为W3C建议书 。 但是,SVG仍未得到充分利用,但是使用Vector而不是Bitmap在网站上提供图形或图像有很多优点。

SVG的优势

就在网站上提供图形服务而言,SVG与位图相比具有一些优势,其中包括:

分辨率独立

位图/光栅图形取决于分辨率 -它建立在像素上。 在特定缩放级别上调整大小时,所提供的图形将显得像素化。 对于本质上与分辨率无关的矢量图形,这不会发生,因为图形是通过数学方程式表示的,因此即使在Retina Display上 ,它也可以在任何缩放级别进行缩放,同时保持质量

减少HTTP请求

SVG可以直接嵌入带有svg标签HTML文档中,因此浏览器不需要发出请求即可提供图形。 这也可以提高网站的加载性能。

样式和脚本

直接嵌入svg标签也可以使我们轻松地通过CSS设置图形样式 。 我们可以像使用常规HTML标签一样更改对象属性,例如背景颜色,不透明度,边框等。 同样,我们也可以通过JavaScript处理图形。

可以动画和编辑

当SVG对象使用动画元素或通过JavaScript库(如jQuery)时,可以对其进行动画处理。 SVG对象还可以使用任何文本代码编辑器或图形软件(如Inkscape ( 免费 )或Adobe Illustrator)进行编辑 。

文件较小

与具有类似图形表示的Bitmap相比,SVG的文件大小较小 。

使用SVG绘制基本形状

根据规范,我们可以使用SVG绘制一些基本形状,例如矩形,圆形,直线,椭圆形,折线和多边形 ,并且为了使浏览器呈现SVG图形,所有这些图形元素都需要插入<svg> ... </svg>标记。 让我们看下面的示例以获取更多详细信息:

线

要在SVG中画一条线 ,我们可以使用<line>元素。 该元素用于绘制一条直线,因此它将仅包含两个点startend

<svg>
<line x1="0" y1="0" x2="200" y2="200" stroke-width="1" stroke="rgb(0,0,0)"/>
</svg>

如上所示,线的起点坐标用前两个属性x1x2 ,而线的终点坐标用y1y2表示。

还有两个其他属性, strokestroke-width分别用于定义边框的颜色和边框的宽度。 另外,我们也可以内联样式定义这些属性,如下所示:

style="stroke-width:1; stroke:rgb(0,0,0);"

最终还是一样。

  • 查看演示“线”

折线

它几乎与<line>相似,但是通过<polyline>元素,我们可以绘制多条线,而不仅仅是一条线。 这是一个例子:

<svg>
<polyline points="0,0 50,0 150,100 250,100 300,150" fill="rgb(249,249,249)" stroke-width="1" stroke="rgb(0,0,0)"/>
</svg>
  • 查看演示“折线”

长方形

使用此<rect>元素绘制矩形也很简单。 我们只需要指定宽度和高度,就像这样:

<svg>
<rect width="200" height="200" fill="rgb(234,234,234)" stroke-width="1" stroke="rgb(0,0,0)"/>
</svg>
  • 查看演示“矩形”

我们还可以使用<circle>元素绘制一个圆。 在以下示例中,我们将创建一个半径为100的圆,该圆由r属性定义:

<svg>
<circle cx="102" cy="102" r="100" fill="rgb(234,234,234)" stroke-width="1" stroke="rgb(0,0,0)"/>
</svg>

前两个属性cxcy定义圆的中心坐标。 在上面的示例中,我们为xy坐标都设置了102 ,如果未指定这些属性,则将0用作默认值。

  • 查看演示“圆圈”

椭圆

我们可以用<ellipse>画一个椭圆。 它的工作原理与圆非常相似,但是这次我们可以使用rxry属性专门控制x线半径和y线半径;

<svg>
<ellipse cx="100" cy="50" rx="100" ry="50" fill="rgb(234,234,234)" stroke-width="1" stroke="rgb(0,0,0)"/>
</svg>
  • 查看演示“椭圆”

多边形

使用<polygon>元素,我们可以绘制形状的多个侧面,例如三角形,六边形甚至矩形。 这是一个例子:

<svg>
<polygon points="70.444,218.89 15.444,118.89 70.444,18.89 180.444,18.89 235.444,118.89 180.444,218.89" fill="rgb(234,234,234)" stroke-width="1" stroke="rgb(0,0,0)"/>
</svg>
  • 查看演示“多边形”

使用矢量图形编辑器

如您所见,使用HTML的 SVG绘制简单的对象非常容易。 但是,当对象变得更复杂时,这种做法已不再是理想的选择,并且会让您头疼。

幸运的是,如上所述,我们可以使用矢量图形编辑器(例如Adobe IllustratorInkscape)来完成这项工作。 如果您熟悉这些软件,那么使用GUI绘制对象肯定比用HTML标签自己编写图形要容易得多。

如果使用Inkscape ,则可以将矢量图形另存为纯SVG,然后在文本代码编辑器中将其打开。 现在,您应该在文件中找到SVG代码。 复制所有代码并将其粘贴到HTML文档中。

或者,您也可以通过以下元素之一嵌入.svg文件: embediframeobject

<object data="images/ipod.svg" type="image/svg+xml"></object>

结果最终将是相同的。

在此示例中,我使用OpenClipArt.org的 Apple iPod 。

  • 查看演示“ iPod”

浏览器支持

关于浏览器支持,除IE8和更早版本外, 所有主要浏览器都很好地支持SVG 。 但是可以通过这个名为Raphael.jsJavaScript库解决此问题。 为了使事情变得容易,我们将使用ReadySetRaphael.com这个工具将SVG代码转换为Raphael支持的格式。 这是如何做。

首先,下载Raphael.js库并将其包含在HTML文档中。 然后,将.svg文件上传到站点,将生成的代码复制并粘贴到以下加载function

window.onload=function() { //the Raphael code goes here
}

body标签内,将以下具有rsr id属性的div放入;

<div id="rsr"></div>

就是这样,您完成了。 从下面的链接中查看示例。

  • 查看演示“ Raphael”

最后的想法

这就是SVG的基础。 我们希望您现在对这个主题有一个合理的了解。 这是针对任何屏幕分辨率(即使是在Retina显示屏上使用)优化站点的最佳方法。

与往常一样,如果您是一个有冒险精神的人,在这里我们将提供更多参考资料和讨论以更深入地研究这个主题。

  • SVG入门 – W3学校
  • 为什么不使用SVG? – NetTuts

感谢您的阅读,我们希望您喜欢这篇文章。

  • 观看演示
  • 下载源

翻译自: https://www.hongkiat.com/blog/scalable-vector-graphic/

svg 缩放_研究:可缩放矢量图形(SVG)相关推荐

  1. python编辑svg文件_使用Python批量转换SVG文件为PNG或PDF文件

    使用Python批量转换SVG文件为PNG或PDF文件 使用Python批量转换SVG文件为PNG或PDF文件 使用模块 1 模块单独使用 2 模块用于代码 实例 1 命令行方式 2 python脚本 ...

  2. 网页缩放与窗口缩放_为什么即使缩放会议说加密会议也没有加密?

    网页缩放与窗口缩放 缩放加密 (Zoom Encryption) End-to-end encryption on Zoom is what the world is criticising Zoom ...

  3. svg 动画_根据AI导出的SVG path制作SVG线条动画

    点击右上方红色按钮关注"web秀",让你真正秀起来 前言 首先祝大家2019新年快乐,万事大吉,猪事顺利,阖家欢乐. 前面文章SVG 线条动画基础入门知识学习到了基础知识,现在来给 ...

  4. lisp xy轴不等比缩放_解决高缩放等级下的抖动问题

    最近看到 deck.gl 在 medium 上的一篇文章,介绍了解决高缩放等级下「抖动」问题的思路. How (sometimes) assuming the Earth is "flat& ...

  5. html缩放背景不缩放_如何在缩放视频通话期间隐藏背景

    html缩放背景不缩放 If you work from home but still need to attend video conferences, you can use a virtual ...

  6. python编辑svg文件_如何从Python修改SVG文件的属性?

    我有一个由地图数据可视化软件'Kartograph'生成的svg文件.它包含表示地图上区域的大量路径.这些路径每个都有一些数据字段: 因此我不必每次都生成一个新的svg文件,我想在python中修改一 ...

  7. html缩放背景不缩放_如何将缩放背景更改为有趣的照片或视频

    html缩放背景不缩放 People often use Zoom for work and conference calls, but it doesn't have to be all work ...

  8. cad缩放_这个CAD缩放技巧太实用!

    左下角阅读原文看CAD视频 好课推荐: 1.CAD2014:点击查看 2.室内&全屋:点击查看 3.CAD2019:点击查看4.CAD2018:点击查看5.Bim教程:点击查看6.室内手绘:点 ...

  9. 基于html5的矢量图绘制方法研究,HTML5程序设计-绘制可伸缩矢量图形SVG.pdf

    HTML5基础教程(第2版) 授课教师: 职务: 第7章 绘制可伸缩矢量图形(SVG ) 课程描述 SVG是Scalable Vector Graphics的缩写,即可伸缩矢量 图形,它使用XML格式 ...

最新文章

  1. 数字证书及网络加解密原理
  2. mac系统下安装、启动、停止mongodb
  3. 【复习】服务器主板——Leez P710
  4. Windows平台编译Webkit
  5. Oralce中备份,还原数据库
  6. [leedcode][409][java]
  7. 学python必会英语单词_Python必备常用英语词汇(一)
  8. 开发指南专题七:JEECG微云快速开发平台查询HQL过滤器
  9. 当程序员那么痛苦,我来告诉你他们为什么还没放弃?
  10. 标题:DKhadoop大数据处理平台监控数据介绍
  11. 【SIGIR2020】信息检索对话中混合主动性和协同性的分析
  12. NRPE: Unable to read output 问题处理总结
  13. DSS的Windows版本如何安装呢?
  14. 微信小程序开发【前端+后端(Java)】附完整源码
  15. 5G网络5G技术初探
  16. ios百度地图开发之路径规划
  17. 2019牛客暑期多校训练营(第四场)----E- triples II
  18. 微信小程序:简洁UI好玩的文字转换emoji表情
  19. MMC子系统调用过程浅析(Core层)
  20. vs 设置护眼背景颜色

热门文章

  1. 【小程序与公众号】微信小程序九宫格抽奖(抽奖完全随机)
  2. C# serialPort的DataReceived事件无法触发 ,用的霍尼韦尔的扫码枪并且装了相应的USB转串口驱动。...
  3. 二级考试内容之Java
  4. 超级电容与普通电容的区别
  5. Windows10 PyTorch1.5 安装教程 | 很详细
  6. 书籍推荐《4点起床》舒适而高效的作息方式
  7. Git提示Another git process seems to be running in this repository, e.g. an editor opened by ....错误
  8. Packet Tracer 学习笔记(一)简单使用
  9. 微信消息防撤回,这次做点不一样的
  10. ADI联手好络维打造医疗级可穿戴心电监测解决方案,随时随地精准聆听“心动”的信号