HTML5矢量图形SVG

1.1.1 什么是SVG?

SVG 意为可缩放矢量图形(Scalable Vector Graphics)。

SVG是一种使用xml技术描述图形的语言,使用 XML 格式定义图像。

  • SVG指可伸缩矢量图形

  • SVG用于定义用于网络的基于矢量的图形

  • SVG是一种基于xml语法的图像格式

  • SVG图像在放大的情况下图形不会失真

  • SVG的优点

    SVG与canvas的区别:

    SVG

    不依赖分辨率

    支持事件处理器(可绑定事件)

    最适合大型渲染区域的应用程序(如:百度地图)

       canvas

           依赖分辨率

          不支持事件处理器

          最适合图像密集型的应用程序(游戏)

    • SVG是可伸缩的,高保真图形、无限放大且不会失真

    • SVG可通过文本编辑器创建和修改

    • SVG可被搜索、索引、脚本化和压缩

    • SVG可在任何的分辨率下被高质量地打印

    • SVG文件体积较小

    • SVG可在图像质量不下降的情况下被放大

1.1.2 vscode编辑器中的插件

vscode 写svg标签以及svg对应的基本图标标签,我们使用插件---SVG

vscode 预览,我们使用插件---SVG Snippets

方法:

输入 svg-对应的标签名

例如:

svg-svg ,会生成svg标签

svg-circle,会生成circle标签

svg-img,会生成image标签

等等

