Web - CSS3过渡与动画

news2025/2/13 1:51:36

过渡

基本使用

transition过渡属性是css3浓墨重彩的特性,过渡可以为一个元素在不同样式之间变化自动添加补间动画。

过渡从kIE10开始兼容,移动端兼容良好,网页上的动画特效基本都是由JavaScript定时器实现的,现在逐步改为css3过渡。

transition属性有4个要素:过渡属性、动画时长、变化速度曲线、延迟时间,需要注意的是时间单位后面的s是不能省略的。

所有数值类型的属性,都可以参与过渡,比如:widthheightlefttopborder-radius

.box1 {
    width: 200px;
    height: 200px;
    background-color: orange;
    transition: width 5s linear 0s;
    margin-bottom: 10px;
}

.box1:hover {
    width: 800px;
}

背景颜色和文字颜色都可以被过渡。

.box2:hover p {
    left: 1000px;
}

.box3 {
    width: 200px;
    height: 200px;
    background-color: red;
    transition: background-color 1s linear 0s;
    margin-bottom: 10px;
}

.box3:hover {
    background-color: green;
}

所有的变形(包括2D和3D)都能被过渡。

/**2D过渡*/
.box5 {
    width: 200px;
    height: 200px;
    background-color: orange;
    margin-bottom: 10px;
    transition: transform 1s linear 0s;
}

.box5:hover {
    transform: scale(1.2) rotate(360deg);
}


/**3D过渡*/
.box6 {
    perspective: 300px;
    width: 200px;
    height: 200px;
    border: 1px solid #000;
    margin-bottom: 10px;
}

.box6 p {
    width: 200px;
    height: 200px;
    background-color: orange;
    transition: transform 1s linear 0s;
}

.box6:hover p {
    transform: rotateX(360deg) rotateY(360deg);
}

如果要所有的属性都参数过渡,可以写all。

.box7 {
    width: 200px;
    height: 200px;
    background-color: orange;
    border-radius: 0;
    transition: all 1s linear 0s;
}
.box7:hover {
    width: 400px;
    height: 160px;
    background-color: green;
    border-radius: 50%;
}

过渡的四个小属性:

属性意义
transition-property那些属性要过渡
transition-duration动画时间
transition-timing-function动画变化曲线(缓动效果)
transition-delay延迟时间
缓动效果

transition的第三个参数就是缓动参数,也是变化速度曲线,常用的缓动参数:

1、linear

线性过渡,元素在过渡过程中以恒定的速度变化,没有加速或减速效果。

2、ease

默认的缓动函数,过渡开始时较慢,然后加速,最后再减速。这是一种自然的过渡效果,常用于大多数场景。

3、ease-in

过渡开始时较慢,然后逐渐加速,结束时速度最快。常用于强调进入效果。

4、ease-out

过渡开始时速度最快,然后逐渐减速,结束时最慢。常用于强调退出效果。

5、ease-in-out

过渡开始和结束时较慢,中间加速。是 ease 函数的更明显版本。

6、cubic-bezier

自定义贝塞尔曲线缓动函数。该函数接受四个参数,分别是贝塞尔曲线的两个控制点的 x 和 y 坐标,取值范围在 0 到 1 之间。

可以去网站https://cubic-bezier.com可以生成内赛尔曲线,可以自定义动画缓动参数。

.box {
    width: 100px;
    height: 100px;
    background-color: red;
    transition: width 2s cubic-bezier(0.42, 0, 0.58, 1);
}

.box:hover {
    width: 200px;
}

7、steps()

.box {
    width: 100px;
    height: 100px;
    background-color: red;
    transition: width 2s steps(5, end);
}

.box:hover {
    width: 200px;
}

动画

可以使用@keyframes来定义动画,keyframes表示关键帧,在项目上线前,要补上@-webkit-这样的私有前缀。

from表示起始状态,to表示结束状态。

@keyframes movelr {
    from {
        transform: translateX(0);
    }
    to {
        transform: translateX(1000px);
    }
}

定义动画之后,就可以使用animation属性调用动画,animation参数的属性依次是:动画名字、总时长、缓动效果、延迟。

animation第五个参数就是动画的执行次数,如果想永远执行可以写infinite

