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

文章目录

    • 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>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

做好需求分析的4大关键认知

探索如何正确的需求分析&#xff1f;本文详细介绍了4大关键点&#xff0c;帮助您明确用户与产品需求、深入挖掘用户动机&#xff0c;并为产品经理提供筛选需求的实用建议。 一、什么是需求分析以及重要性 需求分析指的是在建立一个新的或改变一个现存的产品时&#xff0c;确定新…

docker run 命令30个常用参数详解

文章目录 0.前言docker run 命令示例 2.Docker run 多种用法知其然知其所以然1. 基本用法2. 启动交互式容器3. 映射端口4. 挂载文件/目录5. 设置环境变量6. 指定容器名称7. 后台运行容器8. 重启策略9. 其他参数 2. docker run 命令参数详解1. -d&#xff1a;以后台模式&#xf…

【云原生,k8s】基于Helm管理Kubernetes应用

第四阶段 时 间&#xff1a;2023年8月18日 参加人&#xff1a;全班人员 内 容&#xff1a; 基于Helm管理Kubernetes应用 目录 一、Kubernetes部署方式 &#xff08;一&#xff09;minikube &#xff08;二&#xff09;二进制包 &#xff08;三&#xff09;Kubeadm …

(白帽黑客)自学笔记

一、前言&#xff1a; 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以…

Unity自定义脚本的 初始模版

参考博主&#xff1a;Unity修改创建的脚本模板&#xff0c;Unity脚本模板路径_unity hub 怎么改脚本模板_先生沉默先的博客-CSDN博客 【100个 Unity实用技能】 ☀️ | Unity自定义脚本的初始模版_unity 模板脚本_呆呆敲代码的小Y的博客-CSDN博客 一&#xff0c;将脚本放到Ed…

【java毕业设计】基于Spring Boot+Vue+mysql的论坛管理系统设计与实现(程序源码)-论坛管理系统

基于Spring BootVuemysql的论坛管理系统设计与实现&#xff08;程序源码毕业论文&#xff09; 大家好&#xff0c;今天给大家介绍基于Spring BootVuemysql的论坛管理系统设计与实现&#xff0c;本论文只截取部分文章重点&#xff0c;文章末尾附有本毕业设计完整源码及论文的获取…

利用Python隧道爬虫ip轻松构建全局爬虫网络

嘿&#xff0c;爬虫程序员们&#xff01;你们有没有碰到过需要大规模数据爬取的情况&#xff1f;也许你们之前遇到过网站的反爬措施&#xff0c;卡住你们的进度。别担心&#xff0c;今天我来分享一个利用Python隧道爬虫ip实现的方法&#xff0c;帮助你们轻松搭建全局爬虫ip网络…

2.SpringMvc中Model、ModelMap和ModelAndView使用详解

1.前言 最近SSM框架开发web项目&#xff0c;用得比较火热。spring-MVC肯定用过&#xff0c;在请求处理方法可出现和返回的参数类型中&#xff0c;最重要就是Model和ModelAndView了&#xff0c;对于MVC框架&#xff0c;控制器Controller执行业务逻辑&#xff0c;用于产生模型数据…

OJ练习第150题——分割回文串

分割回文串 力扣链接&#xff1a;131. 分割回文串 题目 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 Java代码 class Solution {List<List…

C++ STL list

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C之 STL list介绍和模拟实现 ☂️<3>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<4>前言&#xff1a;上次我们详细的介绍了vector&#xff0c;今天我们继续来介绍…

卷积操作后特征图尺寸,感受野,参数量的计算

文章目录 1、输出特征图的尺寸大小2、感受野的计算3、卷积核的参数量 1、输出特征图的尺寸大小 如果包含空洞卷积&#xff0c;即扩张率dilation rate不为1时&#xff1a; 2、感受野的计算 例如&#xff0c;图像经过两个3*3&#xff0c;步长为2的卷积后感受野为&#xff1a; co…

