CSS @keyframes 动画:颜色变化、背景旋转与放大缩小

ops/2024/10/10 21:08:50/

在CSS中,@keyframes 是一个强大的工具,它允许我们创建复杂的动画效果。今天,我们将一起探索如何使用 @keyframes 来实现颜色变化、背景旋转以及放大缩小的动画效果。

动画会在 2 秒内循环播放,并在不同的时间点改变盒子的背景颜色和变换(旋转和缩放)。

  • 在 0% 的时间点,盒子的背景颜色是绿色(#4CAF50),没有进行旋转和缩放。
  • 在 25% 的时间点,盒子的背景颜色变为红色(#F44336),同时旋转了 90 度并放大了 10%。
  • 在 50% 的时间点,盒子的背景颜色变为绿色(#0F9D58),旋转了 180 度并回到了初始大小。
  • 在 75% 的时间点,盒子的背景颜色变为蓝色(#00BCD4),旋转了 270 度并再次放大了 10%。
  • 在 100% 的时间点(也就是动画结束时),盒子的背景颜色回到了初始的绿色(#4CAF50),旋转了 360 度(即回到初始位置)并回到了初始大小。

 

一、HTML 结构

<!DOCTYPE html>  
<html lang="en">  
<head>  
<meta charset="UTF-8">  
<meta name="viewport" content="width=device-width, initial-scale=1.0">  
<title>使用 @keyframes 创建动画</title>  
<style>  /* CSS 样式和关键帧定义将放在这里 */  
</style>  
</head>  
<body>  <div class="animated-box"></div>  </body>  
</html>

二、CSS 样式与 @keyframes 动画

<style>  .animated-box {  width: 100px;  height: 100px;  background-color: #4CAF50;  border-radius: 50%; /* 圆形盒子 */  margin: 50px auto; /* 居中显示 */  animation: colorRotateScale 2s infinite linear; /* 应用动画 */  }  /* 定义关键帧动画 */  @keyframes colorRotateScale {  0% {  background-color: #4CAF50; /* 初始颜色 */  transform: rotate(0deg) scale(1); /* 初始旋转角度和大小 */  }  25% {  background-color: #F44336; /* 颜色变化 */  transform: rotate(90deg) scale(1.1); /* 旋转90度并放大 */  }  50% {  background-color: #0F9D58; /* 颜色变化 */  transform: rotate(180deg) scale(1); /* 旋转180度并回到初始大小 */  }  75% {  background-color: #00BCD4; /* 颜色变化 */  transform: rotate(270deg) scale(1.1); /* 旋转270度并放大 */  }  100% {  background-color: #4CAF50; /* 回到初始颜色 */  transform: rotate(360deg) scale(1); /* 旋转360度并回到初始大小 */  }  }  
</style>

在这个CSS样式中,我们定义了一个名为 colorRotateScale 的 @keyframes 动画。这个动画会在 2 秒内完成一个循环,并且会无限次地重复(infinite)。我们使用 linear 动画缓动函数,确保动画在整个周期内的速度是均匀的。

动画的效果包括:

  • 颜色变化:从绿色(#4CAF50)到红色(#F44336),再到绿色(#0F9D58),最后到蓝色(#00BCD4),并最终回到绿色(#4CAF50)。
  • 背景旋转:从 0 度开始,每过 25% 的时间,就旋转 90 度,直到完成 360 度的旋转。
  • 放大缩小:在动画过程中,盒子会在旋转 90 度和 270 度时稍微放大(1.1 倍),而在其他时间点则保持原始大小。

完整例程

<!DOCTYPE html>  
<html lang="en">  
<head>  
<meta charset="UTF-8">  
<meta name="viewport" content="width=device-width, initial-scale=1.0">  
<title>Keyframe Animation Example</title>  
<style>  .animated-box {  width: 100px;  height: 100px;  background-color: #4CAF50;  border-radius: 50%; /* 圆形盒子 */  margin: 50px auto; /* 居中显示 */  animation: colorRotateScale 2s infinite; /* 应用动画 */  }  /* 定义关键帧动画 */  @keyframes colorRotateScale {  0% {  background-color: #4CAF50; /* 初始颜色 */  transform: rotate(0deg) scale(1); /* 初始旋转角度和大小 */  }  25% {  background-color: #F44336; /* 颜色变化 */  transform: rotate(90deg) scale(1.1); /* 旋转90度并放大 */  }  50% {  background-color: #0F9D58; /* 颜色变化 */  transform: rotate(180deg) scale(1); /* 旋转180度并回到初始大小 */  }  75% {  background-color: #00BCD4; /* 颜色变化 */  transform: rotate(270deg) scale(1.1); /* 旋转270度并放大 */  }  100% {  background-color: #4CAF50; /* 回到初始颜色 */  transform: rotate(360deg) scale(1); /* 旋转360度并回到初始大小 */  }  }  
</style> 
</head>  
<body>  <div class="animated-box"></div>  </body>  
</html>


http://www.ppmy.cn/ops/26290.html

相关文章

SQL中为什么不要使用1=1?

为什么会使用 11&#xff1f; 在动态构建SQL查询时&#xff0c;开发者可能会不确定最终需要哪些条件。这时候&#xff0c;他们就会使用“11”作为一个始终为真的条件&#xff0c;让接下来的所有条件都可以方便地用“AND”连接起来&#xff0c;就像是搭积木的时候先放一个基座&…

linux安装MySQL 8.0笔记

在Linux系统中安装MySQL 8.0的详细操作步骤如下&#xff1a; 1. 添加MySQL Yum Repository 首先&#xff0c;您需要添加MySQL的Yum仓库。这可以通过下载并安装一个RPM包来实现&#xff0c;该RPM包会将MySQL仓库添加到您的仓库列表中。 wget https://repo.mysql.com//mysql80-c…

前端项目学习记录2:sass的使用

1.安装sass pnpm i sass2.配置vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue import path from "path"; //引入svg需要用到的插件 import { createSvgIconsPlugin } from vite-plugin-svg-icons export default defineConf…

nacos(docker部署)+springboot集成

文章目录 说明零nacos容器部署初始化配置高级配置部分访问权限控制命名空间设置新建配置文件 springboot配置nacos添加依赖编写测试controller 说明 nacos容器部署采用1Panel运维面板&#xff0c;进行部署操作&#xff0c;简化操作注意提前安装好1Panel和配置完成docker镜像加…

Laravel5.4 反序列化

文章目录 0x01 环境搭建0x02 POP 链0x03 exp0x04 总结 前言&#xff1a;CC 链复现的头晕&#xff0c;还是从简单的 Laravel 开始吧。 laravel 版本&#xff1a;5.4 0x01 环境搭建 laravel安装包下载地址 安装后配置验证页面。在 /routes/web.php 文件中添加一条路由&#xf…

docker学习笔记3:VmWare CentOS7安装与静态ip配置

文章目录 一、安装CentOS71、下载centos镜像2、安装二、设置静态ip三、xshell连接centos本专栏的docker环境是在centos7里安装,因此首先需要会安装centos虚拟机。 本篇博客介绍如何在vm虚拟机里安装centos7。 一、安装CentOS7 1、下载centos镜像 推荐清华源,下载如下版本 …

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例 文章目录 1.前言2.编译2.1版本说明2.2 seatunnel2.3.4-release分支配置2.3maven调优配置 3.web1.0.0适配3.1配置文件修改和新增文件3.2手动拷贝jar修改依赖3.3修改web不兼容的代码3.4 web编译打包 4.运行m…

【webrtc】MessageHandler 6: 基于线程的消息处理:StunRequest实现包发送和超时重传

G:\CDN\rtcCli\m98\src\p2p\base\stun_request.cc使用OnMessage 实现包的发送和包的超时重传StunRequest 一个StunRequest 代表是一个独立的请求的发送STUN消息 要不是发送前构造好的,要不就是按照需要构建的使用StunRequestManager: 每一个STUNRequest 携带一个交互id 写入m…