svg基础知识学习与总结

svg

svg(Scalable Vector Graphics)是一种图像文件格式,是可缩放的矢量图像。
svg是用XML定义的语言,用来描述二维矢量及矢量/栅格图像。
不同于常规的jpg格式图像文件,缩放不会影响图像质量,不会失真模糊。并且可以直接用svg代码来描述图像,可以使用任何文字处理工具打开svg图像文件,随时可以插入到HTML中通过浏览器打开,通过代码编辑使svg图像具有交互功能。

早期浏览器不支持svg,需通脱< object >元素。
除了通过直接嵌入在html中,svg也可以当做.svg后缀文件作为普通图片通过标签引入至网页中,通过< img >、< object >元素展示svg图像的时候,svg就变成了另外一种图片格式,对于JavaScript开发来说不甚友好,更好的方式是直接将svg图片的代码嵌入到html文档中。

svg标签:

svg元素标签 作用
a 定义超链接
animate 动画元素放在形状元素的内部,用来定义一个元素的某个属性如何踩着时点改变。在指定持续时间里,属性从开始值变成结束值。
animateMotion 元素定义了一个元素如何沿着运动路径进行移动
animateTransform 元素变动了目标元素上的一个变形属性,从而允许动画控制转换、缩放、旋转或斜切。
circle 是一个SVG的基本形状,用来创建圆,基于一个圆心和一个半径
clipPath 定义一条剪切路径,可作为其他元素的 clip-path 属性的值。剪切路径限制了图形的可见范围。从概念上来说,如果图形超出了当前剪切路径所包围的区域,那么超出部分将不会绘制
color-profile 该元素允许描述用于图像的颜色配置文件
defs 允许我们定义以后需要重复使用的图形元素。 建议把所有需要再次使用的引用元素定义在defs元素里面。这样做可以增加SVG内容的易读性和可访问性。 在defs元素中定义的图形元素不会直接呈现
desc SVG绘画中的每个容器元素或图形元素都可以提供一个desc描述性字符串,这些描述只是纯文本的。如果当前的SVG文档片段在视媒体中呈现,desc元素不会呈现为图形的一部分。替代性提词既可以看到也可以听到,它显示了desc元素但是不会显示路径元素或者别的图形元素。desc元素提升了SVG文档的可访问性
discard
ellipse ellipse元素是一个SVG基本形状,用来创建一个椭圆,基于一个中心坐标以及它们的x半径和y半径
feBlend feBlend滤镜把两个对象组合在一起,使它们受特定的混合模式控制。这类似于图像编辑软件中混合两个图层。该模式由属性mode定义
feColorMatrix 该滤镜基于转换矩阵对颜色进行变换。每一像素的颜色值(一个表示为[红,绿,蓝,透明度] 的矢量) 都经过矩阵乘法 (matrix multiplated) 计算出的新颜色
feComponentTransfer 滤镜基元对每个像素执行颜色分量的数据重映射.它允许进行像亮度调整,对比度调整,色彩平衡或阈值的操作
feComposite 该滤镜执行两个输入图像的智能像素组合,在图像空间中使用以下Porter-Duff合成操作之一:over、in、atop、xor
feConvolveMatrix 元素应用了一个矩阵卷积滤镜效果
feDiffuseLighting 滤镜光照一个图像,使用alpha通道作为隆起映射
feDisplacementMap 映射置换滤镜,该滤镜用来自图像中从in2到空间的像素值置换图像从in到空间的像素值
feDistantLight 该滤镜定义了一个距离光源,可以用在灯光滤镜feDiffuseLighting元素或feSpecularLighting元素的内部
feDropShadow
feFlood 该滤镜用flood-color元素定义的颜色和flood-opacity元素定义的不透明度填充了滤镜子区域
feFuncA 滤镜,为它的父元素 feComponentTransfer 的输入图形的透明度(alpha)组件定义了变换函数
feFuncB 滤镜,为它的父feComponentTransfer元素的输入图形的蓝色成分定义了变换函数
feFuncG 滤镜,为它的父feComponentTransfer元素的输入图形的绿色成分定义了变换函数
feFuncR 滤镜,为它的父feComponentTransfer元素的输入图形的红色成分定义了变换函数
feGaussianBlur 滤镜对输入图像进行高斯模糊,属性stdDeviation中指定的数量定义了钟形
feImage 滤镜从外部来源取得图像数据,并提供像素数据作为输出(意味着如果外部来源是一个SVG图像,这个图像将被栅格化。)
feMerge 滤镜允许同时应用滤镜效果而不是按顺序应用滤镜效果
feMergeNode 拿另一个滤镜的结果,让它的父feMerge元素处理
feMorphology 该滤镜用来侵蚀或扩张输入的图像。它在增肥或瘦身效果方面特别有用
feOffset 该输入图像作为一个整体,在属性dx和属性dy的值指定了它的偏移量
fePointLight 光源元素
feSpecularLighting 该滤镜照亮一个源图形,使用alpha通道作为隆起映射
feSpotLight 是一种光源元素,用于SVG文件
feTile 输入图像是平铺的,结果用来填充目标。它的效果近似于一个pattern图案对象
feTurbulence 该滤镜利用Perlin噪声函数创建了一个图像
filter 作用是作为原子滤镜操作的容器。它不能直接呈现。可以利用目标SVG元素上的filter属性引用一个滤镜
foreignObject
g 元素g是用来组合对象的容器。添加到g元素上的变换会应用到其所有的子元素上。添加到g元素的属性会被其所有的子元素继承。此外,g元素也可以用来定义复杂的对象,之后可以通过use元素来引用它们
hatch
hatchpath
image 表现为图像文件或者其他SVG文件。svg图像格式转换软件支持JPEG、PNG格式,是否支持动图GIF不明确
line 是一个SVG基本形状,用来创建一条连接两个点的线
linearGradient 用来定义线性渐变,用于图形元素的填充或描边
marker 定义了在特定的path元素、line元素、polyline元素或者polygon元素上绘制的箭头或者多边标记图形
mask 用于定义这样的遮罩元素
mesh
meshgradient
meshpatch
meshrow
metadata 数据的结构化数据。SVG内容里面包含的元数据必须放在metadata元素里面
mpath 元素的mpath子元素使animateMotion 元素能够引用一个外部的path元素作为运动路径的定义
path 是用来定义形状的通用元素。所有的基本形状都可以用path元素来创建
pattern 使用预定义的图形对一个对象进行填充或描边,就要用到pattern元素
polygon 定义了一个由一组首尾相连的直线线段构成的闭合多边形形状。最后一点连接到第一点
polyline 是SVG的一个基本形状,用来创建一系列直线连接多个点。典型的一个polyline是用来创建一个开放的形状,最后一点不与第一点相连
radialGradient 用来定义径向渐变,以对图形元素进行填充或描边
rect 是SVG的一个基本形状,用来创建矩形,基于一个角位置以及它的宽和高。它还可以用来创建圆角矩形
script 一个SVG脚本元素等同于HTML中的script元素,因此这个位置是面向脚本的(例如,ECMAScript)。任何定义在script元素中的函数拥有一个跨当前文档的全局范围
set 可以用来设定一个属性值,并为该值赋予一个持续时间。它支持所有的属性类型, 包括那些原理上不能插值的, 例如值为字符串和布尔类型的属性
solidcolor
stop 一个渐变上的颜色坡度,是用stop元素定义的
style 元素样式表直接在SVG内容中间嵌入。SVG的style元素的属性与HTML中的相应的元素并无二致
svg 如果svg不是根元素,svg 元素可以用于在当前文档(比如说,一个HTML文档)内嵌套一个独立的svg片段 。 这个独立片段拥有独立的视口和坐标系统
switch 对它的直接子元素上的属性requiredFeatures、属性requiredExtensions 和 属性systemLanguage按照顺序进行评估,然后处理和呈现第一个评估为true的子元素。 其他子元素会被绕过不会被呈现。如果某个子元素是容器元素比如说是一个 元素,那么整个子树会被处理呈现或者全部绕过不呈现
symbol 用来定义一个图形模板对象,它可以用一个use元素实例化
text 定义了一个由文字组成的图形。注意:我们可以将渐变、图案、剪切路径、遮罩或者滤镜应用到text上
textPath 除了笔直地绘制一行文字以外, SVG 也可以根据 path 元素的形状来放置文字。 只要在textPath元素内部放置文本,并通过其xlink:href属性值引用path元素,我们就可以让文字块呈现在path元素给定的路径上了
title SVG绘图中的每个窗口元素或图形元素都可以提供一个title描述性字符串,该描述只能是纯文本
tspan 在 text元素中,利用内含的tspan元素,可以调整文本和字体的属性以及当前文本的位置、绝对或相对坐标值
unknown
use use元素在SVG文档内取得目标节点,并在别的地方复制它们。它的效果等同于这些节点被深克隆到一个不可见的DOM中,然后将其粘贴到use元素的位置,很像HTML5中的克隆模板元素。因为克隆的节点是不可见的,所以当使用CSS样式化一个use元素以及它的隐藏的后代元素的时候,必须小心注意。隐藏的、克隆的DOM不能保证继承CSS属性,除非你明文设置使用CSS继承
view view元素是查看图片的一个限定方法,就像一个缩放级别或者一个详细视图。

