HTML学习笔记(五) SVG 上

简介: HTML学习笔记(五) SVG

前言


<svg> 标签用于声明一个 SVG 文档片段,它内置许多标签帮助开发者绘制图形


目录


0、基本介绍

1、创建容器

2、图形标签

3、功能标签


正文


0、基本介绍


SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics)


它的本质其实就是对图片进行描述的文本,因此无论我们将图片放大多少倍都不会失真


使用 SVG 的方式有很多,以下是最常见的几种:


  • 将 SVG 代码直接插入 HTML
  • 将 SVG 代码保存为一个文件,在 HTML 中通过标签引入
  • 将 SVG 代码保存为一个文件,在 CSS 中作为资源引入

1、创建容器


<svg> 标签可以声明一个 SVG 文档片段,如果不指定属性 widthheight,那么默认宽高为 300*150

<!DOCTYPE html>
<html>
<head>
    <title>SVG Demo</title>
</head>
<body>
    <svg id="graph" width="300px" height="300px"></svg>
</body>
</html>


2、图形标签


在容器中,预定义有一些图形标签,方便开发者用于绘制图形


(0)通用属性


这些图形标签有一些通用的属性,用于控制图形的样式

  • fill:设置图形内部的颜色
  • fill-opacity:设置内部颜色的不透明度
  • stroke:设置图形边框的颜色
  • stroke-width:设置图形边框的宽度
  • stroke-opacity:设置边框颜色的不透明度


(1)矩形


使用 <rect> 标签可以绘制矩形,该标签常用的属性如下:

  • x:矩形左上角 X 轴坐标
  • y:矩形左上角 Y 轴坐标
  • width  :矩形宽度
  • height:矩形高度
  • rx:X 轴方位的圆角半径
  • ry:Y 轴方位的圆角半径


<svg id="graph" width="300px" height="300px">
    <rect x="100" y="100" width="100" height="100" />
</svg>


(2)圆形


使用 <circle> 标签可以绘制圆形,该标签常用的属性如下:

  • cx:圆心 X 轴坐标
  • cy:圆心 Y 轴坐标
  • r  :半径
<svg id="graph" width="300px" height="300px">
    <circle cx="150" cy="150" r="100" />
</svg>


(3)椭圆


使用 <ellipse> 标签可以绘制椭圆,该标签常用的属性如下:


  • cx:椭圆中心 X 轴坐标
  • cy:椭圆中心 Y 轴坐标
  • rx:水平半径
  • ry:垂直半径
<svg id="graph" width="300px" height="300px">
    <ellipse cx="150" cy="150" rx="100" ry="50" />
</svg>


(4)线段


使用 <line> 标签可以绘制线段,该标签常用的属性如下:

  • x1:线段起点 X 轴坐标
  • y1:线段起点 Y 轴坐标
  • x2:线段终点 X 轴坐标
  • y2:线段终点 Y 轴坐标


(5)折线


折线其实就是由一条条线段连接而成,使用 <polyline> 标签可以绘制折线,常用的属性如下:

  • points:定义一组节点,每个节点包含两个数字,分别代表这个点的 X、Y 坐标


<svg id="graph" width="300px" height="300px">
    <polyline points="150 100,100 200,200 200" fill="none" stroke="black" />
</svg>


(6)多边形


和折线类似,区别在于多边形最后会自动闭合,使用 <polygon> 标签可以绘制多边形,常用的属性如下:

  • points:定义一组节点,每个节点包含两个数字,分别代表这个点的 X、Y 坐标
<svg id="graph" width="300px" height="300px">
    <polygon points="150 100,100 200,200 200" fill="none" stroke="black" />
</svg>


(7)路径


路径可以用于绘制任何图形,使用 <path> 标签可以绘制路径,它通过属性 d 定义绘制的顺序


实际上它的值表示一组绘制命令,通过简写的字母表示动作,后面跟着必要的参数,常见的命令如下:


只移动不绘制


  • M x y:将当前点移动到 (x, y)


绘制直线


  • L x y:从当前点到 (x, y) 画一条直线
  • H x:从当前点水平移动 x 像素画直线,若 x 为正数,则沿着 X 轴正方向移动,反之则沿着负方向移动
  • V y:从当前点垂直移动 y 像素画直线,若 y 为正数,则沿着 Y 轴正方向移动,反之则沿着负方向移动
  • Z:从当前点到起始点画一条直线,它的作用相当于闭合路径


绘制曲线