/**movelr 是定义的动画名称*/
.box2 {
    width: 200px;
    height: 200px;
    background-color: blue;
    animation: movelr 2s linear 0s infinite alternate;
}

如果想让动画的第2、4、6…偶数次自动逆行执行,那么要加上alternate参数即可。

.box2 {
    width: 200px;
    height: 200px;
    background-color: blue;
    animation: movelr 2s linear 0s infinite alternate;
}

如果想让动画停止在最后结束状态,那么要加上forwards

.box3 {
    width: 200px;
    height: 200px;
    background-color: green;
    animation: changeToCircle 1s linear 0s forwards ;
}

多关键帧动画实例如下:

.box4 {
    width: 200px;
    height: 200px;
    background-color: red;
    animation: changeColor 3s linear 0s alternate infinite;
}

@keyframes changeColor {
    0% {
        background-color: red;
    }
    20% {
        background-color: yellow;
    }
    40% {
        background-color: blue;
    }
    60% {
        background-color: green;
    }
    80% {
        background-color: purple;
    }
    100% {
        background-color: orange;
    }
}

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

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

相关文章

【R语言】卡方检验

一、定义 卡方检验是用来检验样本观测次数与理论或总体次数之间差异性的推断性统计方法,其原理是比较观测值与理论值之间的差异。两者之间的差异越小,检验的结果越不容易达到显著水平;反之,检验结果越可能达到显著水平。 二、用…

2025.2.9机器学习笔记:PINN文献阅读

2025.2.9周报 文献阅读题目信息摘要Abstract创新点网络架构实验结论缺点以及后续展望 文献阅读 题目信息 题目: GPT-PINN:Generative Pre-Trained Physics-Informed Neural Networks toward non-intrusive Meta-learning of parametric PDEs期刊: Fini…

JVM(Java 虚拟机)

