整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

前端必备知识点—SVG

端必备知识点—SVG

基本内容

什么是SVG? 全称为Scalable Vector Graphics,是一种使用XML技术描述二维图形的语言,简单来说 - 矢量图(不失真)

SVG与HTML5的关系

早在HTML5之前,存在SVG技术

SVG文件扩展名为".svg"

在HTML5出现之前,要在HTML页面中引入SVG文件

在HTML5出现之后,将SVG内容直接定义在HTML页面中

SVG的优势

可以使用文本编辑器创建和修改,SVG可被搜索、索引等,SVG绘制的图像不失真的

SVG与Canvas的区别

SVG不依赖于分辨率,使用DOM或绑定事件,实现大型渲染区域的应用(地图类)

Canvas依赖于分辨率,不能使用DOM或绑定事件的,运行时以图片形式出现".jpg"

SVG的标准也是W3C定制的

设置样式

1.通过元素的属性方式

fill - 设置填充样式

fill-opacity - 设置填充透明度

stroke - 设置描边样式

stroke-width - 设置边框的宽度

2.通过style属性,使用类似于CSS属性设置方式

注意 - 不能使用CSS中的样式进行设置

transform属性,用于设置转换效果

方法有:rotate()、scale()、translate()

绘制图形

矩形元素- <rect>元素

<rect x="" y="" width="" height="" rx="" ry="" />

x和y - 绘制矩形的左上角坐标值

width和height - 设置绘制矩形的宽度和高度

rx和xy - 设置圆角矩形

圆形元素 - <circle>元素

<circle cx="" cy="" r="" />

cx和cy - 绘制圆形的圆心坐标值

cx和cy不设置值的话,默认为(0,0)

r - 绘制圆形的半径

椭圆元素- <ellipse>元素

<ellipse cx="" cy="" rx="" ry="" />

cx和cy - 绘制椭圆的圆心坐标值

rx - 绘制椭圆的水平方向的半径

ry - 绘制椭圆的垂直方向的半径

注意:当rx和ry的值相同时,绘制的是圆形

线条元素- <line>元素

<line x1="" y1="" x2="" y2="" />

x1和y1 - 绘制直线的起点坐标值

x2和y2 - 绘制直线的终点坐标值

注意:绘制直线时,默认描边颜色为白色

折线元素 - <ployline>元素

<polyline points="" />

points - 折线的所有点坐标值,都设置在该属性中

注意:描边颜色默认为白色,填充颜色默认为黑色

多边形元素- <polygon>元素

<polygon points="" />

points - 折线的所有点坐标值,都设置在该属性中

注意: SVG绘制图形使用元素

单标签 - 增加结束符"/"

起始标签

特效元素

线性渐变 - 基准线

<defs>

<linearGradient id="grad" x1="基准线的起点坐标值x" y1="基准线的起点坐标值y" x2="基准线的终点坐标值x" y2="基准线的终点坐标值y">

<stop offset="0%~100%" stop-color="颜色" />

</linearGradient>

</defs>

<rect fill="url(#渐变元素的id)">

射线渐变 - 基准圆

<defs>

<radialGradient id="grad" fx="设置起点基准圆的圆心x" fy="设置起点基准圆的圆心y" cx="设置终点基准圆的圆心x" cy="设置终点基准圆的圆心y" r="设置终点基准圆的半径">

<stop offset="0%~100%" stop-color="颜色" />

</radialGradient>

</defs>

<rect fill="url(#渐变元素的id)">

注意:线性渐变或射线渐变,设置基准线(圆)的坐标值必须是百分值,允许为负值,允许为大于 100% 的值

设置渐变颜色位置必须是百分值

只能是从 0% ~ 100%

滤镜元素 - 高斯模糊

滤镜元素 - <filter>元素

高斯模糊 - <feGaussianBlur>元素

绘图 Drawing Shapes

SVG stands for Scalable Vector Graphics, and is used to draw shapes with HTML-style markup.

It offers several methods for drawing paths, boxes, circles, text, and graphic images.