☆☆☆mdn:https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute

svg-viewbox

viewBox属性的值是一个包含4个参数的列表 min-x, min-y, width and height, 以空格或者逗号分隔开, 在用户空间中指定一个矩形区域映射到给定的元素,查看属性preserveAspectRatio。
☆不允许宽度和高度为负值,0则禁用元素的呈现。

<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg"
     width="150" height="100" viewBox="0 0 3 2">
  <rect width="150" height="100" x="0" fill="#008d46" />
</svg>

在这里插入图片描述

绘制矩形
<svg width="120" height="120"
     viewBox="0 0 120 120"
     xmlns="http://www.w3.org/2000/svg">
  <rect x="10" y="10" width="100" height="100"/>
</svg>

在这里插入图片描述

带圆角矩形
<svg width="120" height="120"
     viewBox="0 0 120 120"
     xmlns="http://www.w3.org/2000/svg">

  <rect x="10" y="10" width="100" height="100" rx="35" ry="35"/>
</svg>

在这里插入图片描述

绘制圆形
<svg viewBox="0 0 120 120" version="1.1"
  xmlns="http://www.w3.org/2000/svg">
  <circle cx="60" cy="60" r="10"/>
</svg>

其中,r是元的半径,cx/cy为圆的中心点的坐标。
在这里插入图片描述

椭圆

在这里插入图片描述

线

在这里插入图片描述

在这里插入图片描述

绘制虚线带箭头

在这里插入图片描述

<?xml version="1.0"?>
<svg class="svg" width="120" height="120" viewBox="0 0 120 120"
    xmlns="http://www.w3.org/2000/svg" version="1.1">
	<style>
	/* <![CDATA[ */
    	.svg {
    
    
      	fill:#41e;
    	}
    /* ]]> */
    </style>

  <defs>
    <marker id="Triangle" viewBox="0 0 10 10" refX="1" refY="5"
        markerWidth="6" markerHeight="6" orient="auto">
      <path d="M 0 0 L 10 5 L 0 10 z" />
    </marker>
  </defs>

  <polyline points="10,90 50,80 90,20" fill="none" stroke-dasharray="4 4" stroke="black"
      stroke-width="2" marker-end="url(#Triangle)" />
</svg>

后续继续更新加内容…

猜你喜欢

转载自blog.csdn.net/weixin_41993525/article/details/112641588
今日推荐