Java语言的解释性和编译性(通过JVM 的执行引擎) Java 代码(.java 文件)要先使用 javac 编译器编译为 .class 文件(字节码),紧接着再通过JVM 的执行引擎(Execution Engine&#xff09…

利用二分法进行 SQL 盲注

什么是sql注入? SQL 注入(SQL Injection)是一种常见的 Web 安全漏洞,攻击者可以通过构造恶意 SQL 语句来访问数据库中的敏感信息。在某些情况下,服务器不会直接返回查询结果,而是通过布尔值(Tr…

大模型数据集全面整理:444个数据集下载地址

本文针对Datasets for Large Language Models: A Comprehensive Survey 中的 444 个数据集(涵盖8种语言类别和32个领域)进行完整下载地址整理收集。 2024-02-28,由杨刘、曹家欢、刘崇宇、丁凯、金连文等作者编写,深入探讨了大型语…

Linux 创建进程 fork()、vfork() 与进程管理

Linux 创建进程 fork、vfork、进程管理 一、Linux的0号、1号、2号进程二、Linux的进程标识三、fork() 函数1、基本概念2、函数特点3、用法以及应用场景(1)父子进程执行不同的代码(2)进程执行另一个程序 4、工作原理 四、vfork() 函…

2025web寒假作业二

一、整体功能概述 该代码构建了一个简单的后台管理系统界面,主要包含左侧导航栏和右侧内容区域。左侧导航栏有 logo、管理员头像、导航菜单和安全退出按钮;右侧内容区域包括页头、用户信息管理内容(含搜索框和用户数据表格)以及页…

鸿蒙NEXT API使用指导之文件压缩和邮件创建

鸿蒙NEXT API 使用指导 一、前言二、邮件创建1、拉起垂类应用2、 UIAbilityContext.startAbilityByType 原型2.1、wantParam2.2、abilityStartCallback 与 callback 3、拉起邮箱类应用3.1、单纯拉起邮箱应用3.2、传入带附件的邮件 三、压缩文件1、认识 zlib2、压缩处理2.1、单文…

javaEE-10.CSS入门

目录 一.什么是CSS ​编辑二.语法规则: 三.使用方式 1.行内样式: 2.内部样式: 3.外部样式: 空格规范 : 四.CSS选择器类型 1.标签选择器 2.类选择器 3.ID选择器 4.通配符选择器 5.复合选择器 五.常用的CSS样式 1.color:设置字体颜色 2.font-size:设置字体大小 3…

Spring Boot牵手Redisson:分布式锁实战秘籍

一、引言 在当今的分布式系统架构中,随着业务规模的不断扩大和系统复杂度的日益增加,如何确保多个服务节点之间的数据一致性和操作的原子性成为了一个至关重要的问题。在单机环境下,我们可以轻松地使用线程锁或进程锁来控制对共享资源的访问,但在分布式系统中,由于各个服务…

制药行业 BI 可视化数据分析方案

一、行业背景 随着医药行业数字化转型的深入,企业积累了海量的数据,包括销售数据、生产数据、研发数据、市场数据等。如何利用这些数据,挖掘其价值,为企业决策提供支持,成为医药企业面临的重大挑战。在当今竞争激烈的…

[学习笔记] Kotlin Compose-Multiplatform

Compose-Multiplatform 原文:https://github.com/zimoyin/StudyNotes-master/blob/master/compose-multiplatform/compose.md Compose Multiplatform 是 JetBrains 为桌面平台(macOS,Linux,Windows)和Web编写Kotlin UI…

Golang 并发机制-7:sync.Once实战应用指南

Go的并发模型是其突出的特性之一,但强大的功能也带来了巨大的责任。sync.Once是由Go的sync包提供的同步原语。它的目的是确保一段代码只执行一次,而不管有多少协程试图执行它。这听起来可能很简单,但它改变了并发环境中管理一次性操作的规则。…

【AI实践】Cursor上手-跑通Hello World和时间管理功能

背景 学习目的:熟悉Cursor使用环境,跑通基本开发链路。 本人背景:安卓开发不熟悉,了解科技软硬件常识 实践 基础操作 1,下载安装安卓Android Studio 创建一个empty project 工程,名称为helloworld 2&am…

【多模态大模型】系列4:目标检测(ViLD、GLIP)

目录 1 ViLD2 GLIP 1 ViLD OPEN-VOCABULARY OBJECT DETECTION VIA VISION AND LANGUAGE KNOWLEDGE DISTILLATION 从标题就能看出来,作者是把CLIP模型当成一个Teacher,去蒸馏他自己的网络,从而能Zero Shot去做目标检测。 现在的目标检测数据…

计算机网络结课设计:通过思科Cisco进行中小型校园网搭建

上学期计算机网络课程的结课设计是使用思科模拟器搭建一个中小型校园网,当时花了几天时间查阅相关博客总算是做出来了,在验收后一直没管,在寒假想起来了简单分享一下,希望可以给有需求的小伙伴一些帮助 目录 一、设计要求 二、…

从零到一:基于Rook构建云原生Ceph存储的全面指南(下)

接上篇:《从零到一:基于Rook构建云原生Ceph存储的全面指南(上)》 链接: link 六.Rook部署云原生CephFS文件系统 6.1 部署cephfs storageclass cephfs文件系统与RBD服务类似,要想在kubernetes pod里使用cephfs&#…

AutoMQ 如何实现没有写性能劣化的极致冷读效率

前言 追赶读(Catch-up Read,冷读)是消息和流系统常见和重要的场景。 削峰填谷:对于消息来说,消息通常用作业务间的解耦和削峰填谷。削峰填谷要求消息队列能将上游发送的数据堆积住,让下游在容量范围内消费…

【Rabbitmq篇】高级特性----TTL,死信队列,延迟队列

目录 一.TTL ???1.设置消息的TTL 2.设置队列的TTL 3.俩者区别? 二.死信队列 定义: 消息成为死信的原因: 1.消息被拒绝(basic.reject 或 basic.nack) 2.消息过期(TTL) 3.队列达到最大长度? …

【Java】多线程和高并发编程(三):锁(中)深入ReentrantLock

文章目录 3、深入ReentrantLock3.1 ReentrantLock和synchronized的区别3.2 AQS概述3.3 加锁流程源码剖析3.3.1 加锁流程概述3.3.2 三种加锁源码分析3.3.2.1 lock方法3.3.2.2 tryLock方法3.3.2.3 lockInterruptibly方法 3.4 释放锁流程源码剖析3.4.1 释放锁流程概述3.4.2 释放锁…