• HTML5 内联 SVG


    什么是SVG?

    • SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
    • SVG 用于定义用于网络的基于矢量的图形
    • SVG 使用 XML 格式定义图形
    • SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失
    • SVG 是万维网联盟的标准

    SVG 的历史和优势

    在 2003 年一月,SVG 1.1 被确立为 W3C 标准。

    参与定义 SVG 的组织有:太阳微系统、Adobe、苹果公司、IBM 以及柯达。

    与其他图像格式相比,使用 SVG 的优势在于:

    • SVG 可被非常多的工具读取和修改(比如记事本)
    • SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。
    • SVG 是可伸缩的
    • SVG 图像可在任何的分辨率下被高质量地打印
    • SVG 可在图像质量不下降的情况下被放大
    • SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)
    • SVG 可以与 Java 技术一起运行
    • SVG 是开放的标准
    • SVG 文件是纯粹的 XML

    SVG 的主要竞争者是 Flash。

    与 Flash 相比,SVG 最大的优势是与其他标准(比如 XSL 和 DOM)相兼容。而 Flash 则是未开源的私有技术。

    浏览器支持

    Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支持内联 SVG。

    把 SVG 直接嵌入 HTML 页面

    使用 <embed> 标签

    <embed> 标签被所有主流的浏览器支持,并允许使用脚本。

    注释:当在 HTML 页面中嵌入 SVG 时使用 <embed> 标签是 Adobe SVG Viewer 推荐的方法!然而,如果需要创建合法的 XHTML,就不能使用 <embed>。任何 HTML 规范中都没有 <embed> 标签。

    <embed src="rect.svg" width="300" height="100" 
    type="image/svg+xml"
    pluginspage="http://www.adobe.com/svg/viewer/install/" />

    注释:pluginspage 属性指向下载插件的 URL。

    使用 <object> 标签

    <object> 标签是 HTML 4 的标准标签,被所有较新的浏览器支持。它的缺点是不允许使用脚本。

    注释:假如您安装了最新版本的 Adobe SVG Viewer,那么当使用 <object> 标签时 SVG 文件无法工作(至少不能在 IE 中工作)!

    <object data="rect.svg" width="300" height="100" 
    type="image/svg+xml"
    codebase="http://www.adobe.com/svg/viewer/install/" />

    注释:codebase 属性指向下载插件的 URL。

    使用 <iframe> 标签

    <iframe> 标签可工作在大部分的浏览器中。

    <iframe src="rect.svg" width="300" height="100">
    </iframe>

    在 HTML5 中,您能够将 SVG 元素直接嵌入 HTML 页面中:

    <!DOCTYPE html>
    <html>
    <body>
    
    <svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190">
      <polygon points="100,10 40,180 190,60 10,60 160,180"
      style="fill:lime;stroke:purple;stroke-5;fill-rule:evenodd;" />
    </svg>
    
    </body>
    </html>

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

    SVG 形状

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

    • 矩形 <rect>
    • 圆形 <circle>
    • 椭圆 <ellipse>
    • 线 <line>
    • 折线 <polyline>
    • 多边形 <polygon>
    • 路径 <path>

    <rect> 标签

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

    <svg width="100%" height="100%" version="1.1"
    xmlns="http://www.w3.org/2000/svg">
    
    <rect width="300" height="100"
    style="fill:rgb(0,0,255);stroke-1;
    stroke:rgb(0,0,0)"/>
    
    </svg>

    代码解释:

    • rect 元素的 width 和 height 属性可定义矩形的高度和宽度
    • style 属性用来定义 CSS 属性
    • CSS 的 fill 属性定义矩形的填充颜色(rgb 值、颜色名或者十六进制值)
    • CSS 的 stroke-width 属性定义矩形边框的宽度
    • CSS 的 stroke 属性定义矩形边框的颜色

    <circle> 标签

    <circle> 标签可用来创建一个圆。

    <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>

    代码解释:

    cx 和 cy 属性定义圆点的 x 和 y 坐标。如果省略 cx 和 cy,圆的中心会被设置为 (0, 0)

    r 属性定义圆的半径。

    <ellipse> 标签

    <ellipse> 标签可用来创建椭圆。椭圆与圆很相似。不同之处在于椭圆有不同的 x 和 y 半径,而圆的 x 和 y 半径是相同的。

    <svg width="100%" height="100%" version="1.1"
    xmlns="http://www.w3.org/2000/svg">
    
    <ellipse cx="300" cy="150" rx="200" ry="80"
    style="fill:rgb(200,100,50);
    stroke:rgb(0,0,100);stroke-2"/>
    
    </svg>

    代码解释:

    • cx 属性定义圆点的 x 坐标
    • cy 属性定义圆点的 y 坐标
    • rx 属性定义水平半径
    • ry 属性定义垂直半径

    <line> 标签

    <line> 标签用来创建线条。

    <svg width="100%" height="100%" version="1.1"
    xmlns="http://www.w3.org/2000/svg">
    
    <line x1="0" y1="0" x2="300" y2="300"
    style="stroke:rgb(99,99,99);stroke-2"/>
    
    </svg>

    代码解释:

    • x1 属性在 x 轴定义线条的开始
    • y1 属性在 y 轴定义线条的开始
    • x2 属性在 x 轴定义线条的结束
    • y2 属性在 y 轴定义线条的结束

    <polygon> 标签

    <polygon> 标签用来创建含有不少于三个边的图形。

    <svg width="100%" height="100%" version="1.1"
    xmlns="http://www.w3.org/2000/svg">
    
    <polygon points="220,100 300,210 170,250"
    style="fill:#cccccc;
    stroke:#000000;stroke-1"/>
    
    </svg>

    代码解释:

    points 属性定义多边形每个角的 x 和 y 坐标

    <polyline> 标签

    <polyline> 标签用来创建仅包含直线的形状。

    <svg width="100%" height="100%" version="1.1"
    xmlns="http://www.w3.org/2000/svg">
    
    <polyline points="0,0 0,20 20,20 20,40 40,40 40,60"
    style="fill:white;stroke:red;stroke-2"/>
    
    </svg>

    <path> 标签

    <path> 标签用来定义路径。

    下面的命令可用于路径数据:

    • M = moveto
    • L = lineto
    • H = horizontal lineto
    • V = vertical lineto
    • C = curveto
    • S = smooth curveto
    • Q = quadratic Belzier curve
    • T = smooth quadratic Belzier curveto
    • A = elliptical Arc
    • Z = closepath

    注释:以上所有命令均允许小写字母。大写表示绝对定位,小写表示相对定位。

    <svg width="100%" height="100%" version="1.1"
    xmlns="http://www.w3.org/2000/svg">
    
    <path d="M250 150 L150 350 L350 350 Z" />
    
    </svg>

    上面的例子定义了一条路径,它开始于位置 250 150,到达位置 150 350,然后从那里开始到 350 350,最后在 250 150 关闭路径。

    (学习更全面的SVG,可往w3school_SVG教程

  • 相关阅读:
    papamelon 212. 区间调度问题(挑战程序设计竞赛)
    papamelon 257. 下界 lower_bound(挑战程序设计竞赛)
    202. 水洼计数 Lake Counting(挑战程序设计竞赛)
    papamelon 217. 栅栏修理 Fence Repair(挑战程序设计竞赛)
    papamelon 328. 电路板 Bridging signals(挑战程序设计竞赛)
    papamelon 201. 部分和问题
    papmelon 327. 木棒 Wooden Sticks(挑战程序设计竞赛) dp
    FCL中三个定时器的区别
    APM(异步编程模型)聚集技巧之等待直至完成聚集技巧
    C#的易失字段
  • 原文地址:https://www.cnblogs.com/lark-/p/10081354.html
Copyright © 2020-2023  润新知