如何使用HTML5+CSS3动态画一个笑脸

在之前的文章中我们介绍了利用html5+css3动态画出一个大象的方法,感兴趣的可以点击链接进行查阅→《html5+css3动态画出一个大象》。这次我们继续聊聊利用html5+css3实现动画效果,介绍一下动态画一个笑脸的方法。

今天本文的主要内容是:利用HTML5 svg绘制出一个线条笑脸,然后使用CSS3给它添加动画效果,让它可以慢慢被画出来。光说可能大家还不明白是什么效果,我们直接来看看效果图:

1.gif

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

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

立即学习“前端免费学习笔记(深入)”;

body {  background: #222;  display: flex;  height: 100vh;  justify-content: center;  align-items: center;  margin: 0;}svg {  display: block;  height: 90vmin;  width: 90vmin;}.stroke {  stroke-width: 1;  stroke: #fff;  fill: none;}

登录后复制

然后利用svg绘制出一个线条笑脸

定义svg标签,在当前文档内嵌套一个独立的svg片段


登录后复制

定义一个path标签,画一个圆

  

登录后复制

2.png

在使用path标签画左边的眼睛

    

登录后复制

3.png

将右边的眼睛也画出来

      

登录后复制

4.png

将嘴巴画出来

        

登录后复制

4-1.png

给.stroke元素添加一个stroke-linecaps属性,将嘴巴路径两端的形状设置为圆弧。

.stroke {  stroke-linecap: round;}

登录后复制

5.png

OK,笑脸画出来了!最后实现动画效果:

给.stroke元素绑定一个动画,然后设置stroke-dasharray和stroke-dashoffset属性,这样笑脸图案会被先隐藏起来

.stroke {  animation: stroke-anim 2s linear forwards;    stroke-dasharray: 300;  stroke-dashoffset: 300;}

登录后复制

使用@keyframes规则,给动画设置动作,将stroke-dashoffsets属性的值设置为0,这样笑脸图案就能慢慢显示出来

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

登录后复制

6.gif

动画效果虽然出来了,但不是我们想要的。我们需要使用animation-delay定义每一步动作的开始时间,先画出脸,再画左眼和右眼,最后画出嘴巴:

.stroke:nth-child(2) {  animation-delay: 2s;}.stroke:nth-child(3) {  animation-delay: 3s;}.stroke:nth-child(4) {  animation-delay: 4s;}@keyframes stroke-anim {  to {stroke-dashoffset: 0;  }}

登录后复制

7.gif

ok,完成!下面给出完整代码:

nbsp;html>body {background: #222;display: flex;height: 100vh;justify-content: center;align-items: center;margin: 0;}svg {display: block;height: 90vmin;width: 90vmin;}.stroke {stroke-width: 1;stroke: #fff;fill: none;stroke-linecap: round;animation: stroke-anim 2s linear forwards;stroke-dasharray: 300;stroke-dashoffset: 300;}.stroke:nth-child(2) {animation-delay: 2s;}.stroke:nth-child(3) {animation-delay: 3s;}.stroke:nth-child(4) {animation-delay: 4s;}@keyframes stroke-anim {to {stroke-dashoffset: 0;}}

登录后复制

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

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

元素

SVG 图像是使用各种元素创建的,这些元素分别应用于矢量图像的结构、绘制与布局。如果svg不是根元素,svg 元素可以用于在当前文档(比如说,一个HTML文档)内嵌套一个独立的svg片段 。 这个独立片段拥有独立的视口和坐标系统。

路径

path元素是用来定义形状的通用元素。所有的基本形状都可以用path元素来创建。SVG 元素用于绘制由直线,圆弧,曲线等组合而成的高级形状,带或不带填充。该 元素可能是所有元素中最先进,最通用的SVG形状。它可能也是最难掌握的元素。

animation 属性和@keyframes 规则

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

登录后复制

animation 属性是一个简写属性,可用于设置六个动画属性:

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

登录后复制

animation-delay 属性定义动画何时开始。

该属性值以秒或毫秒计;允许负值,-2s 使动画马上开始,但跳过 2 秒进入动画。

:nth-child()选择器

:nth-child(n) 选择器匹配父元素中的第 n 个子元素,元素类型没有限制。

n 可以是一个数字,一个关键字,或者一个公式。

PHP中文网平台有非常多的视频教学资源,欢迎大家学习《css视频教程》《HTML视频教程》!

以上就是如何使用HTML5+CSS3动态画一个笑脸的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2907449.html

(0)
上一篇 2025年3月11日 02:58:28
下一篇 2025年3月7日 14:25:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用HTML5 SVG绘制各种雪花图案

    在之前的文章中我们介绍了利用html5+css3动态画出一个线条笑脸的方法,感兴趣的可以点击链接进行查阅→《如何使用html5+css3动态画一个笑脸》。这次我们继续聊聊利用html5 svg绘制图案。 今天本文的主要内容是:利用HTML5…

    2025年3月11日 编程技术
    200
  • html5 app开发框架有哪些

    html5 app开发框架有:1、jquery mobile;2、bootstrap;3、ionic;4、Mobile Angular UI;5、Intel XDK;6、Appcelerator Titanium;7、PhoneGap等等。…

    2025年3月11日 编程技术
    200
  • html5新增了什么

    html5新增的特性:1、语义化标签(header、footer、nav等);2、webStorage储存机制;3、history对象;4、表单类型(email、tell、date等);5、媒体元素video和audio;6、canvas。…

    2025年3月11日
    200
  • html5编辑器有哪些

    html5编辑器有:1、HBuilder;2、Notepad++;3、Eclipse;4、Dreamweaver;5、EditPlus;6、WebStorm;7、sublime text;8、Adobe Edge;9、vscode等等。 本…

    2025年3月11日 编程技术
    200
  • html5的doctype声明是什么

    html5的doctype声明是“”,它是一条指令,用于告知浏览器文档所使用的是HTML规范。doctype声明必须位于HTML5文档中的第一行,也就是位于“”标签之前。 本教程操作环境:windows7系统、HTML5版、Dell G3电…

    2025年3月11日
    200
  • html5关系选择器有哪些

    html5关系选择器有后代选择器、子元素选择器、相邻兄弟选择器、通用兄弟选择器、列选择器、群组选择器和:has选择器等。详细介绍:1、后代选择器用于选择某个元素的后代元素,它使用空格来表示元素之间的关系;2、子元素选择器用于选择某个元素的直…

    2025年3月11日
    200
  • html5复合选择器都有哪些

    html5复合选择器都有类选择器、ID选择器、属性选择器、伪类选择器、伪元素选择器、后代选择器、子元素选择器、相邻兄弟选择器、通用兄弟选择和群组选择器等。详细介绍:1、类选择器使用类名来选择具有相同类的元素,它使用点号表示;2、ID选择器使…

    2025年3月11日
    200
  • html5层次选择器有哪些

    html5层次选择器有后代选择器、子元素选择器、相邻兄弟选择器和通用兄弟选择器等。详细介绍:1、后代选择器用于选择某个元素的后代元素,它使用空格来表示元素之间的关系;2、子元素选择器用于选择某个元素的直接子元素,它使用大于号来表示元素之间的…

    2025年3月11日
    200
  • 什么是html5响应式布局

    HTML5响应式布局是一种基于HTML5和CSS3技术的网页设计方法,使网页能根据不同设备的屏幕大小和分辨率自动调整布局和显示效果,适应各种终端设备的浏览。通过弹性网格布局、媒体查询、弹性图片和媒体、断点和渐进增强等技术手段,实现了网页在不…

    2025年3月11日
    200
  • css3的过滤效果的简单示例

    下面小编就为大家带来一篇css3的过滤效果简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 上面的图片就是css3新特性的滤镜效果,学会了这些那么我们这群爱美爱帅的大web是不是就可以完美的用代码实现照…

    2025年3月11日
    200

发表回复

登录后才能评论