SVG学习

2019-12-04  本文已影响0人  WhiteStruggle

svg

MDN较为详细

地址:https://developer.mozilla.org/zh-CN/docs/Web/SVG

svg: scalable vector graphics 可缩放矢量图

  1. 该图片使用代码书写而成
  2. 缩放不会失帧
  3. 内容轻量

如何使用

svg 可以嵌入浏览器,也可以单独成为一个文件

xml语言,svg使用该语言定义

书写svg

基本格式举例:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="500" height="500" style="background:#999" xmlns="http://www.w3.org/2000/svg">
    <rect width="100" height="100" x="50" y="50" fill="red" stroke="black" stroke-width="5"  />
    <circle cx="250" cy="100" r="50" fill="red" stroke="black" stroke-width="5" />
    <ellipse rx="50" ry="100" cx="400" cy="150" fill="red" stroke="black" stroke-width="5"/>
    <line x1="47.5" x2="400" y1="50" y2="50" stroke="black" stroke-width="10"/>
    <polyline points="50 150 250 150 400 250" fill="none" stroke="black" stroke-width="10" />
    <polygon points="100 500 200 250 300 500 50 350 350 350  " fill="red" stroke="black" stroke-width="10" />
</svg>

fill,填充颜色,取值transparent(透明)
stroke,边框
stroke-width,边框宽度

矩形

<rect width="100" height="100" x="50" y="50" fill="red" stroke="black" stroke-width="5"  />

宽,高,x坐标,y坐标,填充色,边框,边框宽度

圆形

<circle cx="250" cy="100" r="50" fill="red" stroke="black" stroke-width="5" />

cx圆心X坐标

cy圆心y坐标

椭圆

<ellipse rx="50" ry="100" cx="400" cy="150" fill="red" stroke="black" stroke-width="5"/>

rx横向椭圆半径

ry纵向椭圆半径

线条

<line x1="47.5" x2="400" y1="50" y2="50" stroke="black" stroke-width="10"/>

由两个坐标连接

折线

<polyline points="50 150 250 150 400 250" fill="none" stroke="black" stroke-width="10" />

由坐标依次连接

多边形

画五角星

<polygon points="100 500 200 250 300 500 50 350 350 350  " fill="red" stroke="black" stroke-width="10" />

由坐标依次连接

路径

A(椭圆)的使用:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="500" height="500" style="background:#999" xmlns="http://www.w3.org/2000/svg">
    <path d="M250 50 A100 100 0 0 1 250 250 A100 100 0 0 0 250 450 A 200 200 0 0 1 250 50" fill="black"  />
    <circle cx="250" cy="150" r="30" fill="white" />
    <path d="M250 50 A100 100 0 0 1 250 250 A100 100 0 0 0 250 450 A 200 200 0 0 0 250 50" fill="white"  />
    <circle cx="250" cy="350" r="30" fill="black" />
</svg>

stroke属性

1、stroke

边框色,属性定义一条线,文本或元素轮廓颜色

2、stroke-width

文本或元素轮廓厚度

3、stroke-linecap

Stroke-linecap属性定义线段端点的风格,
属性值:

stroke-linecap="square"

4、stroke-dasharray

用于创建虚线

举例:stroke-dasharray="20,10,5,5,5,10"

5、stroke-opacity

属性设置边框的透明度,值的范围从0到1,

举例:stroke-opacity="1"

6、stroke-linejoin

属性设置线条拐弯处的连接方式,属性值:

举例:stroke-linejoin="bevel"

线性渐变——linearGradient

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

<linearGradient> 标签的 id 属性可为渐变定义一个唯一的名称

fill:url(#red_green) fill="url(#red_green)"属性把 需要渐变的图形元素链接到此渐变

<linearGradient> 标签的 x1、x2、y1、y2 属性可定义渐变的开始和结束位置

渐变的颜色范围可由两种或多种颜色组成。每种颜色通过一个 <stop> 标签来规定。offset 属性用来定义渐变的开始和结束位置。

<!--五角星渐变染色-->
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg width="500" height="500" style="background:#999" version="1.1"
xmlns="http://www.w3.org/2000/svg">
    <polygon points="150 350 250 100 350 350 100 200 400 200  " style="fill:url(#red_green)" />
    <defs>
        <linearGradient id="red_green" x1="0%" y1="100%" x2="0%" y2="30%">
            <stop offset="0%" stop-color="red" stop-opacity="1"/>
            <stop offset="100%" stop-color="green" stop-opacity="1"/>
        </linearGradient>
    </defs>
</svg>
<!-- 正方形渐变 -->
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="500" height="500" style="background:#999" version="1.1" xmlns="http://www.w3.org/2000/svg">
    <rect x="150" y="150" width="200" height="200" style="fill:url(#blue_red)" />
    <defs>
        <linearGradient id="blue_red" x1="0%" y1="10%" x2="0%" y2="100%">
            <stop offset="0%" stop-color="blue" stop-opacity="1">
            </stop>
            <stop offset="100%" stop-color="red" stop-opacity="1">
            </stop>
        </linearGradient>
    </defs>
</svg>

放射性渐变——radialGradient

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

cx、cy 和 r 属性定义外圈,fx 和 fy 定义内圈 渐变的颜色范围可由两种或多种颜色组成

每种颜色通过一个 <stop> 标签来规定。offset 属性用来定义渐变的开始和结束位置。

举例:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="500" height="500" style="background:#999" xmlns="http://www.w3.org/2000/svg">
    <defs>
        <radialGradient id="red_green" cx="100%" cy="10%" r="70%" fx="50%" fy="50%" >
            <stop offset="0%" stop-color="red" stop-opacity="1" ></stop>
            <stop offset="100%" stop-color="green" stop-opacity="1" ></stop>
        </radialGradient>
    </defs>
    <rect width="200" height="200" x="150" y="150" style="fill:url(#red_green)" />
</svg>

svg滤镜

在 SVG 中,可用的滤镜有:

必须在 <defs> 标签中定义 SVG 滤镜

<filter> 标签必须嵌套在 <defs> 标签内

上一篇下一篇

猜你喜欢

热点阅读