CSS3 动画详解

news2025/1/19 11:55:36

1.基本概念

CSS3 动画允许您通过定义关键帧和一系列动画属性,在网页上创建动态的视觉效果。与传统的 JavaScript 动画相比,CSS3 动画更易于编写和维护,并且在性能方面也有不错的表现。它可以应用于 HTML 元素,使元素在页面上移动、旋转、缩放、淡入淡出等。
关键帧(@keyframes)

2.定义关键帧的语法

关键帧是 CSS3 动画的核心部分,它定义了动画的起始状态、结束状态以及中间的过渡状态。使用@keyframes规则来定义关键帧,语法如下:

@keyframes animation - name {
    from {
        /* 初始状态的样式 */
    }
    to {
        /* 结束状态的样式 */
    }
}

或者使用百分比的形式来定义多个关键帧:

@keyframes animation - name {
    0% {
        /* 初始状态的样式 */
    }
    50% {
        /* 中间状态的样式 */
    }
    100% {
        /* 结束状态的样式 */
    }
}

其中animation - name是自定义的动画名称,用于在元素上应用这个动画。例如,定义一个名为my - animation的动画,让元素从透明变为不透明:

@keyframes my - animation {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

关键帧的进阶使用
可以定义非常复杂的关键帧序列。比如,定义一个元素先旋转 360 度,再缩放为原来的一半,最后移动到新的位置的动画:

@keyframes complex - animation {
    0% {
        transform: rotate(0deg) scale(1) translate(0,0);
    }
    50% {
        transform: rotate(360deg) scale(1) translate(0,0);
    }
    75% {
        transform: rotate(360deg) scale(0.5) translate(0,0);
    }
    100% {
        transform: rotate(360deg) scale(0.5) translate(50px,50px);
    }
}

3.动画属性

animation - name
这个属性用于指定要应用的关键帧动画的名称。例如,要将前面定义的my - animation动画应用到一个div元素上,可以这样写:

div {
    animation - name: my - animation;
}

animation - duration
它指定动画完成一个周期所需要的时间,单位是秒(s)或者毫秒(ms)。例如,设置my - animation动画持续时间为 3 秒:

div {
    animation - name: my - animation;
    animation - duration: 3s;
}

animation - timing - function
用于控制动画的速度曲线,也就是动画在每个周期中速度的变化方式。常见的值有:
ease:默认值,动画开始缓慢,中间加速,结束缓慢。
linear:动画以匀速进行。
ease - in:动画开始缓慢,然后加速。
ease - out:动画开始快速,然后减速。
cubic - bezier(n,n,n,n):可以通过自定义贝塞尔曲线来更精确地控制动画速度,其中四个n是贝塞尔曲线的控制点坐标,取值范围是 0 - 1。例如,设置my - animation动画以匀速进行:

div {
    animation - name: my - animation;
    animation - duration: 3s;
    animation - timing - function: linear;
}

animation - delay
用于设置动画开始前的延迟时间,单位是秒(s)或者毫秒(ms)。例如,设置my - animation动画延迟 1 秒开始:

animation - delay
用于设置动画开始前的延迟时间,单位是秒(s)或者毫秒(ms)。例如,设置my - animation动画延迟 1 秒开始:

animation - iteration - count
它指定动画循环的次数。可以是一个具体的数字,如2(表示动画循环 2 次),也可以是infinite(表示动画无限循环)。例如,设置my - animation动画无限循环:

div {
    animation - name: my - animation;
    animation - duration: 3s;
    animation - timing - function: linear;
    animation - iteration - count: infinite;
}

animation - direction
定义动画的播放方向。有以下几个值:
normal:动画按照正常方向播放,即从0%关键帧到100%关键帧。
reverse:动画反向播放,从100%关键帧到0%关键帧。
alternate:动画在奇数次数(1、3、5 等)正向播放,偶数次数(2、4、6 等)反向播放。
alternate - reverse:动画在奇数次数反向播放,偶数次数正向播放。例如,设置my - animation动画交替播放:

div {
    animation - name: my - animation;
    animation - duration: 3s;
    animation - timing - function: linear;
    animation - iteration - count: 1;
    animation - direction: normal;
    animation - fill - mode: forwards;
}

4.动画的应用场景和示例

简单的元素淡入淡出效果
利用opacity属性和动画属性可以轻松实现元素的淡入淡出。例如,让一个p元素在页面加载时淡入:

p {
    animation - name: fade - in;
    animation - duration: 2s;
    animation - fill - mode: forwards;
}
@keyframes fade - in {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

元素的旋转和缩放效果
使用transform属性来实现元素的旋转和缩放动画。例如,让一个img元素在鼠标悬停时旋转 360 度并放大 1.2 倍:

img {
    transition: all 0.5s ease;
}
img:hover {
    transform: rotate(360deg) scale(1.2);
}

复杂的路径动画(结合 SVG)
可以结合 SVG(可缩放矢量图形)来创建复杂的路径动画。例如,让一个元素沿着 SVG 定义的路径运动,这需要使用SVG的path元素和 CSS3 的transform - origin等属性来精确控制元素的运动路径。不过这种动画相对复杂,涉及到更深入的 SVG 和 CSS3 知识。

5.动画的兼容性和浏览器支持

CSS3 动画在现代浏览器中有较好的支持,但在一些旧版本浏览器中可能无法正常工作。例如,Internet Explorer 9 及以下版本对 CSS3 动画的支持有限。可以使用一些 CSS 前缀(如- webkit -、- moz -等)来提高兼容性,但这也增加了代码的复杂性。同时,也可以使用 JavaScript 库(如jQuery动画)作为 CSS3 动画的补充,在不支持 CSS3 动画的浏览器中提供类似的功能。

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

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

相关文章

NVIDIA发布个人超算利器project digital,标志着ai元年的开启

上图NVIDIA公司创始人兼首席执行官 黄仁勋(Jensen Huang) 这些年被大家熟知的赛博朋克风格一直都是未来的代言词,可以承载人类记忆的芯片,甚至能独立思考的仿生人,现在,随着NVIDIA的project digital发布之后…

(一)afsim第三方库编译

注意:防止奇怪的问题,源码编译的路径最好不要有中文,请先检查各文件夹名 AFSIM版本 Version: 2.9 Plugin API Version: 11 软件环境 操作系统: Kylin V10 SP1 项目构建工具: cmake-3.26.0-linux-aarch6…

2025.1.17——三、SQLi regexp正则表达式|

题目来源:buuctf [NCTF2019]SQLi1 目录 一、打开靶机,整理信息 二、解题思路 step 1:正常注入 step 2:弄清关键字黑名单 1.目录扫描 2.bp爆破 step 3:根据过滤名单构造payload step 4:regexp正则注…

docker的数据卷与dockerfile自定义镜像

docker的数据卷与dockerfile自定义镜像 一. docker的数据卷数据卷容器 二. dockerfile自定义镜像2.1 dockerfile的命令格式镜像的操作命令add和copy的区别 容器启动的命令 2.2 run命令2.3 其它端口映射 三. 练习 一. docker的数据卷 容器于宿主机之间,或者容器和容…

【python_钉钉群发图片】

需求: **在钉钉群发图片,需要以图片的形式展示,如图所示:**但是目前影刀里面没有符合条件的指令 解决方法: 1、在钉钉开发者后台新建一个自建应用,发版,然后获取里面的appkey和appsecret&am…

新星杯-ESP32智能硬件开发--ESP32的I/O组成-系统中断矩阵

本博文内容导读📕🎉🔥 ESP32开发板的中断矩阵、功能描述与实现、相关API和示例程序进行介绍 ESP32中断矩阵将任一外部中断源单独分配到每个CPU的任一外部中断上,提供了强大的灵活性,能适应不同的应用需求。 ESP32中断主…

软路由系统iStoreOS 一键安装 docker compose

一键安装命令 大家好!今天我来分享一个快速安装 docker-compose 的方法。以下是我常用的命令,当前版本是 V2.32.4。如果你需要最新版本,可以查看获取docker compose最新版本号 部分,获取最新版本号后替换命令中的版本号即可。 w…

CSRF攻击XSS攻击

概述 ​在 HTML 中&#xff0c;<a>, <form>, <img>, <script>, <iframe>, <link> 等标签以及 Ajax 都可以指向一个资源地址&#xff0c;而所谓的跨域请求就是指&#xff1a;当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指…

企业分类相似度筛选实战:基于规则与向量方法的对比分析

文章目录 企业表相似类别筛选实战项目背景介绍效果展示基于规则的效果基于向量相似的效果 说明相关文章推荐 企业表相似类别筛选实战 项目背景 在当下RAG&#xff08;检索增强生成&#xff09;技术应用不断发展的背景下&#xff0c;掌握文本相似算法不仅能够助力信息检索&…

python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)角点检测

角点检测&#xff08;Corner Detection&#xff09;是计算机视觉和图像处理中重要的步骤&#xff0c;主要用于提取图像中的关键特征&#xff0c;以便进行后续的任务&#xff0c;比如图像匹配、物体识别、运动跟踪等。下面介绍几种常用的角点检测方法及其应用。 1. Harris角点检…

RC2在线加密工具

RC2是由著名密码学家Ron Rivest设计的一种传统对称分组加密算法&#xff0c;它可作为DES算法的建议替代算法。RC2是一种分组加密算法&#xff0c;RC2的密钥长度可变&#xff0c;可以从8字节到128字节&#xff0c;安全性选择更加灵活。 开发调试上&#xff0c;有时候需要进行对…

玩转大语言模型——使用graphRAG+Ollama构建知识图谱

系列文章目录 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用graphRAGOllama构建知识图谱 文章目录 系列文章目录前言下载和安装用下载项目的方式下载并安装用pip方式下载并安装 生成知…

【王树森搜索引擎技术】相关性01:搜索相关性的定义与分档

工业界是怎么做的&#xff1f; 制定标注规则 -> 标注数据 -> 训练模型 -> 线上推理搜索产品和搜索算法团队定义相关性标注规则 认为地将 (q,d) 相关性划分为 4个 或 5个 档位相关性文档规则非常重要&#xff01;假如日后有大幅度变动&#xff0c;需要重新标注数据&am…

学习threejs,使用FlyControls相机控制器

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.FlyControls 相机控制…

LabVIEW 程序中的 R6025 错误

R6025错误 通常是 运行时库 错误&#xff0c;特别是与 C 运行时库 相关。这种错误通常会在程序运行时出现&#xff0c;尤其是在使用 C 编译的程序或依赖 C 运行时库的程序时。 ​ 可能的原因&#xff1a; 内存访问冲突&#xff1a; R6025 错误通常是由于程序在运行时访问无效内…

第4章 Kafka核心API——Kafka客户端操作

Kafka客户端操作 一. 客户端操作1. AdminClient API 一. 客户端操作 1. AdminClient API

Tarjan算法笔记

Tarjan 内容概要 dfs 搜索树 首先&#xff0c;我们要知道&#xff0c;Tarjan 算法来源于搜索树&#xff0c;那是什么呢&#xff0c;顾名思义就是按照搜索的顺序来遍历&#xff0c;所产生的顺序构成的树。首先我们可以来举个有向图的例子&#xff1a; 所以我们可以知道 dfs 生…

socket网络通信基础

目录 一、套接字编程基本流程 二、TCP流式协议及Socket编程的recv()和send() 三、读写无阻塞-完美掌握I/O复用 select&#xff08;&#xff09;函数详解 poll&#xff08;&#xff09;函数详解 epoll () 函数详解 一、套接字编程基本流程 原文链接&#xff1a;Socket编程…

接口防篡改+防重放攻击

接口防止重放攻击&#xff1a;重放攻击是指攻击者截获了一次有效请求(如交易请求),并在之后的时间里多次发送相同的请求&#xff0c;从而达到欺骗系统的目的。为了防止重放攻击&#xff0c;通常需要在系统中引入一种机制&#xff0c;使得每个请求都有一个唯一的标识符(如时间戳…

庄小焱——2024年博文总结与展望

摘要 大家好&#xff0c;我是庄小焱。岁末回首&#xff0c;2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰&#xff0c;照亮了我前行的道路&#xff0c;也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年&#xff0c…