HTML5 SVG

作者: 河的左岸 | 来源:发表于2017-06-01 22:56 被阅读0次

    实例1: 绘制一个红色圆形

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="li.ml">
        <title>Test</title>
    </head>
    
    <body>
    
    <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>
    
    </body>
    </html>
    
    运行效果

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

    r 属性定义圆的半径。

    实例2:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="author" content="li.ml">
        <title>Test</title>
    </head>
    <body>
    
    <svg width="100%" height="300px" version="1.1"
    xmlns="http://www.w3.org/2000/svg">
    
        <defs>
            <linearGradient id="orange_red" x1="0%" y1="0%" x2="100%" y2="0%">
            <stop offset="0%" style="stop-color:rgb(255,255,0);
            stop-opacity:1"/>
            <stop offset="100%" style="stop-color:rgb(255,0,0);
            stop-opacity:1"/>
        </linearGradient>
        </defs>
    
        <ellipse cx="200" cy="190" rx="85" ry="55"
        style="fill:url(#orange_red)"/>
    
    </svg>
    
    
    </body>
    
    </html>
    
    运行效果

    代码解释:

    <linearGradient> 标签的 id 属性可为渐变定义一个唯一的名称
    fill:url(#orange_red) 属性把 ellipse 元素链接到此渐变
    <linearGradient> 标签的 x1、x2、y1、y2 属性可定义渐变的开始和结束位置
    渐变的颜色范围可由两种或多种颜色组成。每种颜色通过一个 <stop> 标签来规定。offset 属性用来定义渐变的开始和结束位置。
    

    渐变

    1.线性渐变

    <linearGradient> 可用来定义 SVG 的线性渐变。
    <linearGradient> 标签必须嵌套在 <defs> 的内部。<defs> 标签是 definitions 的缩写,它可对诸如渐变之类的特殊元素进行定义。

    线性渐变可被定义为水平、垂直或角形的渐变:

    当 y1 和 y2 相等,而 x1 和 x2 不同时,可创建水平渐变
    当 x1 和 x2 相等,而 y1 和 y2 不同时,可创建垂直渐变
    当 x1 和 x2 不同,且 y1 和 y2 不同时,可创建角形渐变
    

    2.放射渐变

    <radialGradient> 用来定义放射性渐变。
    <radialGradient> 标签必须嵌套在 <defs> 中。<defs> 标签是 definitions 的缩写,它允许对诸如渐变等特殊元素进行定义。

    实例3:高斯滤镜

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="author" content="li.ml">
        <title>Test</title>
    </head>
    <body>
    
    <svg width="100%" height="300px" version="1.1"
    xmlns="http://www.w3.org/2000/svg">
    
        <defs>
        <filter id="Gaussian_Blur">
        <feGaussianBlur in="SourceGraphic" stdDeviation="3" />
        </filter>
        </defs>
    
    
        <ellipse cx="200" cy="150" rx="70" ry="40"
        style="fill:#ff0000;stroke:#000000;
        stroke-width:2;filter:url(#Gaussian_Blur)"/>
    
    </svg>
    
    </body>
    </html>
    
    效果

    代码解释:

    <filter> 标签的 id 属性可为滤镜定义一个唯一的名称(同一滤镜可被文档中的多个元素使用)
    filter:url 属性用来把元素链接到滤镜。当链接滤镜 id 时,必须使用 # 字符
    滤镜效果是通过 <feGaussianBlur> 标签进行定义的。fe 后缀可用于所有的滤镜
    <feGaussianBlur> 标签的 stdDeviation 属性可定义模糊的程度
    in="SourceGraphic" 这个部分定义了由整个图像创建效果
    

    在 SVG 中,可用的滤镜有:

    feBlend
    feColorMatrix
    feComponentTransfer
    feComposite
    feConvolveMatrix
    feDiffuseLighting
    feDisplacementMap
    feFlood
    feGaussianBlur
    feImage
    feMerge
    feMorphology
    feOffset
    feSpecularLighting
    feTile
    feTurbulence
    feDistantLight
    fePointLight
    feSpotLight
    注释:您可以在每个 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 则是未开源的私有技术。

    什么是SVG?

    SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
    SVG 用来定义用于网络的基于矢量的图形
    SVG 使用 XML 格式定义图形
    SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失
    SVG 是万维网联盟的标准
    SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体

    相关文章

      网友评论

        本文标题:HTML5 SVG

        本文链接:https://www.haomeiwen.com/subject/lucyfxtx.html