一、补间动画(Tween Animation)vs 关键帧动画(Keyframe Animation)

概念对比表:

补间动画 (Transition)关键帧动画 (Animation)
定义元素从初始状态结束状态的过渡效果通过定义多个关键帧控制动画的中间状态
触发方式需要状态变化(如:hover)自动执行或手动触发
控制粒度只能定义首尾状态可精确控制每个时间点的状态
循环能力不能自动循环可无限循环或指定次数
适用场景简单交互效果(按钮悬停、菜单展开)复杂动画(加载动画、卡通动画)

二、补间动画(Transition)

过渡 是元素从一种样式逐渐改变为另一种的效果。

1、基础知识:

.element {
transition: [属性名]    [持续时间]    [缓动函数]    [延迟时间];

/* 示例: */
transition: all 0.3s ease-in-out 0.1s;
}

2、案例实操:按钮悬停特效

<!DOCTYPE html>
<html>
<head><title><!DOCTYPE html>
<html>
<head><title>补间动画学习</title><style>.btn {padding: 10px 20px;margin: 50px;background: #3498db;color: white;border: none;transition: all 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) 0.1s;  /* 弹性效果 */}.btn:hover {background: #e74c3c;transform: scale(1.2) rotate(5deg);  /* 放大和旋转 */box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);  /* 添加阴影 */}</style>
</head><body><button class="btn">悬停看我变身</button>
</body>
</html>

 效果图(观察鼠标移入/移出时动画速度不同(缓动函数的作用)):

鼠标悬停后显示: 

代码解析:

1、transform: scale(1.2) rotate(5deg);

  • scale(1.2):能让元素在水平和垂直方向上都放大为原来的 1.2 倍。
  • rotate(5deg):会使元素按顺时针方向旋转 5 度。

2、transition: all 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) 0.1s;

  • all:表明所有可过渡的属性发生变化时,都会应用这个过渡效果。
  • 0.5s:代表过渡动画从开始到结束所持续的时间为 0.5 秒。
  • cubic-bezier(0.68, -0.55, 0.27, 1.55):这是自定义的贝塞尔曲线,用于控制动画的速度变化。其特点是动画开始时会有一个反向的运动,结束前又会有一个向前的冲刺。
    • 贝塞尔曲线的四个参数分别是 (x1, y1, x2, y2),在这个例子中:
      • (0.68, -0.55) 是第一个控制点的坐标。
      • (0.27, 1.55) 是第二个控制点的坐标。
  • 0.1s:意味着动画会延迟 0.1 秒后才开始执行。

3、box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);

  • 0
    • 这是水平偏移量,它控制着阴影在水平方向上相对于元素的位置。当值为正数时,阴影会出现在元素的右侧;值为负数时,阴影则会出现在元素的左侧;这里值为 0,表示阴影在水平方向上与元素对齐,不会产生偏移。
  • 5px
    • 此为垂直偏移量,用于控制阴影在垂直方向上相对于元素的位置。正值会使阴影出现在元素的下方,负值会使阴影出现在元素的上方;这里的 5px 表示阴影在元素下方垂直偏移 5 像素的位置。
  • 15px
    • 这是模糊半径,它决定了阴影边缘的模糊程度。数值越大,阴影的边缘就越模糊、越扩散;15px 会使阴影边缘呈现出比较柔和的效果。
  • rgba(0, 0, 0, 0.3)
    • 这是阴影的颜色,采用的是 RGBA 颜色模式:
      • (0, 0, 0) 代表黑色。
      • 0.3 是透明度(alpha 值),范围在 0.0(完全透明)到 1.0(完全不透明)之间;这里的 0.3 表示阴影是半透明的。

三、关键帧动画实战(Animation)

1、基础知识:

        @keyframes 规则是创建动画。

        @keyframes 规则内指定一个 CSS 样式和动画将逐步从目前的样式更改为新的样式。

@keyframes 动画名称 {
0% { /* 初始状态 */ }
50% { /* 中间状态 */ }
100% { /* 结束状态 */ }
}

.element {
animation: 动画名称 持续时间 时间函数 延迟 循环次数 方向 填充模式 播放状态;
}

 2、案例实操:加载旋转动画

