如何使用 CSS 创建绘图效果动画
概述
层叠样式表 (CSS) 动画使 HTML 元素在页面上移动。为了实现绘图效果动画,我们需要掌握 HTML svg 元素和 path 元素的知识;对于 CSS,我们还需要了解动画和关键帧属性。由于 svg 元素提供了构建自定义图像的空间,可以使用 <path> 元素插入该图像。因此,为了制作绘图动画,我们需要掌握构建 svg 描边的知识。
svg path 元素包含以下用于构建描边的点数据:moveto (M)、lineto (L)、horizontal lineto (H)、vertical lineto (V)、curveto (C)、smooth curveto (S)、closepath (Z)、椭圆弧 (A)、二次贝塞尔曲线 (Q) 和平滑二次贝塞尔曲线 (T)。点数据名称后跟括号名称,该名称将在"d"属性中用于构建 SVG 图形。
方法 1:绘制形状
算法
步骤 1 - 在文本编辑器中创建一个 HTML 文件,并将 HTML 样板添加到该文件中。
步骤 2 - 现在在 body 标签内创建一个 SVG 元素 box 容器,并为该 SVG 元素添加 viewbox 属性。viewbox 元素接受输入值作为 x 轴、y 轴、宽度和高度。
<svg viewBox="0 0 500 500"></svg>
步骤 3 − 现在创建一个指向 svg 元素的 path 元素,它将包含 svg 描边线的点数据。
<path class="path" fill="white" stroke="green"/>
步骤 4 − 现在创建 svg 数据点形状并将其添加到"d"属性
<path class="path" fill="white" stroke="green" stroke-width="40"
d="M140 20C73 20 20 74 20 140c0 135 136 170 228 303 88-132 229-173 229-303 0-66-54-120-120-120-48 0-90 28-109 69-19-41-60-69-108-69z" />
步骤 5− 您还可以添加一些属性,如描边、描边宽度和填充。
步骤 6− 现在将 style 标签添加到 head 标签,并在必要时为布局设置样式。
<style>
h3 {
text-align: center;
color: green;
font-family: 'Segoe UI';
}
</style>
步骤 7 − 现在定位路径元素并设置 svg 的 stroke-dasharray 和 stroke dash-offset,为绘图动画添加动画属性。
<style>
.path {
stroke-dasharray: 3000;
stroke-dashoffset: 3000;
animation: drawing 5s linear forwards infinite;
}
</style>
步骤 8- 现在为上述路径元素创建的动画名称添加@keyframe属性
<style>
.path {
stroke-dasharray: 3000;
stroke-dashoffset: 3000;
animation: drawing 5s linear forwards infinite;
}
@keyframes drawing {
to {
stroke-dashoffset: 0;
}
}
</style>
步骤 9− 打开浏览器,绘图效果已成功创建
示例
我们将使用 svg 路径创建一个心形绘图效果。为此,请创建一个 svg 元素,并在其内部添加一个路径标签。该路径标签包含一个属性"d",该属性将心形的点数据作为坐标。创建完成后,我们将使用动画属性,通过设置 stroke-dashoffset 的值来为路径元素添加动画效果。
<html>
<head>
<style>
h3 {
text-align: center;
color: green;
font-family: 'Segoe UI';
}
.path {
stroke-dasharray: 3000;
stroke-dashoffset: 3000;
animation: drawing 5s linear forwards infinite;
}
@keyframes drawing {
to {
stroke-dashoffset: 0;
}
}
</style>
</head>
<body>
<h3>tutorialspoint.com</h3>
<svg viewBox="0 0 500 500" style="width:25%;display:block;margin:auto;">
<path class="path" fill="white" stroke="green" stroke-width="40"
d="M140 20C73 20 20 74 20 140c0 135 136 170 228 303 88-132 229-173 229-303 0-66-54-120-120-120-48 0-90 28-109 69-19-41-60-69-108-69z" />
</svg>
</body>
</html>
方法 2:绘制文本
算法
步骤 1 - 在文本编辑器中创建一个 HTML 文件,并将 HTML 样板添加到该文件中。
步骤 2 - 创建一个包含文本字母的父 div 容器。
<div class="drawing"></div>
步骤 3 - 现在在 body 标签内创建一个 svg 元素 box 容器,并为该 svg 元素添加 viewbox 属性。 viewbox 元素接受 x 轴、y 轴、宽度和高度作为输入值。
<svg viewBox="0 0 540 340"></svg>
步骤 4 − 现在创建一个指向 svg 元素的 path 元素,该元素将包含 svg 描边线的点数据。
<path class="path" fill="#0a0a0a" stroke="white" stroke-width="20"/>
步骤 5 − 现在创建 svg 数据点形状并将其添加到"d"属性。
<path class="path" fill="#0a0a0a" stroke="white" stroke-width="20"
d="m 300 300 v -256 h 95 v 114 h -94 h 94 v 140" />
步骤 6 − 您还可以添加一些属性,例如描边、描边宽度和填充。
步骤 7 − 要添加更多文本字母,请重复步骤 2、3、4、5。
步骤 8 − 现在将 style 标签添加到 head 标签,并在必要时为布局设置样式。
<style>
h3 {
text-align: center;
color: white;
font-family: 'Segoe UI';
}
.drawing {
display: flex;
padding-top: 2rem;
}
</style>
步骤 9− 现在定位路径元素并设置 svg 的 stroke-dasharray 和 stroke dash-offset,为绘图动画添加动画属性。
<style>
.path {
stroke-dasharray: 3000;
stroke-dashoffset: 3000;
animation: dash 5s linear forwards;
}
</style>
步骤 10- 现在为上述路径元素创建的动画名称添加@keyframe 属性。
<style>
.path {
stroke-dasharray: 3000;
stroke-dashoffset: 3000;
animation: dash 5s linear forwards;
}
@keyframes dash {
to {
stroke-dashoffset: 0;
}
}
</style>
步骤 11− 现在打开浏览器,绘图效果已成功创建。
示例
我们将使用文本名称创建绘图效果。为此,我们将按字母顺序将路径添加到路径元素中。
<html>
<head>
<style>
h3 {
text-align: center;
color: white;
font-family: 'Segoe UI';
}
.drawing {
display: flex;
padding-top: 2rem;
}
.path {
stroke-dasharray: 3000;
stroke-dashoffset: 3000;
animation: dash 5s linear forwards;
}
@keyframes dash {
to {
stroke-dashoffset: 0;
}
}
</style>
</head>
<body style="background-color: #0a0a0a;">
<h3>tutorialspoint.com</h3>
<div class="drawing">
<svg viewBox="0 0 540 340">
<path class="path" fill="#0a0a0a" stroke="white" stroke-width="20"
d="m 300 300 v -256 h 95 v 114 h -94 h 94 v 140" />
</svg>
<svg viewBox="0 0 540 340">
<path class="path" fill="#0a0a0a" stroke="white" stroke-width="20"
d="m 300 300 v -252 h 61 v 112 v -112 h 61 v 252" />
</svg>
<svg viewBox="0 0 540 340">
<path class="path" fill="#0a0a0a" stroke="white" stroke-width="20"
d="m 300 300 v -256 h 95 v 114 h -94 h 94 v 140" />
</svg>
<svg viewBox="0 0 540 340">
<path class="path" fill="#0a0a0a" stroke="white" stroke-width="20" d="m 300 300 v -256 l 90 256 v -256" />
</svg>
</div>
</body>
</html>
结论
如上例所示,我们使用了 stroke、stroke width 和 fill 属性。stroke 属性表示绘图的颜色,我们可以通过添加颜色值来自定义其颜色。stroke width 表示绘图的宽度,fill 属性表示绘图组件内部的颜色。此绘图功能可用作网页设计的图形元素。
相关文章
有用资源
css 参考教程 - 该教程包含有关 css 的更多信息:https://www.cainiaomax.com/css/

