随笔 - 755  文章 - 0 评论 - 33 阅读 - 135万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

一、@keyframes定义动画

通过 @keyframes 规则,您能够创建动画。创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式。在动画过程中,您能够多次改变这套 CSS 样式。

以百分比来规定改变发生的时间,或者通过关键词 "from" 和 "to",等价于 0% 和 100%。0% 是动画的开始时间,100% 动画的结束时间。

提示:为了获得最佳的浏览器支持,您应该始终定义 0% 和 100% 选择器。

提示:请使用动画属性来控制动画的外观,同时将动画与选择器绑定。

CSS 语法:

@keyframes animationname {keyframes-selector {css-styles;}}

例子:

使 div 元素匀速向下移动:

复制代码
<!DOCTYPE html>
<html>
<head>
<style> 
div
{
  width:100px;
  height:100px;
  background:red;
  position:relative;
  animation:mymove 5s infinite;
  -moz-animation:mymove 5s infinite; /* Firefox */
  -webkit-animation:mymove 5s infinite; /* Safari and Chrome */
  -o-animation:mymove 5s infinite; /* Opera */
}

@keyframes mymove
{
  from {top:0px;}
  to {top:200px;}
}

@-moz-keyframes mymove /* Firefox */
{
from {top:0px;}
to {top:200px;}
}

@-webkit-keyframes mymove /* Safari and Chrome */
{
from {top:0px;}
to {top:200px;}
}

@-o-keyframes mymove /* Opera */
{
from {top:0px;}
to {top:200px;}
}
</style>
</head>
<body>
复制代码

动画如下:

例2

复制代码

div
{
  width:100px;
  height:100px;
  background:red;
  position:relative;
  animation:mymove 5s infinite;
  -moz-animation:mymove 5s infinite; /* Firefox */
  -webkit-animation:mymove 5s infinite; /* Safari and Chrome */
  -o-animation:mymove 5s infinite; /* Opera */
}

@keyframes mymove
{
  0%   {top:0px;}
  25%  {top:200px;}
  75%  {top:50px}
  100% {top:100px;}
}
复制代码

效果如下:

例3:在一个动画中改变多个 CSS 样式:

复制代码
div
{
  width:100px;
  height:100px;
  background:red;
  position:relative;
  animation:mymove 5s infinite;
  -moz-animation:mymove 5s infinite; /* Firefox */
  -webkit-animation:mymove 5s infinite; /* Safari and Chrome */
  -o-animation:mymove 5s infinite; /* Opera */
}

@keyframes mymove
{
  0%   {top:0px; background:red; width:100px;}
  100% {top:200px; background:yellow; width:300px;}
}
复制代码

效果:

例4:带有多个 CSS 样式的多个 keyframe 选择器:

复制代码

div
{
  width:100px;
  height:100px;
  background:red;
  position:relative;
  animation:mymove 5s infinite;
  -moz-animation:mymove 5s infinite; /* Firefox */
  -webkit-animation:mymove 5s infinite; /* Safari and Chrome */
  -o-animation:mymove 5s infinite; /* Opera */
}

@keyframes mymove
{
  0%   {top:0px; left:0px; background:red;}
  25%  {top:0px; left:100px; background:blue;}
  50%  {top:100px; left:100px; background:yellow;}
  75%  {top:100px; left:0px; background:green;}
  100% {top:0px; left:0px; background:red;}
}
复制代码

效果:

例5:微信小程序中的动画

wxml

<view class="daily_work">
    <view class="daily_work_title">日常工作</view>
    <view class="scroll_ul" wx:if="{{list1 && list1.length > 0}}">
        <text wx:for="{{list1}}">{{item}}</text>
    </view>    
  </view>

wxss

复制代码
.daily_work{
  margin: 200rpx 20rpx 20rpx 20rpx;
  width: 710rpx;
  background-color: #EDF1F9;
  border-radius: 6px;
  position: fixed;
  height: 100px;
  overflow: hidden;
  
}
.daily_work .daily_work_title{
  margin: 20rpx 0 20rpx 20rpx;
  font-weight: bolder;
}
.daily_work .scroll_ul {
  padding:5px 0;
  white-space: nowrap;/*禁止换行*/
  animation: mymove 10s linear infinite; /* 滚动动画 */
}

.daily_work .scroll_ul text {
  display:inline-block;
  margin-right:10px;
  height: 40px;
  line-height: 40px;
  font-size: 28rpx;
  padding:0 6px;
  border-radius: 6px;
  background-color: #CDD9EE;
  color: #4E79C2;
}

@keyframes mymove {
  100% {
    transform: translateX(-500px); // 到100%时向左移动500px
  }
}
复制代码

js:

data: {
      list1: ["起床","扫地","拖地","晾衣服","吃早餐","骑车去上班","上班","吃中餐","上班","骑车回家","吃晚餐","带娃","洗澡","睡觉"]
    },

效果:

二、animation设置动画属性

1、animation定义和用法

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

注释:请始终规定 animation-duration 属性,否则时长为 0,就不会播放动画了。

实例

使用简写属性,将动画与 div 元素绑定:

div
{
  animation:mymove 5s infinite;
}

CSS 语法

animation: name duration timing-function delay iteration-count direction;

默认值:none 0 ease 0 1 normal

2、animation-timing-function的CSS语法:

animation-timing-function: value;

animation-timing-function 使用名为三次贝塞尔(Cubic Bezier)函数的数学函数,来生成速度曲线。您能够在该函数中使用自己的值,也可以预定义的值:

linear表示匀速

3、animation-timing-function的CSS语法:

animation-iteration-count: n|infinite;

infinite表示无限次播放动画

4、animation-duration

animation-duration 属性定义动画完成一个周期所需要的时间,以秒或毫秒计。

css语法:

animation-duration: time;

 



感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted on   周文豪  阅读(353)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2022-10-17 VUE3+Element-plus在input框使用属性方式添加图标
点击右上角即可分享
微信分享提示