整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

平滑升级!一文掌握CSS过渡与动画属性,让你的网页动

平滑升级!一文掌握CSS过渡与动画属性,让你的网页动起来!

这里是云端源想IT,帮你轻松学IT”

嗨~ 今天的你过得还好吗?

找一颗属于你自己的星星吧

它会给你指引方向

一直到天明

- 2024.04.12 -

在网页设计中,动画效果是吸引用户眼球的重要手段。CSS动画中的过渡属性(transition)和动画(animation)属性,就像是设计师手中的魔法棒,可以让元素在页面上动起来,增加视觉吸引力,提升用户体验。

今天,我们就来揭秘这两个神奇的属性,看看它们是如何让网页变得生动活泼的。



一、过渡属性(transition)

过渡属性是CSS中的一种基本动画效果,它可以让元素的某个属性在一定的时间内平滑地从一个值变化到另一个值。这种变化可以是颜色、大小、位置等任何可以改变的属性。


属性值

1、transition-property:指定要执行过渡的属性

  • 多个属性间使用,隔开;
  • 如果所有属性都需要过渡,则使用all关键字;
  • 大部分属性都支持过渡效果;
  • 注意过渡时必须是从一个有效数值向另外一个有效数值进行过渡;


2、transition-duration:指定过渡效果的持续时间

  • 时间单位:s 和 ms(1s=1000ms)


3、transition-delay:过渡效果的延迟,等待一段时间后在执行过渡


4、transition-timing-function:过渡的时序函数

  • linear匀速运动
transition-timing-function: linear;
  • ease 默认值,慢速开始,先加速后减速
transition-timing-function: ease;
  • ease-in 加速运动
transition-timing-function: ease-in;
  • ease-out 减速运动
transition-timing-function: ease-out;
  • ease-in-out 先加速后减速
transition-timing-function: ease-in-out;
  • cubic-bezier()来指定时序函数
transition-timing-function: cubic-bezier(0.17, 1.79, 0.68, -0.69);
  • steps()分步执行过渡效果,可以设置第二个值:

end,在时间结束时执行过渡(默认值);start,在时间开始时执行过渡

/* transition-timing-function: steps(2, end); */
transition-timing-function: steps(2);
transition-timing-function: steps(2, start);

5、transition:可以同时设置过渡相关的所有属性

只有一个要求,如果要写延迟,则两个时间中第一个是持续时间,第二个是延迟时间。


示例:

/* transition: margin-left 2s 1s; */
transition-property: margin-left;
transition-duration: 2s;
transition-delay: 1s;

CSS中的animation属性是一个功能强大的工具,它允许开发者通过纯CSS的方式创建丰富的动画效果,从而增强网页的交互性和视觉吸引力。


二、动画(animation)属性

动画(animation)是CSS中的另一种属性,它比过渡更强大,可以创建更复杂的动画效果。动画允许我们定义关键帧,然后在这些关键帧之间创建平滑的过渡。


这意味着,我们可以让元素在一段时间内完成一系列的样式变化,从而创建出更丰富、更生动的动画效果。



设置动画效果,必须先要设置一个关键帧,关键帧设置了动画执行每一个步骤

@keyframes test {
from {
margin-left: 0;
}

to {
margin-left: 900px;
}
}


属性值:

1、animation-name:此属性指定要绑定到选择器的关键帧名称。关键帧是定义动画序列的地方,通过@keyframes规则创建。


2、animation-duration:定义动画完成一个周期所需的时间长度,可以设置成秒(s)或毫秒(ms)。必须明确指定该属性,因为默认值是0,如果设置为0,则动画不会播放。


3、animation-timing-function:指定动画如何完成一个周期的时间曲线,例如线性、缓动等。这决定了动画的速度在整个周期内是如何变化的。


4、animation-delay:设定动画在开始前延迟的时间,同样可设置单位为秒或毫秒。可以用来延迟动画的开始时间。



5、animation-iteration-count:确定动画循环播放的次数,可以是特定的数字或者infinite表示无限循环。

  • infinite 无限执行


6、animation-direction:规定动画在每次循环时是否反向播放,常用的值有normal(正常)和alternate(交替)。

  • normal 从from向to运行,每次都是这样,默认值
  • reverse 从to向from运行,每次都是这样
  • alternate 从from向to运行,重复执行动画时反向执行
  • alternate-reverse 从to向from运行,重复执行动画时反向执行

想要快速入门前端开发吗?推荐一个前端开发基础课程,这个老师讲的特别好,零基础学习无压力,知识点结合代码,边学边练,可以免费试看试学,还有各种辅助工具和资料,非常适合新手!点这里前往学习哦!云端源想

7、animation-fill-mode:定义动画在开始前和结束后的状态,比如可见或隐藏。

  • none 动画执行完毕,元素回到原来位置,默认值
  • forwards 动画执行完毕,元素会停止在动画结束的位置
  • backwards 动画延时等待时,元素就会处于开始位置
  • both 结合了forwards和backwards



8、animation-play-state:控制动画是否正在运行或暂停,常见的值有running(运行)和paused(暂停)。


此外,在使用animation属性时,至少需要指定两个属性:动画的名称和动画的持续时间。其他属性可以根据需要选择性地设置,以达到预期的动画效果。


示例

/* animation-name: test;
animation-duration: 2s;
animation-delay: 2s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-fill-mode: both; */

animation: test 2s 2s linear infinite alternate both;

总结来说,CSS的animation属性提供了一种在不使用JavaScript的情况下,通过纯CSS实现网页元素动画的方式。它能够使元素从一种样式平滑过渡到另一种样式,增强用户的视觉体验。


