Skip to content

CSS3 过渡(Transitions)是一组允许在特定时间段内,平滑地改变 CSS 属性值的效果。通过使用过渡,开发者可以增强用户体验,使界面交互更加自然和生动。

基本属性

1. transition 属性

transition 属性是一个简写属性,用于设置过渡效果的不同方面。它可以包含以下四个属性:

  • transition-property: 规定应用过渡的 CSS 属性。
  • transition-duration: 规定过渡效果的持续时间。
  • transition-timing-function: 规定过渡效果的时间曲线。
  • transition-delay: 规定过渡效果开始前的延迟时间。

语法:

css
transition: [transition-property] [transition-duration] [transition-timing-function] [transition-delay];

示例:

css
transition: all 0.5s ease-in-out 0s;

2. 各个属性的详细说明

transition-property

transition-property 指定了哪一个或多个 CSS 属性将应用过渡效果。可以使用 all 关键字来应用所有可过渡的属性。

css
transition-property: width;
transition-duration

transition-duration 指定过渡效果持续的时间,单位是秒(s)或毫秒(ms)。

css
transition-duration: 2s;
transition-timing-function

transition-timing-function 指定过渡效果的时间曲线,即动画的速度曲线。常见的取值有:

  • ease: 慢速开始,然后加速,再慢速结束(默认值)。
  • linear: 动画从头到尾的速度是相同的。
  • ease-in: 动画以慢速开始。
  • ease-out: 动画以慢速结束。
  • ease-in-out: 动画以慢速开始和结束。
  • cubic-bezier(n,n,n,n): 定义自己的速度曲线。
css
transition-timing-function: ease-in-out;
transition-delay

transition-delay 指定过渡效果开始前的延迟时间,单位是秒(s)或毫秒(ms)。

css
transition-delay: 0.5s;

示例

下面是一个使用 CSS3 过渡效果的示例,当用户将鼠标悬停在盒子上时,盒子的宽度和背景颜色将会平滑变化:

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3 过渡示例</title>
<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: #4CAF50;
        transition: width 2s ease-in-out, background-color 1s linear;  /* 设置过渡效果 */
    }
    .box:hover {
        width: 200px;  /* 当鼠标悬停时,宽度变为 200px */
        background-color: #FF5722;  /* 当鼠标悬停时,背景颜色变为橙色 */
    }
</style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

在这个示例中,当用户将鼠标悬停在 .box 元素上时,宽度从 100px 平滑过渡到 200px,背景颜色从绿色过渡到橙色。宽度变化的过渡效果持续 2 秒并使用 ease-in-out 时间曲线,而背景颜色变化的过渡效果持续 1 秒并使用 linear 时间曲线。

进阶用法

1. 多个过渡效果

可以为多个属性设置不同的过渡效果,每个属性的过渡效果之间用逗号分隔。

css
transition: width 2s ease, height 2s ease-in, opacity 1s linear;

2. 过渡与变换结合

过渡效果可以与 CSS3 变换属性结合使用,创建更加复杂和动态的效果。

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3 过渡与变换示例</title>
<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: #4CAF50;
        transition: transform 1s, background-color 1s;  /* 设置过渡效果 */
    }
    .box:hover {
        transform: rotate(45deg) scale(1.5);  /* 鼠标悬停时旋转并放大 */
        background-color: #FF5722;  /* 鼠标悬停时背景颜色变为橙色 */
    }
</style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

在这个示例中,当用户将鼠标悬停在 .box 元素上时,元素会旋转 45 度并放大 1.5 倍,同时背景颜色从绿色过渡到橙色。通过结合使用过渡和变换,可以创建更加生动和吸引人的用户界面效果。