Docker数据卷容器

1.数据卷容器介绍 即使数据卷容器c3挂掉也不会影响c1和c2通信。 2.配置数据卷容器 创建启动c3数据卷容器&#xff0c;使用-v参数设置数据卷。volume为目录&#xff0c;这种方式数据卷目录就不用写了&#xff0c;直接写宿主机目录。 创建c1、c2容器&#xff0c;使用–volum…

nginx反向代理流程

一、nginx反向代理流程 反向代理&#xff1a;使用代理服务器来接受internet上的连接请求&#xff0c;然后将请求转发给内部网络中的上游服务器&#xff0c;并将上游服务器得到的结果返回给请求连接的客户端&#xff0c;代理服务器对外表现就是一个web服务器。Nginx就经常拿来做…

ByteBuffer 使用

ByteBuffer 使用 1 java.nio包中的类定义的缓冲区类型2 缓冲区常用属性2.1缓冲区的容量(capacity)2.2 缓冲区的位置(position)2.3 缓冲区的限制(limit)2.4 缓冲区的标记(mark)2.5 剩余容量 remaining/hasRemaining 3 缓冲区常用方法3.1 创建缓冲区3.1.1 allocate方法3.1.2 wrap…

87-基于stm32单片机粮仓仓库环境温湿度烟雾监测报警系统Proteus仿真+源码

资料编号&#xff1a;087 一&#xff1a;功能介绍&#xff1a; 1、采用stm32单片机OLED显示屏烟雾浓度检测DHT11温湿度电机按键蜂鸣器&#xff0c;制作一个温湿度采集、烟雾浓度采集&#xff0c;OLED显示相关数据&#xff0c; 2、通过按键设置温度上限、烟雾浓度上限&#xff0…

JVM虚拟机:初始化的介绍

本文重点 我们前面学习了三个步骤: 装载 连接 初始化 初始化 初始化的时候,会为静态成员变量赋值初始值,它有两种方式: ①声明类变量是指定初始值 ②使用静态代码块为类变量指定初始值 例子 最后输出的结果为3,它的过程是这样的: main方法中输出T.count,由于count是…

爬虫的代理IP池写哪里了?

亲爱的程序员小伙伴们&#xff0c;想要提高爬虫效率和稳定性&#xff0c;组建一个强大的代理IP池是非常重要的一步&#xff01;今天我就来和你分享一下&#xff0c;代理IP池到底应该写在哪里&#xff0c;以及如何打造一个令人瞩目的代理IP池&#xff01;准备好了吗&#xff1f;…

学习笔记整理-面向对象-03-构造函数

一、构造函数 1. 用new调用函数的四步走 new 函数();JS规定&#xff0c;使用new操作符调用函数会进行"四步走"&#xff1a; 函数体内会自动创建出一个空白对象函数的上下文(this)会指向这个对象函数体内的语句会执行函数会自动返回上下文对象&#xff0c;即使函数没…

STM32单片机SPI通信实战:示例代码详解与应用案例

引言&#xff1a; 单片机SPI&#xff08;串行外设接口&#xff09;通信是一种常用的串行同步通信协议&#xff0c;用于单片机与外设之间的高速数据传输。SPI通信具有简单、高效、可靠等特点&#xff0c;在各种嵌入式系统中被广泛应用。本文将介绍单片机SPI通信的原理、配置和性…

人工智能在网络安全中的应用: 分析人工智能、机器学习和深度学习等技术在预测、检测和应对网络攻击中的作用

第一章&#xff1a;引言 随着信息技术的迅猛发展&#xff0c;网络安全已成为当今社会不容忽视的重要议题。网络攻击手法日益复杂&#xff0c;传统的防御方法已经不再足够。在这一背景下&#xff0c;人工智能&#xff08;AI&#xff09;技术正逐渐崭露头角&#xff0c;为网络安…