用@keyframes-animation来实现动画效果

一、使用规则

  • @keyframes

用于定义动画的关键帧。

  • animation属性

用于将@keyframes动画用于元素上。

二、基本语法

  • @keyframes
css 复制代码
@keyframes xuanZhuan { /*xuanZhuan是动画名字,实现旋转*/
            0%{
                transform: rotate(0deg);
            }
            50%{
                transform: rotate(180deg);
            }
            100%{
                transform: rotate(360deg);
            }
            /*(0%,25%,50%,75%100%)定义了动画的各个阶段*/        
        }
        @keyframes Fadeimg{     /*实现动画变淡的过程*/
            from{   /*初始状态,类似于0%*/
                opacity: 1;
            }
            precent{    /*中间状态---50%*/
                opacity: 0.5;
            }
            to{     /*结束的状态-100%*/
                opacity: 0;
            }
  • animation
css 复制代码
.box1 img{
            width: 100px;
            height: 100px;
            border-radius: 50%;
            position: relative;
            /*animation: 动画名称 持续时间 动画速度曲线 延迟时间 重复次数 动画方向 填充模式;*/
            animation: xuanZhuan 10s infinite linear;   /*旋转10s,以线性速度无限旋转*/
        }
        .box2{
            width: 200px;
            height: 200px;
            background-color: #bb2a2ae3;
            animation: Fadeimg 3s ease-in-out infinite; /* 3秒内淡入淡出,无限循环*/
        }

完整代码:

css 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动画</title>
    <style>
        @keyframes xuanZhuan { /*xuanZhuan是动画名字,实现旋转*/
            0%{
                transform: rotate(0deg);
            }
            50%{
                transform: rotate(180deg);
            }
            100%{
                transform: rotate(360deg);
            }
            /*(0%,50%,100%)定义了动画的各个阶段*/        
        }
        @keyframes Fadeimg{     /*实现动画变淡的过程*/
            from{   /*初始状态,类似于0%*/
                opacity: 1;
            }
            precent{    /*中间状态---50%*/
                opacity: 0.5;
            }
            to{     /*结束的状态-100%*/
                opacity: 0;
            }
        }
       .box{
        display: flex;
        flex-direction: row;
       }
        .box1{  
            width: 300px;
            height: 300px;
        }
        .box1 img{
            width: 100px;
            height: 100px;
            border-radius: 50%;
            position: relative;
            /*animation: 动画名称 持续时间 动画速度曲线 延迟时间 重复次数 动画方向 填充模式;*/
            animation: xuanZhuan 10s infinite linear;   /*旋转10s,以线性速度无限旋转*/
        }
        .box2{
            width: 200px;
            height: 200px;
            background-color: #bb2a2ae3;
            animation: Fadeimg 3s ease-in-out infinite; /* 3秒内淡入淡出,无限循环*/
        }
    </style>
</head>
<body>
    <div class="box">
    <div class="box1">
        <img src="图片/头像.jpg">
    </div>
    <div class="box2"></div>
    </div>  
</body>
</html>

动画效果:

/*这个动画效果视频上传后,我这里并没有播放出来*/

媒体1

三、@keyframes 的常见用途

  • transform

|-----------------------|------------------------------|
| 函数名 | 用途 |
| translate(x,y) | 将元素在水平和垂直方向上移动。 |
| translateX(x) | 水平上移动 |
| translateY(y) | 垂直上移动 |
| translate3d(x,y,z) | 分别表示在x,y,z轴上的位移 |
| rotate(90deg) | 旋转指定角度(90度) |
| rotate3d(x,y,z,angle) | 前三个参数表示旋转轴的向量 ,第四个参数表示旋转的角度。 |
| scale(x,y) | 将元素缩放 |
| scaleX(x) | 水平方向上缩放 |
| scaleY(y) | 垂直上缩放 |
| skew(x,y) | 将元素倾斜 |
| skewX(x) | 水平上倾斜 |
| skewY(y) | 垂直上倾斜 |

代码:

css 复制代码
  @keyframes xuanZhuan { 
 
    0% {
        /* 动画的初始状态 */
        /*transform: translateX(10px); 
        transform: scale(5, 5); 
        注意:上面有两个 transform 属性,只有最后一个会生效 */
        transform: translateX(10px) scale(5, 5); /* 在 X 轴上平移 10px,并放大 5 倍 */
    }
    50% {
        /* 动画进行到 50% 时的状态 */
        transform: translateY(10px) rotate3d(1, 1, 1, 360deg); /* 在 Y 轴上平移 10px,并旋转 360 度 */
    }
    100% {
        /* 动画的结束状态 */
        transform: translate3d(5px, 10px, 5px); /* 在 3D 空间中平移 (5px, 10px, 5px) */
    }  
}

效果:

媒体1

  • opacity:控制元素的透明度//这里就不演示了,上面有代码
  • background-color:改变背景颜色

......

四、animation属性

  • animation-name:指定动画的名称

  • animation-duration:指定动画的持续时间,单位为秒或毫秒

  • animation-timing-function:指定动画的速度曲线,控制动画的快慢变化。

  1. linear:匀速

2)ease:慢快慢(默认值)

  1. ease-in:慢开始。

  2. ease-out:慢结束。

  3. ease-in-out:慢开始和慢结束。

  4. cubic-bezier(n,n,n,n):自定义速度

  • animation-direction:指定动画的播放方向。

1)normal:正向播放(默认值)

2)reverse:反向播放

3)alternate:正向和反向交替播放

4)alternate-reverse:反向和正向交替播放

  • animation-play-state:指定动画的播放状态。

1)running:动画运行

2)paused:动画暂停

  • animation-fill-mode:指定动画结束后的状态

1)none:恢复初态

2)forwards:保留最后一帧的状态

3)backwards:保留第一帧的状态

4)both:同时应用forwards和backwards

  • animation-iteration-count:指定动画的重复次数。(infinite:无限循环)
  • animation-delay:指定动画开始前的延迟时间,单位为秒或毫秒

代码:

css 复制代码
.box1 img {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    position: relative;
    /*animation: xuanZhuan 10s infinite linear; */
    /* 使用 animation 子属性 */
    animation-name: xuanZhuan;  /* 动画名称 */
    animation-duration: 10s;    /* 动画持续时间 */
    animation-timing-function: linear;  /* 动画速度曲线 */
    animation-iteration-count: infinite;  /* 动画重复次数 */
}
相关推荐
崔庆才丨静觅21 分钟前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60611 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了1 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅1 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅2 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅2 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment2 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅2 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊2 小时前
jwt介绍
前端
爱敲代码的小鱼3 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax