端必备知识点—SVG
什么是SVG? 全称为Scalable Vector Graphics,是一种使用XML技术描述二维图形的语言,简单来说 - 矢量图(不失真)
早在HTML5之前,存在SVG技术
SVG文件扩展名为".svg"
在HTML5出现之前,要在HTML页面中引入SVG文件
在HTML5出现之后,将SVG内容直接定义在HTML页面中
SVG的优势
可以使用文本编辑器创建和修改,SVG可被搜索、索引等,SVG绘制的图像不失真的
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流程图。你可以轻松地利用它学习其他代码、设计你的代码、重构代码、解释代码。这样一个强大的神器,真的值得你拥有,看下面截图就知道了,有没有很强大。
安装
yarn add js2flowchart
使用
index.html
index.js
我们直接在文本域中输入自己的代码,如下,左边会直接生成流程图,这只是一个简单的示例:
js2flowchart获取您的JS代码并返回SVG流程图,适用于客户端/服务器,支持ES6。
主要特点:
定义抽象级别以仅渲染导入/导出,类/函数名称,函数依赖性以逐步学习/解释代码。
自定义抽象级别支持创建自己的抽象级别
表示生成器,以生成不同抽象级别的SVG列表
定义流树修改器以映射众所周知的API,例如 .map,。forEach, .filter到方案上的循环结构等。
销毁修饰符,用于在方案上用一个形状替换代码块
自定义流树修改器支持创建自己的流修改器
流树忽略过滤器完全省略一些代码节点,如日志行
聚焦节点或整个代码逻辑分支突出显示方案的重要部分
模糊节点或整个代码逻辑分支以隐藏不太重要的东西
定义的样式主题支持选择您喜欢的样式
自定义主题支持创建自己的主题,更好地适合您的上下文颜色
自定义颜色和样式支持提供方便的API来更改特定样式而无需样板
用例场景:
通过流程图解释/记录您的代码
通过视觉理解学习其他代码
为有效JS语法简单描述的任何进程创建流程图
以上所有功能可以直接到github上详细了解,用法太多,这里就不在介绍了!
这么强大的东西,有人肯定说如果在开发的时候实时看到流程图有助于理解代码,官网提供了插件(我在最新版中测试失效了,不知道是否是我使用的有问题还是插件本身的问题),如果感兴趣的可以到扩展商店搜索code-flowchart。如果测试成功,欢迎到评论区分享。以下是我vscode版本和官网的插件使用截图。
如果利用好这个插件,可以开发出Chrome插件,以及其他JavaScript编辑器或者IDEA的插件,由于官方github已经几个月没更新了,所以还不知道未来会不会支持!
来都来了,走啥走,留个言呗~
IT大咖说 | 关于版权
由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!
感谢您对IT大咖说的热心支持!
相关推荐
推荐文章
据说这份高考卷,只有程序员能得满分!
干货分享:一次Java内存泄漏排查实战
这个程序员实在是太帅了
最近活动
融云微课堂
线下活动 | Apache Flink 1.9 版本即将发布,新版本有哪些新特性?
线下活动 | 阿里云实时计算专场沙龙,与你探讨大数据实时计算的解决方案
点击【阅读原文】更多IT技术圈干货等你挖掘
阅读原文
*请认真填写需求信息,我们会在24小时内与您取得联系。