<!DOCTYPE html>
<html>
<head><title>关键帧动画学习</title><style>@keyframes spin {0% { transform: rotate(0deg); opacity: 0.5;}100% { transform: rotate(360deg); opacity: 1;}}.loader {width: 40px;          /* 宽度 */height: 40px;         /* 高度(与宽度相同形成正圆) */border: 4px solid #f3f3f3; /* 灰色边框作为背景 */border-top: 4px solid #3498db; /* 顶部蓝色边框作为进度指示 */border-radius: 50%;   /* 圆角50%形成圆形 */animation: spin 1.5s linear infinite;}</style>
</head><body><div class="loader"></div>
</body>
</html>

代码解析:

1、.loader

  • width: 40px;   height: 40px;    border-radius: 50%;       这三个就是直接做了一个正圆
  • border-top: 4px solid #3498db;       通过只给border-top设置不同颜色,其他边透明/同色,宽度也设置了4px,创造出"进度条"效果。

2、@keyframes

@keyframes spin { /* 定义名为spin的动画序列 */0% { /* 起始帧(动画开始时的状态) */transform: rotate(0deg);  /* 初始旋转角度0度 */opacity: 0.5;            /* 初始半透明 */}100% { /* 结束帧(动画结束时的状态) */transform: rotate(360deg); /* 旋转一圈(360度) */opacity: 1;              /* 完全不透明 */}
}
  • 可以插入更多中间帧(如30%60%)实现复杂动画

  • 所有变化的属性必须具有相同的插值逻辑(如rotate从0到360是线性变化)

 3、animation: spin 1.5s linear infinite;

参数作用
动画名称spin绑定前面定义的@keyframes动画
持续时间1.5s完成一次动画所需时间
缓动函数linear匀速运动(对比:ease-in先慢后快)
循环次数infinite无限循环(也可设具体数字如2

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch 损失函数详解:从理论到实践

目录 一、损失函数的基本概念 二、常用损失函数及实现 1. 均方误差损失&#xff08;MSELoss&#xff09; 2. 平均绝对误差损失&#xff08;L1Loss/MAELoss&#xff09; 3. 交叉熵损失&#xff08;CrossEntropyLoss&#xff09; 4. 二元交叉熵损失&#xff08;BCELoss&…

MinIO深度解析:从核心特性到Spring Boot实战集成

在当今数据爆炸的时代&#xff0c;海量非结构化数据的存储与管理成为企业级应用的关键挑战。传统文件系统在TB级数据面前捉襟见肘&#xff0c;而昂贵的云存储服务又让中小企业望而却步。MinIO作为一款开源高性能对象存储解决方案&#xff0c;正以其独特的技术优势成为开发者的首…

腾讯云服务上下载docker以及使用Rabbitmq的流程

执行以下命令&#xff0c;添加 Docker 软件源并配置为腾讯云源。sudo yum-config-manager --add-repohttps://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i "s/download.docker.com/mirrors.tencentyun.com\/docker-ce/g" /etc/yu…

UE5 一些关于过场动画sequencer,轨道track的一些Python操作

删除多余的轨道 import unreal def execute():movie_scene_actors []sequence_assets []data 0.0# 获取编辑器实用工具库lib unreal.EditorUtilityLibrary()selected_assets lib.get_selected_assets()for asset in selected_assets:if asset.get_class() unreal.LevelS…

前端性能优化“核武器”:新一代图片格式(AVIF/WebP)与自动化优化流程实战

前端性能优化“核武器”&#xff1a;新一代图片格式(AVIF/WebP)与自动化优化流程实战 当你的页面加载时间超过3秒时&#xff0c;用户的跳出率会飙升到40%以上。而在所有的前端性能优化手段中&#xff0c;图片优化无疑是投入产出比最高的一环。一张未经优化的巨大图片&#xff0…

单元测试学习+AI辅助单测

标题单元测试衡量指标具体测试1、Resource2、MockBean3、Test4、Test模板5、单测示例H2数据库JSON1、使用方式AI辅助单测使用方法单元测试 单元测试一般指程序员在写好代码后&#xff0c;提交测试前&#xff0c;需要验证自己的代码是否可以正常工作&#xff0c;同时将自己的代…

Spring Cloud Gateway与Envoy Sidecar在微服务请求路由中的架构设计分享

Spring Cloud Gateway与Envoy Sidecar在微服务请求路由中的架构设计分享 在现代微服务架构中&#xff0c;请求路由层承担着流量分发、安全鉴权、流量控制等多重职责。传统的单一网关方案往往面临可扩展性和可维护性挑战。本文将从真实生产环境出发&#xff0c;分享如何结合Spri…

GitHub Pages+Jekyll 静态网站搭建(二)

GitHub PagesJekyll 静态网站搭建&#xff08;二&#xff09;GitHub PagesJekyll 静态网站搭建&#xff08;二内容简介搭建模板网站部署工作流程GitHub PagesJekyll 静态网站搭建&#xff08;二 内容简介 &#x1f6a9; Tech Contents 该文主要涉及Jekyll主题的下载与使用。Gi…

Django 实战:I18N 国际化与本地化配置、翻译与切换一步到位

文章目录一、国际化与本地化介绍定义相关概念二、安装配置安装 gettext配置 settings.py三、使用国际化视图中使用序列化器和模型中使用四、本地化操作创建或更新消息文件消息文件说明编译消息文件五、项目实战一、国际化与本地化介绍 定义 国际化和本地化的目标&#xff0c;…

通过国内扣子(Coze)搭建智能体并接入discord机器人

国内的扣子是无法直接授权给discord的&#xff0c;但是用国外的coze的话&#xff0c;大模型调用太贵&#xff0c;如果想要接入国外的平台&#xff0c;那就需要通过调用API来实现。 1.搭建智能体&#xff08;以工作流模式为例&#xff09; 首先&#xff0c;我们需要在扣子平台…

【办公类-107-02】20250719视频MP4转gif(削减MB)

背景需求 最近在写第五届智慧项目结题(一共3篇)写的昏天黑地,日以继夜。 我自己《基于“AI技术”的幼儿园教学资源开发和运用》提到了AI绘画、AI视频和AI编程。 为了更好的展示AI编程的状态,我在WORD里面插入了MP4转gif的动图。 【教学类-75-04】20241023世界名画-《蒙…

一文讲清楚React的render优化,包括shouldComponentUpdate、PureComponent和memo

文章目录一文讲清楚React的render优化&#xff0c;包括shouldComponentUpdate、PureComponent和memo1. React的渲染render机制2. shouldComponentUpdate2.1 先上单组件渲染&#xff0c;验证state变化2.2 上父子组件&#xff0c;验证props2. PureComponent2.1 单组件验证state2.…

物联网iot、mqtt协议与华为云平台的综合实践(万字0基础保姆级教程)

本学期的物联网技术与应用课程&#xff0c;其结课设计内容包含&#xff1a;mqtt、华为云、PyQT5和MySQL等结合使用&#xff0c;完成了从华为云配置产品信息以及转发规则&#xff0c;到mqtt命令转发&#xff0c;再到python编写逻辑代码实现相关功能&#xff0c;最后用PyQT5实现面…

使用IntelliJ IDEA和Maven搭建SpringBoot集成Fastjson项目

使用IntelliJ IDEA和Maven搭建SpringBoot集成Fastjson项目 下面我将详细介绍如何在IntelliJ IDEA中使用Maven搭建一个集成Fastjson的SpringBoot项目&#xff0c;包含完整的环境配置和代码实现。 一、环境准备 软件要求 IntelliJ IDEA 2021.x或更高版本JDK 1.8或更高版本&#x…

Java从入门到精通!第九天, 重点!(集合(一))

十一、集合1. 为什么要使用集合(1) 数组存在的弊端1) 数组在初始化之后&#xff0c;长度就不能改变&#xff0c;不方便扩展。2) 数组中提供的属性和方法比较少&#xff0c;不便于进行添加、删除、修改等操作&#xff0c;并且效率不高&#xff0c;同时无法直接存储元素的个数。3…

为什么使用时序数据库

为什么使用时序数据库&#xff1f; 时序数据库&#xff08;Time-Series Database, TSDB&#xff09;是专为时间序列数据优化的数据库&#xff0c;相比传统关系型数据库&#xff08;如MySQL&#xff09;或NoSQL数据库&#xff08;如MongoDB&#xff09;&#xff0c;它在以下方面…

计算机网络:(十一)多协议标记交换 MPLS

计算机网络&#xff1a;&#xff08;十一&#xff09;多协议标记交换 MPLS前言一、传统网络的问题二、MPLS&#xff1a;给数据包贴个“标签”三、MPLS的工作流程1. 入站2. 中间3. 出站四、MPLS的能力前言 前面我们讲解了计算机网络中网络层的相关知识&#xff0c;包括网络层转发…

docker run elasticsearch 报错

谷粒商城 p103 前提条件&#xff1a; 下载镜像文件 #存储和检索数据 docker pull elasticsearch:7.4.2 #可视化检索数据 docker pull kibana:7.4.2 创建挂载的文件和配置 mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data echo "http.h…

巧用Callbre RVE生成DRC HTML report及CTO的使用方法

对于后端版图人员&#xff0c;在芯片TO前的LV signoff阶段&#xff0c;犹如一段漫长而有期待的朝圣之旅&#xff0c;需要耐心&#xff0c;毅力和信心&#xff0c;在庞杂的DRC中找到一条收敛之路。为了让此路更为清晰收敛&#xff0c;Calibre提供了一套可追溯对比的富文本方式-H…

产品需求文档(PRD)格式全解析:从 RP 到 Word 的选择与实践

产品需求文档&#xff08;PRD&#xff09;的形式多种多样&#xff0c;但核心目标始终一致&#xff1a;清晰传递产品需求&#xff0c;让团队高效协作。不同公司对 PRD 的格式要求可能不同&#xff0c;有的偏爱直接在原型工具中撰写&#xff0c;有的则习惯用 Word 整理归档。本文…