ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HTML5+CSS3动态画出一个大象

2021-08-31 14:32:21  阅读:230  来源: 互联网

标签:CSS3 动画 画出 keyframes stroke animation HTML5 dashoffset 属性


给大家介绍一下利用HTML5+CSS3如何动态画出一个大象,感兴趣的可以学习了解一下~
今天本文的主要内容是:利用HTML5 svg绘制出一个线条大象,然后给它添加动画效果,让它可以慢慢被画出来。光说可能大家还不明白是什么效果,我们直接来看看效果图:

下面我们来研究一下是怎么实现这个效果的:

首先设置整个页面的背景颜色、线条的颜色、svg画布的大小

body {
  margin: 0;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #000000;
  color: #fff
}
 svg {
  display: block;
  width: 90vmin;
  height: 90vmin;
}

然后利用svg绘制出一个线条大象

<svg role="img" aria-label="A stroke illustration of an elephant" viewBox="0 0 120 120">
			<g fill="none" stroke="currentColor" line-join="round" stroke-width="1">
				<path class="stroke" d="M2 66
             q0 -3 3 -3 q3 0 3 3
             q0 15 10 15 q10 0 10 -20 q0 -50 30 -40
             s 15 -20 30 0 s -10 50 -20 35 m24 -25
             q 20 0 20 30 q0 10 -10 20
             l 0 15 q 0 3 -6 3 q -6 0 -6 -3l0 -15
             q 0 -3 -2 -5 m 2 5
             s -10 3 -20 0
             l 0 15 q 0 3 -6 3 q -6 0 -6 -3l0 -15
             q 0 -5 -4 -10 m 4 23
             h-3 q -6 0 -6 -3
             l0 -12
             q 0 -5 -6 -12
             m 2 -5
             l 3 1 m -3 -1
             l -3 -2 m 3 2
             q -10 30 -27 30
             q -16 0 -16 -26
             m 80.5 16.5
             v11 q0 3 6 3 h1.5
             m-40 -50
             a 3 3 0 0 1 6 0 a 3 3 0 0 1 -6 0
             m 11 -17
             q 15 -15 23 5
             m 27.8 20
             q 0 5 5 10
             h2 m-2 0 v2
             ">
			 </g>
		</svg>

 

 

最后实现动画效果:

先使用stroke-dasharray属性控制用来描边的点划线的图案范式,stroke-dashoffset控制dash模式到路径开始的距离。这两个属性的值需要一致。

.stroke {
  stroke-dasharray: 300;
  stroke-dashoffset: 300;
}

设置这两个属性后,线条大象图案会被隐藏,然后给.stroke元素绑定一个动画

.stroke {
  animation: stroke-anim 4s linear forwards;
}

使用@keyframes规则,给动画设置动作,将stroke-dashoffsets属性的值设置为0即可

@keyframes stroke-anim {
  to {
    stroke-dashoffset: 0;
  }
}

ok!下面给出完整代码:

<DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<style>
		body {
                margin: 0;
                height: 100vh;
                display: flex;
                justify-content: center;
                align-items: center;
                background: #000000;
                color: #fff
            }
            svg {
                display: block;
                width: 90vmin;
                height: 90vmin;
            }
            .stroke {
                stroke-dasharray: 300;
                stroke-dashoffset: 300;
                animation: stroke-anim 4s linear forwards;
            }
            @keyframes stroke-anim {
                to {
                    stroke-dashoffset: 0;
                }
            }
		</style>
	</head>
	<body>
		<svg role="img" aria-label="A stroke illustration of an elephant" viewBox="0 0 120 120">
			<g fill="none" stroke="currentColor" line-join="round" stroke-width="1">
				<path class="stroke" d="M2 66
             q0 -3 3 -3 q3 0 3 3
             q0 15 10 15 q10 0 10 -20 q0 -50 30 -40
             s 15 -20 30 0 s -10 50 -20 35 m24 -25
             q 20 0 20 30 q0 10 -10 20
             l 0 15 q 0 3 -6 3 q -6 0 -6 -3l0 -15
             q 0 -3 -2 -5 m 2 5
             s -10 3 -20 0
             l 0 15 q 0 3 -6 3 q -6 0 -6 -3l0 -15
             q 0 -5 -4 -10 m 4 23
             h-3 q -6 0 -6 -3
             l0 -12
             q 0 -5 -6 -12
             m 2 -5
             l 3 1 m -3 -1
             l -3 -2 m 3 2
             q -10 30 -27 30
             q -16 0 -16 -26
             m 80.5 16.5
             v11 q0 3 6 3 h1.5
             m-40 -50
             a 3 3 0 0 1 6 0 a 3 3 0 0 1 -6 0
             m 11 -17
             q 15 -15 23 5
             m 27.8 20
             q 0 5 5 10
             h2 m-2 0 v2
             ">
			</g>
		</svg>
	</body>
</html>

大家可以直接复制以上代码,在本地进行运行演示。

这里给大家介绍几个关键的标签和属性:

HTML5 

用于把相关元素进行组合的容器元素,

 

 <path>:定义一个路径

 

 animation 属性是一个简写属性:

animation-name:规定需要绑定到选择器的 keyframe 名称。。  
animation-duration:规定完成动画所花费的时间,以秒或毫秒计。  
animation-timing-function:规定动画的速度曲线。  
animation-delay:规定在动画开始之前的延迟。  
animation-iteration-count:规定动画应该播放的次数。  
animation-direction:规定是否应该轮流反向播放动画。

通过 @keyframes 规则,能够创建动画。

/* 定义动画*/
@keyframes 动画名称{
    /* 样式规则*/
}
/* 将它应用于元素 */
.element {
    animation-name: 动画名称(在@keyframes中已经声明好的);
    /* 或使用动画简写属性*/
    animation: 动画名称 1s ...
}

stroke-dasharray属性可控制用来描边的点划线的图案范式。作为一个外观属性,它也可以直接用作一个CSS样式表内部的属性。

stroke-dashoffset 属性指定了dash模式到路径开始的距离如果使用了一个 <百分比> 值, 那么这个值就代表了当前viewport的一个百分比。值可以取为负值。

以上就是HTML5+CSS3动态画出一个大象的详细内容。(拼多多培训

标签:CSS3,动画,画出,keyframes,stroke,animation,HTML5,dashoffset,属性
来源: https://www.cnblogs.com/pddqilun/p/15210152.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有