CSS-5.1 Transition 过渡

本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。
HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看!

点赞关注不迷路!您的点赞、关注和收藏是对小编最大的支持和鼓励!

系列文章目录

CSS- 1.1 css选择器

CSS- 2.1 实战之图文混排、表格、表单、学校官网一级导航栏

CSS- 3.1 盒子模型-块级元素、行内元素、行内块级元素和display属性

CSS- 4.1 浮动(Float)

CSS- 4.2 相对定位(position: relative)

CSS- 4.3 绝对定位(position: absolute)&学校官网导航栏实例

CSS- 4.4 固定定位(fixed)& 咖啡售卖官网实例

CSS- 4.5 css + div 布局 & 简易网易云音乐 官网布置实例

CSS- 4.6 radiu、shadow、animation动画

CSS-5.1 Transition 过渡


目录

系列文章目录

前言

[一、Transition 过渡详解](#一、Transition 过渡详解)

1.基本概念

2.语法

3.常用过渡属性

4.示例

[1. 基础悬停效果](#1. 基础悬停效果)

[2. 尺寸变化过渡](#2. 尺寸变化过渡)

[3. 透明度过渡](#3. 透明度过渡)

[4. 多属性过渡](#4. 多属性过渡)

5.高级用法

[1. 使用 all 关键字](#1. 使用 all 关键字)

[2. 指定多个过渡](#2. 指定多个过渡)

[3. 结合 transform 实现高性能动画](#3. 结合 transform 实现高性能动画)

6.速度曲线函数

7.注意事项

8.实际应用场景

二、代码实例

[1. css3-transition过渡 代码如下:](#1. css3-transition过渡 代码如下:)

[2. 过渡应用1 代码如下:](#2. 过渡应用1 代码如下:)

[3. 过渡应用2 代码如下:](#3. 过渡应用2 代码如下:)

[4. 过渡应用3 代码如下:](#4. 过渡应用3 代码如下:)

总结


前言

小编作为新晋码农一枚,会定期整理一些写的比较好的代码,作为自己的学习笔记,会试着做一下批注和补充,如转载或者参考他人文献会标明出处,非商用,如有侵权会删改!欢迎大家斧正和讨论!

一、Transition 过渡详解

CSS3 的 transition 属性允许元素在状态变化时(如悬停、点击等)产生平滑的动画效果,而无需使用 JavaScript。它是创建简单动画效果的一种高效方式。

1.基本概念

transition 属性是以下四个子属性的简写:

  1. transition-property:指定应用过渡效果的 CSS 属性
  2. transition-duration:指定过渡效果持续的时间
  3. transition-timing-function:指定过渡效果的速度曲线
  4. transition-delay:指定过渡效果开始前的延迟时间

2.语法

css

html 复制代码
.element {
  transition: property duration timing-function delay;
}

或分别指定:

css

html 复制代码
.element {
  transition-property: width;
  transition-duration: 0.5s;
  transition-timing-function: ease-in-out;
  transition-delay: 0.2s;
}

3.常用过渡属性

任何可以动画化的 CSS 属性都可以使用过渡效果,常见的包括:

  • color(颜色)
  • background-color(背景色)
  • width(宽度)
  • height(高度)
  • opacity(透明度)
  • transform(变形)
  • border-radius(圆角)
  • box-shadow(阴影)
  • font-size(字体大小)
  • margin(外边距)
  • padding(内边距)

4.示例

1. 基础悬停效果

css

html 复制代码
.button {
  background-color: #3498db;
  color: white;
  padding: 10px 20px;
  border: none;
  border-radius: 5px;
  transition: background-color 0.3s ease;
}

.button:hover {
  background-color: #2980b9;
}

效果:当鼠标悬停在按钮上时,背景色会平滑过渡到更深的蓝色。

2. 尺寸变化过渡

css

html 复制代码
.box {
  width: 100px;
  height: 100px;
  background-color: #e74c3c;
  transition: all 0.5s ease-in-out;
}

.box:hover {
  width: 200px;
  height: 200px;
  background-color: #c0392b;
}

效果:悬停时,盒子会平滑放大并改变颜色。

3. 透明度过渡

css

html 复制代码
.overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0);
  transition: background-color 0.5s ease;
}

.overlay.active {
  background-color: rgba(0, 0, 0, 0.5);
}

效果:叠加层在激活时平滑地从不透明变为半透明。

4. 多属性过渡

css

html 复制代码
.card {
  width: 200px;
  height: 200px;
  background-color: #f1c40f;
  border-radius: 10px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  transition: 
    transform 0.3s ease,
    box-shadow 0.3s ease;
}

.card:hover {
  transform: translateY(-10px);
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);
}

效果:悬停时,卡片轻微上浮并阴影加深,产生浮动效果。

5.高级用法

1. 使用 all 关键字

css

html 复制代码
.element {
  transition: all 0.3s ease;
}

注意:虽然方便,但可能影响性能,特别是当有很多属性需要过渡时。

2. 指定多个过渡

css

html 复制代码
.element {
  transition: 
    width 0.5s ease-in,
    height 0.3s ease-out,
    background-color 0.2s linear;
}

3. 结合 transform 实现高性能动画

css

html 复制代码
.element {
  transition: transform 0.3s ease;
}

.element:hover {
  transform: scale(1.1) rotate(5deg);
}

优势transformopacity 是由 GPU 加速的属性,性能更好。

6.速度曲线函数

  • ease(默认):慢速开始,然后变快,然后慢速结束
  • linear:匀速
  • ease-in:慢速开始
  • ease-out:慢速结束
  • ease-in-out:慢速开始和结束
  • cubic-bezier(n,n,n,n):自定义贝塞尔曲线

7.注意事项

  1. 性能考虑 :避免对会频繁触发的属性(如 topleft)使用过渡,可能引起性能问题。
  2. 硬件加速 :优先使用 transformopacity 属性以获得最佳性能。
  3. 可访问性:确保过渡效果不会影响用户体验,特别是对于有运动敏感问题的用户。
  4. 兼容性 :现代浏览器都支持 transition,但对于旧版浏览器可能需要前缀或回退方案。

8.实际应用场景

  • 导航菜单悬停效果
  • 按钮状态变化
  • 模态框显示/隐藏
  • 卡片悬停效果
  • 加载指示器
  • 图片悬停放大
  • 表单元素焦点状态

CSS3 的 transition 属性为网页交互提供了简单而强大的工具,可以显著提升用户体验而无需编写复杂的 JavaScript 代码。合理使用过渡效果可以使网站感觉更加生动和专业。

二、代码实例

1. 过渡应用 代码如下:

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>css3-transition过渡</title>
		<style type="text/css">
			div {
				width: 300px;
				height: 100px;
				border: 1px solid black;
				text-align: center;
				line-height: 100px;
				font-size: 20px;
				background-color: silver;
				border-radius: 20px;
				transition: all 1s linear;
			}
			/* 触发器 hover */
			/* 那个元素的哪个属性发生变化 */
			/* div  background-color 发生变化 */
			/* 哪个元素的属性值发生变化 我们就把transition放在哪个属性元素对应的选择器当中 */
			div:hover {
				background-color: #45b823;
				color: white;
				border: none;
			}
		</style>
	</head>
	<body>
		<h1>过渡transition</h1>
		<p>将元素的某个属性从"一个值"在指定的时间内过渡到"另一个值"</p>
		<div>
			web design
		</div>
	</body>
</html>

代码运行如下:

2. 过渡应用1 代码如下:

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>过渡应用1</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
			}

			.showlist ul {
				list-style-type: none;
			}

			/* 最大的父盒子,用来进行页面居中 */
			.showlist {}

			.showlist ul li {
				width: 300px;
				height: 40px;
				border: 1px solid black;
				overflow: hidden;
				transition: all 1s linear;
			}

			.showlist h3 {
				width: 300px;
				height: 40px;
				text-align: left;
				line-height: 40px;
			}

			.showlist .text {
				width: 300px;
				height: 180px;
				background-color: white;
				color: black;
			}

			.showlist ul li:hover {
				height: 220px;
				background-color: black;
				color: white;
			}
			.showlist img {
				width: 300px;
				
			}
		</style>
	</head>
	<body>
		<div class="showlist">
			<ul>
				<li>
					<h3>
						这是标题
					</h3>
					<div class="text">
						<img src="../img/Leslie%20Mint.png" >
					</div>
				</li>
				<li>
					<h3>
						这是标题
					</h3>
					<div class="text">
						这是内容
					</div>
				</li>
				<li>
					<h3>
						这是标题
					</h3>
					<div class="text">
						这是内容
					</div>
				</li>
				<li>
					<h3>
						这是标题
					</h3>
					<div class="text">
						这是内容
					</div>
				</li>
			</ul>
		</div>
	</body>
</html>

代码运行如下:

3. 过渡应用2 代码如下:

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>transition过渡应用2</title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			.container {
				width: 170px;
				height: 190px;
				position: relative;
				overflow: hidden;
				float: left;
				margin-right: 50px;
			}
			.container .text {
				width: 170px;
				height: 190px;
				/* border: 1px solid black; */
				position: absolute;
				left: 170px;
				top: 0px;
				transition: all 1s linear;
			}
			.container:hover .text {
				left: 0px;
				background-color: rgba(255,255,255,.6);
				color: saddlebrown;
			}
		</style>
	</head>
	<body>
		<div class="container">
			<img src="../img/kbjn.jpg" >
			<div class="text">
				<h1>标题</h1>
				<p>对文本的解释说明</p>
			</div>
		</div>
		<div class="container">
			<img src="../img/kbjn.jpg" >
			<div class="text">
				<h1>标题</h1>
				<p>对文本的解释说明</p>
			</div>
		</div>
		<div class="container">
			<img src="../img/kbjn.jpg" >
			<div class="text">
				<h1>标题</h1>
				<p>对文本的解释说明</p>
			</div>
		</div>
	</body>
</html>

代码运行如下:

4. 过渡应用3 代码如下:

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>过渡应用3</title>
		<style type="text/css">
			.wrap {
				width: 170px;
				height: 190px;
				transform-style: preserve-3d;
				position: relative;
				transition: all 1s linear;
			}
			.face {
				width: 170px;
				height: 190px;
				border: 1px solid saddlebrown;
			}
			.wrap:hover {
				transform: rotateY(180deg);
			}
			
			.wrap .back {
				/* 为了防止背面的字产生镜面效果,我们先翻180deg */
				transform: rotateY(180deg);
				background-color: saddlebrown;
				color: wheat;
				position: absolute;
				top: 0px;
			}
			
		</style>
	</head>
	<body>
		<div class="wrap">
			<div class="face front">
				<img src="../img/kbjn.jpg" >
			</div>
			<div class="face back">
				<h1>标题</h1>
				<p>这是解释说明</p>
			</div>
		</div>
	</body>
</html>

代码运行如下:


总结

以上就是今天要讲的内容,本文简单记录了Transition 过渡,仅作为一份简单的笔记使用,大家根据注释理解

相关推荐
Stevetagelian1 小时前
vue2实现元素拖拽
前端·javascript·css·vue.js
西哥写代码1 小时前
基于cornerstone3D的dicom影像浏览器 第二十一章 显示DICOM TAGS
前端·javascript·vue
Micro麦可乐2 小时前
前端图片裁剪上传全流程详解:从预览到上传的完整流程
前端·javascript·图片上传·图片裁切·cropper.js
Am1nnn3 小时前
CICD编译时遇到npm error code EINTEGRITY的问题
前端·npm·node.js
测试工程喵4 小时前
如何测试JWT的安全性:全面防御JSON Web Token的安全漏洞
前端·网络·功能测试·安全·json·接口测试·token
Python私教5 小时前
PrimeVue菜单组件深度解析:构建高效能的Web导航系统
前端·javascript·vue.js
iamtsfw7 小时前
记录:express router,可以让node.js后端文件里的路由分布的更清晰
前端·node.js
黑匣子~7 小时前
Vue 3 官方 Hooks 的用法与实现原理
前端·javascript·vue.js
恰恰兄8 小时前
webpack性能优化
前端·webpack·node.js