A rx ry x-axis-rotation large-arc-flag sweep-flag x y:绘制弧形


rx 表示椭圆 X 轴半径,ry 表示椭圆 Y 轴半径,x-axis-rotation 表示相对于坐标轴的旋转角度

对于 large-arc-flag,若值为 0,表示绘制小弧部分,若值为 1,表示绘制大弧部分

对于 sweep-flag,若值为 0,表示逆时针绘制,若值为 1,表示顺时针绘制

x 表示圆弧终点 X 轴坐标,y 表示圆弧终点 Y 轴坐标


Q cx cy x y:绘制二次贝塞尔曲线


(cx, cy) 表示控制点的坐标,(x, y) 表示结束点的坐标


T x y:绘制二次贝塞尔曲线的简写命令


如果该命令前面是 Q 或者 T 命令,则它的控制点就是上一个控制点关于上一个终点的对称点

如果该命令单独使用,那么它的控制点和终点是同一个点


C cx1 cy1 cx2 cy2 x y:绘制三次贝塞尔曲线


(cx1, cy1) 表示第一个控制点坐标,(cx2, cy2) 表示第二个控制点坐标,(x, y) 表示结束点的坐标


S cx2 cy2 x y:绘制三次贝塞尔曲线的简写命令

如果该命令前面是 C 或者 S 命令,则它的第一个控制点就是上一个控制点关于上一个终点的对称点

如果该命令单独使用,那么它的第一个控制点和第二个控制点是同一个点


<svg id="graph" width="300px" height="300px">
    <path d="M 150 150
             L 250 150
             A 100 100 0 0 0 50 150"
          fill="none"
          stroke="black" />
</svg>


(8)文本


使用 <text> 标签可以绘制文本,该标签常用的属性如下:

  • x:表示文本区域基线起点 X 轴坐标
  • y:表示文本区域基线起点 Y 轴坐标
<svg id="graph" width="300px" height="300px">
    <text x="50" y="50">Hello World</text>
</svg>


目录
相关文章
|
6月前
|
XML 编解码 前端开发
编程笔记 html5&css&js 033 HTML SVG
编程笔记 html5&css&js 033 HTML SVG
|
6月前
|
存储 移动开发 前端开发
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
86 0
|
2月前
|
XML 移动开发 前端开发
HTML5 SVG
SVG(可缩放矢量图形)是HTML5中的一种XML标记语言,用于描述二维图形。它具有可缩放性,能无缝集成CSS和JavaScript,适合网络应用。SVG支持多种基本图形元素(如矩形、圆形、路径等),并通过属性控制外观。此外,SVG还支持变换、文本渲染及动画效果,文件大小通常较小且不失真,但复杂图形可能导致管理困难,部分旧版浏览器可能存在兼容性问题。总之,SVG是现代Web开发中创建动态和响应式界面的强大工具。
|
2月前
|
XML 移动开发 前端开发
HTML5 SVG和canvas的性能探讨
HTML5 中的 SVG(可缩放矢量图形)和 Canvas(画布)分别用于网页图形绘制。SVG 基于矢量图形,使用 XML 描述,适合静态或少量动态内容(如图标、图表),易于编辑且保持高分辨率;Canvas 则基于位图,通过 JavaScript 绘制,更适合快速更新大量图形的场景(如游戏、动态动画),但在复杂图形计算时可能遇到性能瓶颈。总体而言,SVG 适用于静态和少量动态内容,而 Canvas 更适合高频率更新和性能要求高的场景。
|
2月前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
6月前
|
XML 编解码 前端开发
HTML SVG
HTML SVG
57 0
|
3月前
|
移动开发 前端开发 JavaScript
|
5月前
|
移动开发 前端开发 JavaScript
浏览器端图表渲染技术SVG, VML HTML Canvas
浏览器端图表渲染技术SVG, VML HTML Canvas
37 0
|
6月前
|
移动开发 JavaScript 前端开发
webgl学习笔记3_javascript的HTML DOM
webgl学习笔记3_javascript的HTML DOM
64 0
webgl学习笔记3_javascript的HTML DOM
|
6月前
|
前端开发 JavaScript API
【HTML】SVG实现炫酷的描边动画
今天闲来无事,看到Antfu大佬的个性签名,觉得还是非常炫酷的,于是也想要搞一个自己的个性签名用来装饰自己的门面,不过由于手写的签名太丑了,遂放弃。于是尝试理解原理,深入研究此等密法,终于小有所成,发现原来是描边动画,于是记载如下,方便日后借鉴。
92 3