本章给大家介绍在html5中如何用SVG制作酷炫动态图标?(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
一、基本图形元素
svg有一些预定义的形状元素:矩形4f5c91326734be5b874f0369b6cec59d,圆形30de22e41cb8eb8fbfdc1f091d85e4be,椭圆d9b42b40d0fdc429c7c48871eea4816c,直线15a73cc5312745b1b00671f6e690e36a,折线ce803ba1a4290bddb3ba9c6f57d4c9b4,多边形6f1cb7f8499a7e0f625f982868cbc44d,路径98953a78f52873edae60a617ec082494和文本28f128881ce1cdc57a572953e91f7d0f。
<!-- viewBox定义画布大小 width/height定义实际大小 --> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="300" height="300" viewBox="0 0 300 300"> <!-- 直线 (x1,y1)与(x2,y2)为两点坐标 --> <line x1="0" y1="0" x2="250" y2="30" /> <!-- 多边形 通过多个点的坐标形成封闭图形 --> <polygon points="5,5 100,100 50,200" /> <!-- 矩形 (x,y)为左上角起始点 --> <rect x="100" y="100" width="120" height="100" /> <!-- 圆形 (cx,cy)圆心点 r半径 --> <circle cx="100" cy="50" r="40" stroke="black"/> <!-- 文本 (x,y)左下角坐标 --> <text x="0" y="20" style="font-size:16px;font-weight: bold">Try SVG</text> </svg>
二、样式与效果
svg元素的样式可以写成标签的属性,也可以写在style里面。下面是一些主要的样式属性:
stroke: 笔触颜色
stroke-width:笔触宽度
stroke-opacity:笔触的透明度
fill:填充色,即background
fill-opacity:填充色的透明度
transform:图形变换,类似css3 transform
svg还支持很多滤镜效果,能做渐变、阴影、模糊、图像混合等等。不需要了解那么多,例如要画几个彩色圆圈,用circle 配合fill 即可。
注意:transform 默认以svg左上角为基点,而不是圆心或其他中心。左上角是svg坐标系原点。了解transform和坐标系统,可以参考 这里。
三、辅助元素
svg有几个辅助元素:3e85b886453624fdb0fdf16e0b451ee0 9f9d05a576cea0d265e9d798da82bdec 5aaf33f5e4c7c54d016a539db37ebcc8 2199a63ce40299beb55b2a8b469dfcd6。它们不代表具体形状,而是帮助进行图形元素的分组管理、重复使用等。具体介绍可以参考 这里。
3e85b886453624fdb0fdf16e0b451ee0 元素通常用来对相关图形元素进行分组,以便统一操作,比如旋转,缩放或者添加相关样式等。
2199a63ce40299beb55b2a8b469dfcd6 实现SVG现有图形的重用,可以重用单个SVG图形元素,也可以重用3e85b886453624fdb0fdf16e0b451ee09f9d05a576cea0d265e9d798da82bdec定义的组元素。
9f9d05a576cea0d265e9d798da82bdec 内部定义的元素不会直接显示,可以不用事先定义样式,而是在使用2199a63ce40299beb55b2a8b469dfcd6实例化的时候再定义。
5aaf33f5e4c7c54d016a539db37ebcc8 能够创建自己的视窗,兼具3e85b886453624fdb0fdf16e0b451ee0的分组功能和9f9d05a576cea0d265e9d798da82bdec初始不可见的特性。
对于上面提到的transform基点问题,可以通过嵌套3e85b886453624fdb0fdf16e0b451ee0标签并偏移3e85b886453624fdb0fdf16e0b451ee0的位置,进而重设基点。如下画出几个水平排列的圆圈,并设置不同的缩放尺寸
<svg width="80px" height="80px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"> <g transform="translate(20 50)"> <circle cx="0" cy="0" r="7" fill="#e15b64" transform="scale(0.99275 0.99275)" /> </g> <g transform="translate(40 50)"> <circle cx="0" cy="0" r="7" fill="#f47e60" transform="scale(0.773605 0.773605)" /> </g> <g transform="translate(60 50)"> <circle cx="0" cy="0" r="7" fill="#f8b26a" transform="scale(0.42525 0.42525)" /> </g> <g transform="translate(80 50)"> <circle cx="0" cy="0" r="7" fill="#abbd81" transform="scale(0.113418 0.113418)" /> </g> </svg>
四、动画的实现
svg的动画效果是基于动画标签元素实现的:
95b9bf201d21a40abe523e82bfc3ece7实现单属性的过渡效果;
b32227fb1e5c965892584259ad65af80实现transform变换动画效果;
1c3f862fe048da235fb9de11bfd05e0d实现路径动画效果。
svg的写法很灵活,样式可以写成标签属性也可以写在style里面,动画标签可以通过xlink指定元素,也可以写在动画元素的内部。如下演示animateTransform的xlink写法:
<svg xmlns="http://www.w3.org/2000/svg"> <rect id="animateObject" x="20" y="20" width="50" height="50" fill="blue"></rect> <animateTransform xlink:href="#animateObject" <!-- 指定动画元素 --> attributeName="transform" <!-- 需要动画的属性名称 --> type="scale" <!-- 指定transform属性 --> begin="0s" <!-- 开始时间,即延迟 --> dur="3s" <!-- 动画时间 --> from="1" <!-- 开始值 --> to="2" <!-- 结束值 --> repeatCount="indefinite" <!-- 重复方式,indefinite无限重复 --> /> </svg>
上例的动画是A到B的过渡,要形成顺畅的循环,至少要定义三个关键点。animateTransform支持更多更灵活的属性设置:
values:多个关键点的值,替代from和to,例如 values="0;1;0"
keyTimes:跟values对应,各个点的时间点
calcMode:动画快慢方式。discrete | linear | paced | spline
keySplines:设置运动的贝塞尔控制点,calcMode为spline时有效
五、代码实例
circle画圆,fill着色,用g标签包裹并定位,transform设置初始形变,animateTransform设置动画。现在来看代码,相信不会再是一头雾水了:
<svg class="lds-message" width="80px" height="80px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"> <g transform="translate(20 50)"> <circle cx="0" cy="0" r="7" fill="#e15b64" transform="scale(0.99275 0.99275)"> <animateTransform attributeName="transform" type="scale" begin="-0.375s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform> </circle> </g> <g transform="translate(40 50)"> <circle cx="0" cy="0" r="7" fill="#f47e60" transform="scale(0.773605 0.773605)"> <animateTransform attributeName="transform" type="scale" begin="-0.25s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform> </circle> </g> <g transform="translate(60 50)"> <circle cx="0" cy="0" r="7" fill="#f8b26a" transform="scale(0.42525 0.42525)"> <animateTransform attributeName="transform" type="scale" begin="-0.125s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform> </circle> </g> <g transform="translate(80 50)"> <circle cx="0" cy="0" r="7" fill="#abbd81" transform="scale(0.113418 0.113418)"> <animateTransform attributeName="transform" type="scale" begin="0s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform> </circle> </g> </svg>
效果图:
也可以用js控制svg的属性,控制svg的动画过程,做成能响应点击等事件的图标按钮。
以上是如何用SVG制作酷炫动态图标?(代码实例)的详细内容。更多信息请关注PHP中文网其他相关文章!

Microdatainhtml5enhancesseoanduserexperienceByByBybyBystructuredDatatoSearchEngines.1)useIteMscope,itemType,anditempropattributestomarkupcontentlikeSoreRoductSssSssSoRorevents.2)

