CSS变形与动画(三):animation帧动画详解(用法 + 四个例子)

news2024/12/23 17:41:48

文章目录

    • animation 帧动画
      • 使用
      • 定义
      • 例子1 字母
      • 例子2 水滴
      • 例子3 会动的边框
      • 例子4 旋转木马

animation 帧动画

定义好后作用于需要变化的标签上。

使用

animation-name 设置动画名称
animation-duration: 设置动画的持续时间
animation-timing-function 设置动画渐变速度
animation-delay 设置动画延迟时间
animation-iteration-count 设置动画执行次数 无穷次(infinite)
animation-direction 设置动画的方向 值有alternate(交替)
animation-play-state 设置动画播放的状态 值 paused(暂停)
也可以向 transiton 那样多种属性写在一起,如:

animation: dh 4s linear 0s infinite alternate;

定义

@keyframes 动画的名称{  
    百分数 | to | from {  
        .....  
    }  
} 

例子1 字母

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @keyframes dh {
            30% {
                width:200px;
                margin-left: 5px;
                background: blue;
                border-radius: 10%;
                border: 5px solid yellow;
            }
            50% {
                height: 300px;
                margin-left: 100px;
                background: yellow;
                border-radius: 50%;
                border: 5px solid white;
            }
            100% {
                height: 200px;
                margin-left: 500px;
                background: white;
                border-radius: 100%;
                border: 5px solid blue;
            }
        }
        .mb{
            height:600px;
            padding:50px ;
            display: flex;
            background: pink;
            align-items: center;
        }
        .b{
            border: 5px solid black;
            width:150px;
            background: red;
            height: 150px;
            animation:  4s linear 0s infinite alternate dh;
        }
    </style>
</head>
<body>
    <div class="mb">
        <div class="b">

        </div>
    </div>
</body>
</html>

例子2 水滴

水滴:除了不太像,还是挺像的。。。
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            height:100vh;
            background: #81ecec;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        body .sd{
            width:300px;
            height: 300px;
            background: rgb(255,255,255,0.1);
            border-radius: 36% 64% 73% 27% / 37% 57% 43% 63% ;
            box-shadow: 10px 10px 20px #518a8a, 5px 5px 20px #518a8a inset,
            -10px -10px 30px #c5f2f2 inset;
            padding: 20px;
            animation: dh 5s ease alternate infinite;
        }   
        body .sd::after{
            margin-top: 10px;
            margin-left: 70px;
            float: left;
            content:" ";
            width:40px;
            height:40px;
            background: rgb(255,255,255,0.1);
            border-radius: 36% 64% 73% 27% / 37% 57% 43% 63% ;
            box-shadow: -2px -2px 30px #cff6f6 inset;
        }
        body .sd::before{
            margin-top: 40px;
            margin-left: 70px;
            float: left;
            content:" ";
            width:20px;
            height:20px;
            background: rgba(145, 237, 237, 0.1);
            border-radius: 36% 64% 73% 27% / 37% 57% 43% 63% ;
            box-shadow: -2px -2px 30px #cff3f3 inset;
        }
        @keyframes dh {
            30%{
                border-radius: 65% 35% 56% 44% / 48% 41% 59% 52% ;
                width:350px;
                height: 350px;
            }
            50%{
                border-radius: 40% 60% 28% 72% / 70% 71% 29% 30% ;
                width:325px;
                height: 320px;
            }
            80%{
                border-radius: 40% 60% 70% 30% / 74% 48% 52% 26% ;
                width:320px;
                height: 270px;
            }
            100%{
                border-radius: 46% 54% 17% 83% / 54% 38% 62% 46% ;
                width:275px;
                height: 300px;
            }
        }
    </style>
</head>
<body>
    <div class="sd">

    </div>
</body>
</html>