SVG is not pixel-based, so it can be magnified infinitely with no loss of quality.

SVG代表可伸缩矢量图形,用于绘制具有HTML风格标记的形状。

它提供了几种绘制路径,框,圆,文本和图形图像的方法。

SVG不是基于像素的,所以它可以无限放大,没有质量损失。

2 插入SVG图像 Inserting SVG Images

An SVG image can be added to HTML code with just a basic image tag that includes a source attribute pointing to the image:

只需一个基本的图像标签

3 绘制

To draw shapes with SVG, you first need to create an SVGelement tag with two attributes: width and height.

要使用SVG绘制形状,您首先需要创建一个SVG元素标签,其中包含两个属性:width和height。

To create a circle, add a <circle> tag:

- cxpushes the center of the circle further to the right of the screen- cypushes the center of the circle further down from the top of the screen- r defines the radius- filldetermines the color of our circle- strokeadds an outline to the circle

s2flowchart 是一个可视化库,可将任何JavaScript代码转换为漂亮的SVG流程图。你可以轻松地利用它学习其他代码、设计你的代码、重构代码、解释代码。这样一个强大的神器,真的值得你拥有,看下面截图就知道了,有没有很强大。

Github

安装使用

  • 安装

yarn add js2flowchart
  • 使用

index.html

index.js

我们直接在文本域中输入自己的代码,如下,左边会直接生成流程图,这只是一个简单的示例:

js2flowchart的特性以及适用场景(来自官网翻译)

js2flowchart获取您的JS代码并返回SVG流程图,适用于客户端/服务器,支持ES6。

主要特点:

  • 定义抽象级别以仅渲染导入/导出,类/函数名称,函数依赖性以逐步学习/解释代码。

  • 自定义抽象级别支持创建自己的抽象级别

  • 表示生成器,以生成不同抽象级别的SVG列表

  • 定义流树修改器以映射众所周知的API,例如 .map,。forEach, .filter到方案上的循环结构等。

  • 销毁修饰符,用于在方案上用一个形状替换代码块

  • 自定义流树修改器支持创建自己的流修改器

  • 流树忽略过滤器完全省略一些代码节点,如日志行

  • 聚焦节点或整个代码逻辑分支突出显示方案的重要部分

  • 模糊节点或整个代码逻辑分支以隐藏不太重要的东西

  • 定义的样式主题支持选择您喜欢的样式

  • 自定义主题支持创建自己的主题,更好地适合您的上下文颜色

  • 自定义颜色和样式支持提供方便的API来更改特定样式而无需样板

用例场景:

  • 通过流程图解释/记录您的代码

  • 通过视觉理解学习其他代码

  • 为有效JS语法简单描述的任何进程创建流程图

以上所有功能可以直接到github上详细了解,用法太多,这里就不在介绍了!

vscode扩展

这么强大的东西,有人肯定说如果在开发的时候实时看到流程图有助于理解代码,官网提供了插件(我在最新版中测试失效了,不知道是否是我使用的有问题还是插件本身的问题),如果感兴趣的可以到扩展商店搜索code-flowchart。如果测试成功,欢迎到评论区分享。以下是我vscode版本和官网的插件使用截图。

如果利用好这个插件,可以开发出Chrome插件,以及其他JavaScript编辑器或者IDEA的插件,由于官方github已经几个月没更新了,所以还不知道未来会不会支持!

来都来了,走啥走,留个言呗~

IT大咖说 | 关于版权

由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

相关推荐


推荐文章

  • 据说这份高考卷,只有程序员能得满分!

  • 干货分享:一次Java内存泄漏排查实战

  • 这个程序员实在是太帅了


最近活动

  • 融云微课堂

  • 线下活动 | Apache Flink 1.9 版本即将发布,新版本有哪些新特性?

  • 线下活动 | 阿里云实时计算专场沙龙,与你探讨大数据实时计算的解决方案

点击【阅读原文】更多IT技术圈干货等你挖掘

阅读原文