html5introducesnewinputtypesthatenhanceserexperience,简化开发和iMproveAccessibility.1)自动validatesemailformat.2)优化优化,优化OmportizeSmizesemizesemizesemizesemizesemizeSmobobileWithAnumericKeyPad.3)和SimimplifyDtimePutputientiputiNputiNputits。

H5是HTML5,是HTML的第五个版本。HTML5提升了网页的表现力和交互性,引入了语义化标签、多媒体支持、离线存储和Canvas绘图等新特性,推动了Web技术的发展。

无障碍访问和网络标准遵循对网站至关重要。1)无障碍访问确保所有用户都能平等访问网站,2)网络标准遵循提高网站的可访问性和一致性,3)实现无障碍访问需使用语义化HTML、键盘导航、颜色对比度和替代文本,4)遵循这些原则不仅是道德和法律要求,还能扩大用户群体。

HTML中的H5标签是第五级标题,用于标记较小的标题或子标题。1)H5标签帮助细化内容层次,提升可读性和SEO。2)结合CSS可定制样式,增强视觉效果。3)合理使用H5标签,避免滥用,确保内容结构逻辑性。

HTML5构建网站的方法包括:1.使用语义化标签定义网页结构,如、、等;2.嵌入多媒体内容,使用和标签;3.应用表单验证和本地存储等高级功能。通过这些步骤,你可以创建一个结构清晰、功能丰富的现代网页。

通过合理的H5代码结构可以让页面在众多内容中脱颖而出。1)使用语义化标签如、、等组织内容,使结构清晰。2)通过CSS布局如Flexbox或Grid控制页面在不同设备上的呈现效果。3)实现响应式设计,确保页面在不同屏幕尺寸上自适应。

HTML5(H5)与旧版本HTML的主要区别包括:1)H5引入了语义化标签,2)支持多媒体内容,3)提供离线存储功能。H5通过新标签和API增强了网页的功能和表现力,如和标签,提高了用户体验和SEO效果,但需注意兼容性问题。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript开发工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
视觉化网页开发工具