vscode 查看svg图形---SVG Viewer(查看svg图)

      Svg Preview:效果预览,需要选中.svg` 后缀的文件,右上角才会有按钮进入预览。

1.1.3 SVG在html中

在html中,使用svg,首先必须使用<svg>标签

使用<svg width=""  height="" style=""  xmlns="http://www.w3.org/2000/svg"  version="1.1"><svg>元素

使用<svg>元素绘制图像时,这些元素必须定义<svg>元素中

写svg标签的时候,在html页面中直接 输入 svg-svg+回车。

直接在html嵌入SVG代码

<svg width="600" height="600" style="border:1px solid blue;"
        viewBox="" version="1.1"
        xmlns="http://www.w3.org/2000/svg"
        xmlns:xlink="http://www.w3.org/1999/xlink">
   <circle cx="100" cy="100" r="40" fill="red" stroke="green" style=""/>
   <circle cx="300" cy="300" r="60" fill="red" stroke="green" style=""/>
   <circle cx="500" cy="500" r="30" fill="red" stroke="green" stroke-width="2" style=""/>
   <!-- <image xlink:href="" x="" y="" height="" width=""/> -->
   </svg>

预览:

 

Scalable Vector Graphics (SVG) 2   指定的标准

我们可以给svg标签,添加边框线,style="border: 1px solid blue;"让我们看到整体的svg的宽和高。

我们可以给svg标签,指定宽度和高度,width="600" height="600"。如果我们不指定宽度和高度。当前这个svg就是默认宽度椒300,高度是150, 和canvas画布的默认宽度和高度是一样的。

注意:在Firefox、Internet Explorer9、谷歌Chrome和Safari中,你可以直接在HTML嵌入SVG代码。

链接到SVG文件

首先创建circle1.svg文件,里面代码如下:

<svg width="400" height="400" style="border:1px solid blue;margin:0 auto;"
     viewBox="" version="1.1"
     <!-- xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"> -->
     <circle cx="150" cy="150" r="100" fill="orange" stroke="pink" stroke-width="5" style=""/>
   
</svg>

 预览:

 然后在html文件中,写a超链接标签,用 <a> 标签链接到一个 SVG 文件:链接到 SVG 文件,代码如下所示:

<a href="circle1.svg">查看 SVG 文件</a>

 预览:

注意:

如果你的svg标签上,没有 以下属性设置,访问svg文件时,会报bug。

 <svg  viewBox="" version="1.1"
  xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink"  />

 报的错误如下所示:

 

svg代码也可以写在一个独立的文件中,然后在html文件中,用<img>、<object>、<embed>、<iframe>等标签插入网页

<embed src="circle1.svg" type="image/svg+xml" />

注意:<embed>

  • 优势:所有主要浏览器都支持,并允许使用脚本

  • 缺点:不推荐在HTML4和XHTML中使用(但在HTML5允许)

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

 

注意:<object>

  • 优势:所有主要浏览器都支持,但是有些浏览器需要安装插件才支持,并支持HTML4,XHTML和HTML5标准

  • 缺点:不允许使用脚本。

  • 如果你用object标签去插入svg文件,我们首先用ie9去预览查看效果。

<iframe src="circle1.svg"></iframe>

 

注意:<iframe>

优势:所有主要浏览器都支持,并允许使用脚本缺点:不推荐在HTML4和XHTML中使用(但在HTML5允许)

其中embed和object设置边框线的现象

<a href="./cr1.svg">查看svg文件</a> 
   <br><br><br>
   <iframe src="./cr1.svg" width="400" height="400" frameborder="0"></iframe>
   <br><br><br>
   <embed src="./cr1.svg" type="image/svg+xml" style="border:10px dashed red">

    <br><br><br>
    <object data="./cr1.svg" type="image/svg+xml"></object>

预览:

SVG常见属性

svg中的x、y、width和height属性定义这段SVG代码所表达的数据在绘制时所占用的空间大小(可视区大小);svg中viewBox (0 0 200 200) :0 0 表示x轴和y有的起始位置,即可视区View中哪个位置开始显示(可见),后面200, 200 表示长和宽但是只是一个数量

用法要设置4个值:*viewbox="x, y, width, height"*,例子:

这里定义的画布尺寸是100x100px。但是,viewBox属性定义了画布上可以显示的区域:从(0,0)点开始,200宽200高的区域。这个200x200的区域,会放到100x100的画布上显示。于是就形成了缩小两倍的效果。

viewbox 里定义的,也就是可视区可见的;坐标 (0, 0) 说明在左上角开始截,100 x 100 就是这个框框的宽x高

 

<svg width="400" height="400" style="border:1px solid blue"
     viewBox="0 0 200 200" version="1.1"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
     <circle cx="150" cy="150" r="100" fill="orange" stroke="pink" stroke-width="5" style=""/>
   
</svg>

注意:

你绘制的图像的大小,不能比 我们指定的可视区域的viewBox="0 0 200 200"大小要大。 绘制的图像和 svg的宽度和高度没关系。

1.1.4 SVG有一些预定义的形状元素

SVG有一些预定义的形状元素,可被开发者使用和操作:

  • 矩形 <rect>

  • 圆形 <circle>

  • 椭圆 <ellipse>

  • 线 <line>

  • 折线 <polyline>

  • 多边形 <polygon>

  • 路径 <path>

矩形元素

<rect> 标签可用来创建矩形,以及矩形的变种

  • rect 元素的 width 和 height 属性可定义矩形的高度和宽度

  • style 属性用来定义 CSS 属性

  • CSS 的 fill 属性定义矩形的填充颜色(rgb 值、颜色名或者十六进制值)

  • CSS 的 stroke-width 属性定义矩形边框的宽度

  • CSS 的 stroke 属性定义矩形边框的颜色

我们可以用属性,去设置这个矩形的边框线和填充色:

<svg width="" height=""
     viewBox="" version="1.1"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
    <rect x="" y="" width="" height="" style=""/>
</svg>

我们可以用style行内样式,去设置这个矩形的边框线和填充色:

<svg width="500" height="500"
     viewBox="" version="1.1"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
     <rect x="100" y="200" width="300" height="100" fill="blue" stroke="pink" stroke-width="2" style=""/>
     <rect x="100" y="0" width="300" height="100"  stroke="pink" stroke-width="2" style="fill:green; stroke:orange;stroke-width:10px;"/>
     
</svg>

预览:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值