当前位置: 首页 > news >正文

CSS3 过渡

CSS3 过渡(Transitions)是一种在属性值变化时创建平滑过渡效果的技术。通过过渡,你可以在 CSS 样式发生变化时,定义动画效果,使用户体验更加流畅和自然。

一 基本概念

CSS3 过渡允许你在属性值变化时指定过渡的持续时间、速度曲线等,从而使样式的改变看起来更为平滑和渐进。

二 主要属性

属性描述
transition简写属性,用于在一个属性中设置四个过渡属性。
transition-property规定应用过渡的 CSS 属性的名称。
transition-duration定义过渡效果花费的时间。默认是 0。
transition-timing-function规定过渡效果的时间曲线。默认是 “ease”。
transition-delay规定过渡效果何时开始。默认是 0。

1. transition-property: 指定过渡的 CSS 属性。例如:color, width, background-color。

ransition-property 是 CSS3 中用来指定过渡效果应用到哪些 CSS 属性上的属性。它允许你明确指定要过渡的属性,从而在元素状态发生改变时仅对指定的属性应用过渡效果,而不是对所有属性都应用过渡效果。该属性的值可以是 CSS 属性的名称,也可以是关键字 all,表示对所有属性应用过渡效果。

  • 语法
transition-property: none|all| property;
描述
none没有属性会获得过渡效果。
all所有属性都将获得过渡效果。
property定义应用过渡效果的 CSS 属性名称列表,列表以逗号分隔。
  • 如果你只想在颜色发生变化时应用过渡效果
transition-property: color;
  • 如果想对所有属性都应用过渡效果
.element {transition-property: all;
}

2. transition-duration:

transition-duration 是 CSS3 中用来指定过渡效果持续时间的属性。它定义了过渡效果从开始到结束所花费的时间长度,可以使过渡效果更加平滑和自然。该属性的值可以是秒(s)或毫秒(ms),表示过渡效果的持续时间。可以使用小数值来定义更精确的持续时间。

  • 如果你想让过渡效果持续 1 秒钟
transition-duration: 1s;
  • 也可以在一个元素上同时应用多个过渡效果,并为每个过渡效果指定不同的持续时间。这可以通过逗号分隔的值来实现:
.element {transition-property: width, height, opacity;transition-duration: 0.5s, 1s, 0.3s;
}

3. transition-timing-function:

transition-timing-function 是 CSS3 中用来指定过渡效果的时间函数的属性。它定义了过渡效果在时间上的变化规律,控制了过渡效果的速度曲线,从而影响了元素从开始到结束过渡过程中的动画效果。

描述
linear规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。
ease规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。
ease-in规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。
ease-out规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。
ease-in-out规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。
cubic-bezier(n,n,n,n)在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。
transition-timing-function: ease-in-out;

4. transition-delay:

transition-delay 是 CSS3 中用来指定过渡效果延迟开始的时间的属性。它定义了在元素状态发生改变后,过渡效果开始应用的延迟时间,从而允许你控制过渡效果何时开始执行。

  • 如果你想在状态改变后等待 0.5 秒后才开始过渡效果
transition-delay: 0.5s;
  • 如果你想让过渡效果立即开始,而不希望有延迟,可以将值设为 0:
.element {transition-delay: 0s;
}

5. transition: 是以上四个属性的简写,可以一次性设置所有过渡相关的属性。

  • 在一个例子中使用所有过渡属性:
div
{transition-property: width;transition-duration: 1s;transition-timing-function: linear;transition-delay: 2s;/* Safari */-webkit-transition-property:width;-webkit-transition-duration:1s;-webkit-transition-timing-function:linear;-webkit-transition-delay:2s;
}
  • 简写
div
{transition: width 1s linear 2s;/* Safari */-webkit-transition:width 1s linear 2s;
}

三 案例

  1. 鼠标悬停时,平滑地改变元素的背景色和宽度:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Transition Example</title>
<style>.box {width: 100px;height: 100px;background-color: blue;transition: width 0.5s ease, background-color 0.5s ease;}.box:hover {width: 200px;background-color: red;}
</style>
</head>
<body><div class="box"></div>
</body>
</html>

当 .box 元素被鼠标悬停时,它的宽度和背景颜色会在 0.5 秒内平滑地过渡到新的值。

  1. 悬浮卡片示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hover Card Effect Example</title>
<link rel="stylesheet" href="styles.css">
</head>
<body><div class="card"><h3>Card Title</h3><p>This is a description of the card.</p></div>
</body>
</html>
body {display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;background-color: #e0e0e0;
}.card {width: 300px;padding: 20px;border-radius: 10px;background-color: white;box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);transition: transform 0.3s ease, box-shadow 0.3s ease;text-align: center;
}.card:hover {transform: scale(1.05);box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
}

CSS:

  • body 类设置了页面的基本样式,使卡片居中显示。
  • .card 类定义了卡片的样式,包括宽度、内边距、圆角、背景颜色和阴影。transition 属性控制了卡片变换和阴影的平滑过渡。
  • .card:hover 类定义了当鼠标悬停在卡片上时,卡片的缩放和阴影效果,使卡片轻微放大并增加阴影,创造出悬浮的效果。

效果

  • 卡片在页面上有轻微的浮动效果,显示了阴影。
  • 鼠标悬停时,卡片会放大,并且阴影变得更明显,增强了立体感。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Qt控制开发板的LED
  • 【文件包含】——日志文件注入
  • Unity-Transform类-旋转
  • 使用EXPORT_SYMBOL
  • 目标检测YOLO实战应用案例100讲-基于双目视觉的目标检测与测距系统(下)
  • 大数据-128 - Flink 并行度设置 细节详解 全局、作业、算子、Slot
  • 读构建可扩展分布式系统:方法与实践05分布式缓存
  • hadoop3跑第一个例子wordcount
  • 加载资源时报错-ERR_CONNECTION_RESET,需要多次请求才能拿到资源的有效解决方案
  • Java 入门指南:JVM(Java虚拟机)——类的生命周期与加载过程
  • 【GO语言】Go语言详解与应用场景分析,与Java的对比及优缺点
  • 【RabbitMQ 项目】服务端数据管理模块之交换机管理
  • 项目需求 | MySQL增量备份与恢复的完整操作指南
  • 「OC」事件点击demo合集
  • 【智路】智路OS Perception Fusion Service
  • 【笔记】你不知道的JS读书笔记——Promise
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CentOS7 安装JDK
  • happypack两次报错的问题
  • Java小白进阶笔记(3)-初级面向对象
  • Logstash 参考指南(目录)
  • maven工程打包jar以及java jar命令的classpath使用
  • MySQL主从复制读写分离及奇怪的问题
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • React系列之 Redux 架构模式
  • spring-boot List转Page
  • Vue.js-Day01
  • Zepto.js源码学习之二
  • 回流、重绘及其优化
  • 理清楚Vue的结构
  • 每天一个设计模式之命令模式
  • 微信公众号开发小记——5.python微信红包
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # SpringBoot 如何让指定的Bean先加载
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #微信小程序:微信小程序常见的配置传旨
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (10)STL算法之搜索(二) 二分查找
  • (27)4.8 习题课
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Java数据结构)ArrayList
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)fiber的基本认识
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (原)本想说脏话,奈何已放下
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • ***原理与防范
  • .aanva
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • @angular/cli项目构建--http(2)
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [C++][数据结构][跳表]详细讲解