通过这篇文章,我们了解了CSS动画中的过渡属性和动画属性的基本概念和应用。它们可以帮助我们创建出各种吸引人的动画效果,让我们的网页更加生动有趣。


记住,好的动画效果应该是恰到好处的,过多的动画可能会让用户感到困扰。所以,让我们一起用好这两个属性,创造出更好的用户体验吧!



我们下期再见!

END

文案编辑|云端学长

文案配图|云端学长

内容由:云端源想分享

周在给学生讲授JavaScript课程中setInterval方法时,想到了我们在网上看到的各类GIF动图比较有意思,就将其引入到教学中,教学内容设计如果通过HTML5与JavaScript实现网页类似GIF效果的动态图。于是在网上搜集了部分gif格式动图,将每一个Gif动图分解为一组jpg格式图片,再采用setInterval与html5 Canvas进行动画的实现。通过学习可以让学生进一步了解canvas动画实现的过程与原理。并将其发布到头条,也希望对有兴趣的初学者了解HTML5 Canvas等有所帮助。图片分组图片素材如下:

素材一

实现动画的素材我们已经给出,主要通过gif动图导出一组图片,下面对html5动画实现过程进行简单说明。


基本思路

实现其动画的基本思路是通过HTML5提供的canvas元素进行图片的绘制与展示,借助setInterval方法实现间隔指定时间调用新的图片实现重新绘图。其中绘图主要使用drawImage方法进行绘图,最终通过图片依次重绘实现动画效果。具体实现过程如下:

HTML5 Canvas设置

在页面body部分添加Canva标签,设置其id属性为canv,宽度为600,高度为400,编写代码描述如下图:

添加画布元素

canvas浏览效果

加载图片资源

使用Canvas借助JavaScript提供的drawImage方法进行绘图,需要提供要绘制的图片资源即绘图的坐标位置。该方法原型如下:

drawImage方法原型

因此我们需要加载图片资源,本例由于需要调用多个img实现定时不同图片的绘制,因此我们可以使用数组存储所加载的图片资源。本例图片数量为14,因此我们数组长度为14。使用素组存储图片实现代码如下:

加载图片资源代码

定义页面加载事件onload

本例设计在页面加载时自动播放动画,因此需要在JavaScript脚本中添加页面onload事件,在事件中编写绘图相关代码,主要代码包括获取画布canva与实例化绘图对象context。部分代码描述如下:

onload事件及绘图初始化

使用setInterval实现动画

使用setInterval方法实现动画主要需要定义回调函数与回调函数触发执行的周期,本例中我们使用匿名函数作为回调函数,触发周期设置为100毫秒。setInterval函数定义如下:

setInterval函数

在定义完函数之后可在其匿名函数函数体部分写入绘图方法dramImage(),实现周期调用不同图片资源进行绘图,最终展示出动画效果。为了保证循环调用14张图片,我们需要设置一计数全局变量i,由于我们图片采用数组存储,下标为数组,且从0-13进行编号,因此当计数值小于13时自动+1,指向下一数组下标,当为13时,设置计数值为0,回到数组第一元素,最终实现数组访问下标的循环。setInterval实现完整代码如下:

setInterval完整代码

实现效果展示


HTML动画效果展示


本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。期待大家关注!如需案例完整代码请关注并私信,往期前端设计文章链接如下:

  1. 前端设计-JavaScript中的值、引用传递与垃圾回收
  2. 前端设计-JavaScript美女拼图游戏开发实例
  3. 前端设计- JavaScript验证码制作及实例分析
  4. 前端设计-Ajax技术及实例展示
  5. 前端设计-响应式页面开发基础
  6. Web开发前端、后端与全栈的区别是什么?

们经常看到许多网站或者H5的动画都做成了整屏切换的形式,为提高用户体验,会在首屏页面下方放上一个动态的向下箭头来提示用户切换至下一屏。

动态箭头的效果图如下:

那么这种效果是如何实现的呢?

其实非常简单,在CSS3中提供了animation属性,专门用于动画。要使用这个属性,需要先了解@keyframes的创建规则,在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果。

在这个动画中,我们能够看出在整个动画中改变的是箭头的位置,所以我们在创建动画时,只需要给定箭头的起始位置,利用animation让他动起来就可以了。

接下来,我们一步一步完成。

1、首先找到你所需要的箭头图片,将他利用定位的方式放在首屏的底部。

a)html代码(将图片以背景或者插入图片的形式放入标签内,demo以背景形式展示)

b)css代码(利用定位将箭头放在首屏的底部适当位置,网站中大部分情况会进行左右居中)

2、然后进行动画创建,最简单的方式就是只给定初始的以及结束的css样式即可。

css 代码

标注出来的为动画的自定义名称,可以根据你的动画行为来定义。

0%为初始状态,即刚开始动画时。

100%为结束状态,即动画进行到100%时。

动画改变了箭头的底部位置,由距离底部80像素变到了距离底部0像素。

3、接下来利用animation属性让他具有动画效果

css代码:

第一个参数表示你所使用的动画的名称(即我们创建的动画的动画名称),

第二个参数表示动画完成的时间(即由0%到100%所用的时间),

第三个参数表示动画执行的次数(可以为任意数字,infinite表示规定动画无限次播放),因此造成了一个动态的箭头的视觉效果。

通过以上三个步骤即可完成这个简单的动画效果,很多的动画效果都可以通过创建动画的方式来实现。

原文地址北京市盛世阳光文化传播有限责任公司:http://www.gonet.com.cn/webduirshow-140.html