最新要闻
- 和刘云天直播与前妻合体,拿郭德纲题字扇亮相,曹云金是懂流量的-热推荐
- 重庆公积金缴费基数2023多少 缴存基数上限如何计算?
- 比RTX 4080小一半!RTX 4000 SFF半高卡开卖:万元价格、功耗仅70瓦
- 资讯推荐:不玩不行?厂商力挺:黑人女主的游戏正越来越多
- 5999元起!vivo发布上下折叠屏手机X Flip:魔幻3寸外屏、妹纸最爱
- 聚焦水利,河南再设百亿产业基金 全球独家
- vivo X Flip登场:航空级铝合金中框 3英寸超大外屏
- 全球首个12.1寸7:5大屏 vivo Pad2屏幕大升级:拒绝低成本_全球观点
- 【世界独家】最强火箭SpaceX星舰今晚重新发射!现场大雾弥漫:又要延期?
- 快播:首发2399元起 vivo Pad2平板发布:娱乐与生产力双旗舰
- 时隔10年 新一代PC硬件杀手:《孤岛危机4》来了
- 马布里发微博:篮球之神是公平的
- 安装到c盘和d盘的区别 c盘和d盘的区别
- 业绩亏损的股票有可能上涨吗?股票的涨跌原理
- 每日热点:中汽协:3月乘用车产销分别完成214.9万辆和201.7万辆 同比分别增长14.3%和8.2%
- 铜川市气象台发布沙尘暴黄色预警【Ⅲ级/较重】
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
今日最新!【前端可视化】SVG 学习知识点
基本概念和语法
SVG 的定义和历史
SVG 是可缩放矢量图形(Scalable Vector Graphics)的缩写,它是一种用于描述二维矢量图形的 XML 标记语言。与传统的栅格图像不同,SVG 图像可以无限缩放而不会失真,同时也支持交互和动画等特性。
【资料图】
SVG 最早于 1999 年由 W3C 发布,用于在 Web 上展示矢量图形,并于 2001 年正式成为标准。在过去的二十多年中,SVG 经历了多次更新和改进,增加了更多的功能和特性,如动画、交互等,并逐渐得到广泛的应用。
SVG 2.0 于 2016 年 9 月 15 日成为 W3C 候选推荐标准,最新草案于 2020 年 5 月 26 日发布。
SVG 的优点和缺点
SVG 的优点包括:
- 矢量图形缩放不会失真(像素点数量不变而导致图像出现模糊、锯齿等),而光栅图形(PNG、JPG)缩放会导致失真。
- 矢量图形:基于矢量的点、线、形状和数学公式来构建的图形,该图形是没有像素的,放大缩小是不会失真的。
- 光栅图形:由像素点构建的图像——微小的彩色方块,大量像素点可以形成高清图像,比如照片。图像像素越多,质量越高。
- 其他优点:灵活(JS 和 CSS 操作);支持动画;轻量(尺寸小);可打印(不会失真);利于 SEO(会被搜索引擎索引);可压缩;易于编辑等。
SVG 的缺点包括:
- 不适和高清图片制作(非像素级渲染);
- SVG 图像变得复杂时,加载会比较慢;
- 存在部分浏览器兼容问题。
SVG 的应用场景
- SVG 非常适合显示矢量徽标(Logo)、图标(ICON)和其他几何设计。
- SVG 适合应用在需适配多种尺寸的屏幕上展示,因为SVG的扩展性更好。
- 当需要创建简单的动画时,SVG 是一种理想的格式。
- SVG 可以与 JS 交互来制作线条动画、过渡和其他复杂的动画。
- SVG 可以与 CSS 动画交互,也可以使用自己内置的 SMIL 动画。
- SVG 也非常适合制作各种图表(条形图、折线图、饼图、散点图等等),以及大屏可视化页面开发。
SVG 的文件结构和语法规则
SVG 的文件结构和语法规则包括以下几点:
- 文件格式:SVG 文件是一种基于 XML 语法的文本文件,以 .svg 或 .svgz 为后缀名。其中,.svg 是未压缩的文本格式,而 .svgz 是经过压缩的二进制格式。
- XML声明:SVG文件必须以XML声明开始,指定XML版本和字符集。例如:
- 命名空间:SVG使用命名空间来区分不同元素和属性的定义和作用(现代浏览器会默认添加)。SVG 默认命名空间为
"http://www.w3.org/2000/svg"
,可以通过 xmlns 属性来指定和扩展其他命名空间。例如:
- 根元素 SVG 文件必须包含一个根元素
,表示图形容器的大小和属性。其中,width 和 height 属性指定画布的宽度和高度,viewBox 属性指定可视范围的位置和大小。
- 元素和属性 SVG 文件中包含多个元素和属性,用于描述和绘制图形。常见的元素包括
等,常见的属性包括 fill、stroke、stroke-width、transform 等。、 、 、 - 嵌套和顺序 SVG 元素可以嵌套在其他元素中,形成复杂的图形结构。元素的顺序和层次决定了它们的显示顺序和遮挡关系。
图形绘制基础
SVG 坐标系和单位
SVG 使用的坐标系统(网格系统)和 Canvas 的差不多(笛卡尔坐标系)。坐标系是以左上角为 (0,0) 坐标原点,坐标以像素为单位,x 轴正方向是向右,y 轴正方向是向下。
SVG 坐标系统,在没有明确指定单位时,默认以像素为单位,我们也可以手动指明坐标系的单位。
SVG 坐标系分为视口坐标系和用户坐标系:
视口坐标系(视口-viewport):视口坐标系是在视口上建立的坐标系,原点在视口左上角的点(0, 0),x轴正向向右,y轴正向下。
用户坐标系(视图框-viewBox):用户坐标系是建立在 SVG 视口上的坐标系。该坐标系最初与视口坐标系相同——它的原点位于视口的左上角。使用 viewBox 属性,可以修改初始用户坐标系,使其不再与视口坐标系相同。
SVG 常见形状和元素
常见的 SVG 形状包括:矩形(rect)、圆形(circle)、椭圆形(ellipse)、线段(line)、折线(polyline)、多边形(polygon)
常见的 SVG 元素还包括:
- path:路径
- image:图片
- text、tspan:文字
- g 、defs、use、symbols:图形组合和复用
SVG 路径和路径命令
在 SVG 中,可以使用路径
来描述复杂的图形。路径由一系列的路径命令组成,常用的路径命令包括:M(移动到)、L(画直线)、Z(关闭路径)、H(水平线)、V(垂直线)、C(贝塞尔曲线)等。
SVG 填充和描边效果
使用属性 fill(填充) 和 stroke(描边),其中描边属性中 stroke-dasharray(将虚线类型应用在边框上)和 stroke-dashoffset(指定在dasharray模式下路径的偏移量)是 SVG 路径动画的应用原理。
填充和描边也能使用 css 来进行控制,其 css 样式优先级为:
内联的 style > defs 中的 style > 外部 / head 内部 > 属性 fill
SVG 渐变和滤镜效果
SVG 渐变有两种类型:线性渐变和径向渐变
线性渐变使用 linearGradient 和 stop 元素,例如:
滤镜效果通过在 defs 中定义,比如定义一个高斯模糊效果:
SVG 的形变操作
SVG 的形变支持平移(translate)、旋转(rotate)等,注意:形变会修改坐标系,SVG 渲染是先形变修改了坐标系后,根据新坐标系再设置元素 xy 坐标。
SVG 的描边动画
原理为 stroke-dasharray(描边虚线) 和 stroke-dashoffset(虚线偏移量) 属性的设置。将描边设置为虚线,接着将描边偏移到不可见处,通过动画让描边慢慢变为可见,这样就产生了动画效果了。例如:
#line {/* 指定为虚线,300px大于或等于路径长度,虚线和偏移量大小会影响动画速度*/stroke-dasharray: 300px;/* 可见 */stroke-dashoffset: 300px;animation: line1Move 2s linear forwards;}@keyframes line1Move {100% {/* 可见 */stroke-dashoffset: 0px;}}
支持 stroke 属性的元素都能实现该动画,比如:path、ellipse、polyline 等。
动画和交互
SVG 动画的实现方式
用 JS 脚本实现:通过各种处理 SVG 的 JavaScript 库实现动画和交互效果。
用 CSS 样式实现:主要是使用 CSS3 的动画属性。
用 SMIL 实现:一种基于 SMIL 语言实现的 SVG 动画。
SMIL(Synchronized Multimedia Integration Language 同步多媒体集成语言,是W3C推荐的可扩展标记语言,用于描述多媒体演示)
SVG 的 SMIL 动画元素
SVG 中支持 SMIL 动画的元素:
- set:经过特定时间间隔后,将属性设置为某个值(不是过度动画效果)。
- animate:给某个属性创建过度动画效果。需将animate元素嵌套在要应用动画的元素内。
- animateTransform:指定目标元素的形变(transform)属性,从而允许控制元素的平移、旋转、缩放或倾斜动画(类似于 CSS3 的形变)。
- animateMotion:定义了一个元素如何沿着运动路径进行移动。
SVG 动画库-Snap.svg
Snap.svg 是一个专门用于处理 SVG 的 JavaScript 库 ( 类似jQuery )。
SVG 动画库-GSAP 动画库
GSAP 全称是( GreenSock Animation Platform)GreenSock 动画平台。GSAP 是一个强大的 JavaScript 动画库,可让开发人员轻松的制作各种复杂的动画。与 Snap.svg 不一样,GSAP 无论是 HTML 元素、还是 SVG、或是 Vue、React 组件的动画,都可以满足你的需求。
关键词:
[游戏] EasyGame C++
今日最新!【前端可视化】SVG 学习知识点
平稳运行、动能积蓄——透视首季工业经济数据
和刘云天直播与前妻合体,拿郭德纲题字扇亮相,曹云金是懂流量的-热推荐
重庆公积金缴费基数2023多少 缴存基数上限如何计算?
比RTX 4080小一半!RTX 4000 SFF半高卡开卖:万元价格、功耗仅70瓦
资讯推荐:不玩不行?厂商力挺:黑人女主的游戏正越来越多
5999元起!vivo发布上下折叠屏手机X Flip:魔幻3寸外屏、妹纸最爱
聚焦水利,河南再设百亿产业基金 全球独家
微信小程序学习笔记 播报
无凭证条件下的权限获取
快讯:C++ 结构体对齐
债市日报:4月20日
vivo X Flip登场:航空级铝合金中框 3英寸超大外屏
全球首个12.1寸7:5大屏 vivo Pad2屏幕大升级:拒绝低成本_全球观点
【世界独家】最强火箭SpaceX星舰今晚重新发射!现场大雾弥漫:又要延期?
快播:首发2399元起 vivo Pad2平板发布:娱乐与生产力双旗舰
时隔10年 新一代PC硬件杀手:《孤岛危机4》来了
马布里发微博:篮球之神是公平的
安装到c盘和d盘的区别 c盘和d盘的区别
业绩亏损的股票有可能上涨吗?股票的涨跌原理
ASP.NET Core MVC 从入门到精通之wwwroot和客户端库 世界短讯
海思Hi35xx uboot启动分析总结
上平台! 车联网智能化晋级高段位!
PHP 教程_编程入门自学教程_菜鸟教程-免费教程分享-每日快讯
每日热点:中汽协:3月乘用车产销分别完成214.9万辆和201.7万辆 同比分别增长14.3%和8.2%
铜川市气象台发布沙尘暴黄色预警【Ⅲ级/较重】
环球热头条丨最强折叠屏!vivo X Fold2亮相:7项参数全球唯一
《古龙风云录》等86款游戏过审:4月国产游戏版号公布
《灌篮高手》周边卖断货 官方急挂公告:真没货了 亲们!_世界头条
全球最资讯丨科大讯飞Q1营收28.88亿元 即将发布认知大模型
vivo X Fold2外观正式揭晓:双材质拼接设计独特 环球热资讯
世界微速讯:【金融街发布】人民银行:加快新型信息基础设施建设 加快金融数字化转型
快看点丨后悔没早学 两招轻松搞定打印机堵头难题
全球微动态丨冰淇淋只给外国人道歉后 探访风波中的宝马mini展台:有男子免费派发甜筒
上海车展三星推第6代方形电池 UP主吐槽“闲人免进”:护我安全
天天时讯:家用强力灭蚊!雅格充电电蚊拍9.9元起抄底
巨幕大于想象!vivo X Fold2/X Flip折叠屏未发先火:超50万人预约
【天天速看料】2.56万方!南通这里,即将拆除!
环球微头条丨【0基础学爬虫】爬虫基础之自动化工具 Selenium 的使用
焦点精选!易基因:MeRIP-seq等揭示m6A甲基化修饰对抗病毒基因表达的转录调控机制|Cell Rep
关注:深度学习--PyTorch维度变换、自动拓展、合并与分割
【环球新要闻】记录-JS简单实现购物车图片局部放大预览效果
创建本地yum仓库
【世界报资讯】何冰:演员没有理解力就只剩大声说话了
合金弹头觉醒前期最强阵容搭配推荐
【天天热闻】4999元 机械师推出新款创物者X14笔电:RTX2050 4GB独显
当前热讯:小米13/13 Pro/13 Ultra三款机型对比:到底怎么选 一目了然
【快播报】暴雪承认《暗黑破坏神4》洗点费用有点贵 但不会改
沙尘翻过秦岭入川:局地AQI爆表!成都“躲过一劫”
天天短讯!雷军现身比亚迪腾势、仰望展台 用小米13 Ultra狂拍
世界热门:工信部:将实施5G规模化应用工程 指导发布5G行业建设指南
全球时讯:最新持仓浮出水面:百亿级私募左手AI右手“央国企”
【天天播资讯】Natasha Preheating(三)
全球新动态:集合 第二天
环球今热点:24道Python面试练习题
Kubesphere-DevOps-记一次流水线排错
新起点!大数据分布式可视化的 DAG 任务调度系统 Taier 正式发布1.4版本
滚动:蛇怕什么?
环球速递!小米之家人山人海!小米13 Ultra销售火爆
今日热搜:广告内容“量身定制”!谷歌计划使用生成式AI推送广告
天天热门:女子眼球被摘除,竟是痔疮惹的祸!
疯狂育儿模式 长达4年半不吃不喝不挪窝:自虐死亡的章鱼图啥?
瑞幸咖啡员工称被罚抄写顾客差评 客服回应:对顾客负责
天天观察:AMD YES!史上最强核显Radeon 780M首测:《赛博朋克2077》流畅丝滑
当前观察:2023年医保新规如何给家人用?医保卡新规2023一家人用可以吗?
全球短讯!k8s介绍与常用命令
我替 OpenAI 实现了 ChatGPT 聊天记录复制功能
天天讯息:ubuntu编译字符设备
今日热门!咨询chatGPT关于c#脚本的方案,全文无任何修改。
天天通讯!GIS在电力管理中的应用
央行:我国不存在长期通缩或通胀的基础
观焦点:新华社权威快报|5G基站超264万个 我国数字化基础不断夯实
天天微动态丨汽车厂商要登月!现代联手科研机构开发探月机器人
当前播报:俄罗斯开发者拿到钱了 显卡超频神器Afterburner恢复更新:等了1年半
环球热消息:斯柯达研发新EA211系列发动机:全新帕萨特、速派等50车搭载
人类最强火箭!SpaceX星舰今晚重新发射:目前系统一切正常
天天热议:宝马MINI的冰淇淋只配老外吃:高管刚表示BMW家在中国
“零工市场”为灵活就业“添翼续航”
“4.5%”彰显中国经济的韧性和活力
“中国车企加速迈向电动化,将国际老牌车企甩在身后”
环球新动态:IDEA编译Spring源码教程
微资讯!使用etcd实现Master的选举功能
Rust 知识积累(6)
当前快播:【Jmeter】Request1输出作为Request2输入-后置处理器
世界热文:详解数据结构中栈的定义和操作
通讯!估值1000亿 消息称国产内存厂商寻求IPO上市:4年前量产首款DDR4芯片
张颂文用小米13 Ultra拍照!网友建议加上水印
【天天时快讯】巴西总统认为电子游戏是垃圾 让年轻人学会暴力杀戮
长达10年维护落幕:微软提醒Office 2013已停止支持
当前速看:郑渊洁称维权生活像吃苍蝇:21年只成功37个商标 还有673个没成
联想刘军:今年将是大客户市场的 “大年”
浑厚悠扬!三号楼的钟声……
每日热议!房玄龄杜如晦被谁重用_房玄龄杜如晦
全球快资讯:springboot 中使用 RabbitMQ 配置使用优先级队列
查看Unity3D中默认的变量名与按键的映射
时隔6年后,我又回到博客园了
环球看点!更新整理了一大波热门免费可用的API大全
微动态丨ChatGPT闲谈——火出圈的为什么是 OpenAI?
新消息丨微软苏菲要换代了!Surface Pro 10/Go 4新品曝光:外形/配置大变