例子3 会动的边框

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        body{
            display: flex;
            height: 100vh;
            justify-content: center;
            align-items: center;
            background:#000;
        }

        .box{
            position: relative;
            overflow: hidden;
        }
        .box .txt{
            display: flex;
            font-size: 300px;
            background: linear-gradient(45deg, red, blue, green,pink);
            -webkit-background-clip: text;
            color:transparent;
            justify-content: center;
            align-items: center;
            padding:0 40px;
        }
        .box .xz{
            width:150px;
            height: 600px;
            position: absolute;
            top:50%;
            left: 50%;
            /* transform: translate(-50%, -50%); */
            background: linear-gradient(red, blue, green,pink);
            animation: dh 4s linear 0s infinite;
            transform-origin: 0 0 ;
            z-index: -2;
        }
        .box .txt::before{
            content:"";
            position:absolute;
            display: block;
            width:96%;
            height:94%;
            background: #000;
            z-index: -1;
        }
        @keyframes dh {
            0%{
                rotate: 0deg;
            }
            100%{
                rotate: 360deg;
            }
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="txt">
            Hello
        </div>
        <div class="xz">

        </div>
    </div>
</body>
</html>

例子4 旋转木马

在这里插入图片描述
可以自己往里面放点图片。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        body{
            display: flex;
            height:100vh;
            justify-content: center;
            align-items: center;
            background-color: black;
            perspective: 1000px;
        }
        .box{
            width:200px;
            height:200px;
            display: flex;
            position: relative;
            transform-style: preserve-3d;
            animation: action 30s linear infinite; 
        }
        .box .item{
            width:200px;
            height:200px;
            position: absolute;
            box-shadow: 0 0 20px white;
            -webkit-box-reflect: below 2px linear-gradient(transparent, rgba(0, 0, 0, .5));
        }
        .box .item:nth-child(1)
        {
            background-color: blue;
            transform: rotateY(0deg) translateZ(500px);
        }
        .box .item:nth-child(2)
        {
            background-color: pink;
            transform: rotateY(60deg) translateZ(500px) ;
        }
        .box .item:nth-child(3)
        {
            background-color: red;
            transform: rotateY(120deg) translateZ(500px) ;
        }
        .box .item:nth-child(4)
        {
            background-color: white;
            transform:rotateY(180deg) translateZ(500px) ;
        }
        .box .item:nth-child(5)
        {
            background-color: green;
            transform:rotateY(240deg) translateZ(500px) ;
        }
        .box .item:nth-child(6)
        {
            background-color: yellow;
            transform:rotateY(300deg) translateZ(500px) ;
        }
        @keyframes action{
            0%{
                transform: rotateX(-10deg) rotateY(0deg);
            }
            100%{
                transform: rotateX(-10deg)rotateY(360deg);
            }
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/892804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[C++] 迭代器失效示例

迭代器失效&#xff1a; 如果迭代器失效&#xff0c;那么就不能再使用这个迭代器。 如果使用&#xff0c;那么结果是未定义的。 我们以模拟实现vector的insert为例。 一、野指针 1、insert实现 这里的pos会变成野指针。 当扩完容后&#xff0c;由于空间的改变&#xff0…

Docker 网络之 ipvlan 和 macvlan

Docker ipvlan 和 macvlan 引言 本文讲解了Docker 网络模式中的 ipvlan 和 macvlan 的区别,目前自己在生产环境中使用的 ipvlan 模式非常问题.也解决了实际业务问题. IPvlan L2 mode example ipvlan 无需网卡混杂模式 , 运行如下命令后可以生成一个 vlan 子接口 , 会和主网…

不懂瞎指挥,就会闯大祸

不懂瞎指挥&#xff0c;就会闯大祸 【安志强趣讲《孙子兵法》第12讲】 【原文】 故君之所以患于军者三&#xff1a;不知军之不可以进而谓之进&#xff0c;不知军之不可以退而谓之退&#xff0c;是谓縻军&#xff1b; 【注释】 患&#xff0c;危害、贻害。 縻&#xff08;m&…

算法通关村第十关 | 归并排序

1. 归并排序原理 归并排序&#xff08;MERARE-SORT&#xff09;简单来说就是将大的序列先视为若干个比较小的数组&#xff0c;分成比较小的结构&#xff0c;然后是利用归并的思想实现的排序方法&#xff0c;该算法采用经典的分治策略&#xff08;分就是将问题分成一些小的问题分…

【Unity每日一记】计时器——各种方法的实现

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

如何使用CSS实现一个响应式图片网格布局?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现响应式图片网格布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴…

【ARM】Day5 uart总线, LED点亮实验(C语言实现)

1. 思维导图 2. LED点灯实验&#xff08;C语言实现&#xff09; gpio.h #ifndef _LED_H__ //防止头文件重复包含_ #define _LED_H__//RCC_MP_AHB4ENSETR寄存器封装 #define RCC_MP_AHB4ENSETR (*(volatile unsigned int*)0x50000A28)//GPIO使用封装结构体 typedef struct{v…

postgresql 分组

postgresql 数据汇总 分组汇总聚合函数注意 总结 分组统计总结 高级分组总结 分组汇总 聚合函数 聚合函数&#xff08;aggregate function&#xff09;针对一组数据行进行运算&#xff0c;并且返回单个结果。PostgreSQL 支持以下常见的聚合函数&#xff1a; • AVG - 计算一…

LLM - 大模型评估指标之 ROUGE

目录 一.引言 二.ROUGE-简介 1.ROUGE-N 2.ROUGE-L 3.ROUGE-W 4.ROUGE-S 三.ROUGE-实现 1.How To Use 2.Inputs 3.Outputs 四.总结 一.引言 ROUGE 代表面向召回的研究&#xff0c;用于 Gisting 评估。它包括通过将摘要与人类创建的其他摘要进行比较来自动确定摘要质…

BC108 矩阵交换

描述 KiKi有一个矩阵&#xff0c;他想知道经过k次行变换或列变换后得到的矩阵。请编程帮他解答。 输入描述 第一行包含两个整数n和m&#xff0c;表示一个矩阵包含n行m列&#xff0c;用空格分隔。 (1≤n≤10,1≤m≤10) 从2到n1行&#xff0c;每行输入m个整数&#xff08;范围-…

【Linux操作系统】深入探索Linux进程:创建、共享与管理

进程的创建是Linux系统编程中的重要概念之一。在本节中&#xff0c;我们将介绍进程的创建、获取进程ID和父进程ID、进程共享、exec函数族、wait和waitpid等相关内容。 文章目录 1. 进程的创建1.1 函数原型和返回值1.2 函数示例 2. 获取进程ID和父进程ID2.1 函数原型和返回值2.…

消息中间件-kafka实战-第六章-kafka加线程池多线程消费

目录 参考架构图延时队列 参考 头条面试&#xff1a;当线上Kafka集群有大量消息积压时&#xff0c;如何利用多线程消费解决消费积压问题 架构图 延时队列

Python查找交作业人数

写在前面&#xff1a; 利用Python实现交作业具体情况&#xff0c;能够高效快捷地收集作业&#xff01; 一、问题&#xff1a;获取test文件夹下的所有文件 二、Python中os.listdir()函数的用法 &#xff08;一&#xff09;os.listdir()函数的基本用法 os.listdir()函数的基本…

linux系统中的中文显示问题

经常遇到这种情况&#xff1a;某些项目的文件中不可避免地包含有中文&#xff0c;在Windows系统中没有任何问题&#xff0c;拷到Linux系统中就出问题了。 1. Linux系统设置 $echo $LANG en_US.iso885915 朋友建议我设置为&#xff1a; export LANGzh_CN.utf8 但我这样设置之…

CSS中的z-index属性有什么作用?如何控制元素在层叠上下文中的显示顺序?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ z-index 属性的作用及控制元素层叠顺序作用 ⭐ 控制元素层叠顺序⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff0…

什么是flexbox布局?它有什么特点和优势?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是 Flexbox 布局&#xff1f;⭐ 特点和优势⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那…

数据结构,线性表,顺序表基础。

1.线性表 线性表特征&#xff1a; 对非空表&#xff0c;a0是表头&#xff0c;无前驱a(n-1)是表尾&#xff0c;无后继其他的都有ai前驱a(i-1)与后继a(i1)。 2、顺序结构存储方式是线性表存储的一种方式&#xff0c;主要体现形式为数组。 #include<stdio.h> #include<st…

密码学学习笔记(十八):Diffie–Hellman (DH) 密钥交换

DH算法是第一个密钥交换算法&#xff0c;也是第一个得到形式化描述的公钥密码算法。 群论 DH密钥交换算法基于数学中的群论&#xff0c;群论也是当今大多数公钥密码的基础。 要使集合及其运算成为一个群&#xff0c;需要满足以下性质&#xff1a; 封闭性&#xff1a;群中两…

Eureka 的几种主动下线服务的方式

补充&#xff1a;在启动eureka服务的时候发现控制台有以下的输出 由此猜想可以通过改接口下线服务&#xff0c; 于是尝试了一下。 果然能从注册中心中移除该实例。 1. 直接停掉服务。 默认情况下&#xff0c;如果Eureka Server在90秒没有收到Eureka客户的续约&#xff0c;它…