如何使用 CSS 在元素上创建多个过渡?


使用 CSS 在元素上创建多个过渡是一个增加网站趣味性和交互性的好方法。通过合并各种过渡,我们可以为用户创造一种动态且引人入胜的体验。在本文中,我们将介绍如何使用 CSS 在元素上创建多个过渡的基础知识。

层叠样式表 (CSS) 是用于设置网页样式的强大工具。其最有用的功能之一是能够在元素的不同状态之间创建流畅且视觉上引人入胜的过渡,例如当鼠标悬停在其上或单击它时。

什么是 CSS 过渡?

在了解如何创建多个过渡之前,让我们首先了解什么是 CSS 过渡。过渡是元素的两种状态之间的逐渐变化。例如,当我们悬停在按钮上时,其背景颜色会逐渐从一种颜色变为另一种颜色。CSS 允许我们指定这些过渡的持续时间和时间安排,以及正在过渡的属性。

语法

css-selector{
   transition: property duration timing-function delay;
}

CSS 中的过渡属性

我们可以在 CSS 中使用的过渡属性包括:

  • transition-property − 此属性指定应过渡哪些 CSS 属性。

  • transition-duration − 此属性指定过渡的持续时间(秒或毫秒)。默认情况下,过渡持续时间为 0,这意味着没有应用过渡效果。

  • transition-timing-function − 此属性控制过渡的速度和时间安排。

  • transition-delay − 此属性指定过渡开始之前的延迟。

创建基本过渡

要创建过渡,我们需要指定要动画化的属性,例如过渡的持续时间、时间函数和任何延迟。例如,要为按钮的宽度创建过渡,我们可以使用以下代码:

button {
   transition: width 0.5s ease-in-out;
}

上述代码指定按钮的宽度将在 0.5 秒内使用 ease-in-out 时间函数进行过渡。

创建多个过渡

要在元素上创建多个过渡,我们需要向 CSS 代码添加其他过渡。例如,要创建一个同时过渡宽度和 background-color 属性的按钮,我们可以使用以下代码:

button {
   transition: width 0.5s ease-in-out, background-color 0.5s ease-in-out;
}

上述代码指定按钮的宽度和 background-color 属性都将在 0.5 秒内使用 ease-in-out 时间函数进行过渡。

以下是一些使用 CSS 在元素上创建多个过渡的完整代码示例:

示例 1

在此示例中,我们将创建一个同时过渡宽度和 background-color 属性的按钮。但是,我们将为每个过渡使用不同的持续时间来创建交错效果。

<html>
<head>
   <style>
      body{
         text-align: center;
      }
      button {
         margin: auto;
         width: 100px;
         height: 50px;
         background-color: green;
         border: none;
         color: #fff;
         font-size: 16px;
         padding: 10px 20px;
         transition: width 0.5s ease-in, background-color 1s ease-out;
      }
      button:hover {
         width: 150px;
         background-color: red;
      }
   </style>
</head>
   <body>
      <h3>Multiple Transitions with Different Durations</h3>
      <button>Hover Me</button>
   </body>
</html>

在上面的示例中,我们为按钮设置了100px 的宽度和绿色的background-color。然后,我们将 transition 属性设置为同时过渡宽度和background-color 属性。但是,我们为宽度过渡使用 0.5s 的持续时间,为 background-color 过渡使用 1s 的持续时间。这会创建一个交错效果,其中按钮的宽度过渡速度快于 background-color。当鼠标悬停在按钮上时,宽度将扩展到150px,而background-color 将变为红色。

示例 2

在此示例中,我们将创建一个同时过渡 background-color 和 border-radius 属性的方框。但是,我们将为 border-radius 过渡使用延迟。

<html>
<head>
   <style>
      body{
         text-align: center;
      }
      .box {
         margin: auto;
         width: 200px;
         height: 200px;
         background-color: red;
         border-radius: 50%;
         transition: background-color 0.5s ease-in-out, border-radius
         0.5s ease-in-out 0.5s;
      }
      .box:hover {
         background-color: blue;
         border-radius: 0;
      }
   </style>
</head>
   <body>
      <h3>Multiple Transitions with Delays</h3>
      <div> Hover over the below circle to see multiple transitions</div>
      <div class="box"></div>
   </body>
</html>

在上面的示例中,我们为方框设置了 200px 的宽度和高度以及红色的 background-color。然后,我们将 transition 属性设置为同时过渡 background-color 和 border-radius 属性。但是,我们为 border-radius 过渡使用了 0.5s 的延迟。这意味着 background-color 将立即过渡,而 border-radius 将等待 0.5s 后再过渡。当鼠标悬停在方框上时,background-color 将变为蓝色,border-radius 将过渡到 0,创建一个正方形。

示例 3

在这里,我们将创建一个同时过渡宽度和颜色属性的按钮。但是,我们将为每个过渡使用不同的时间函数来创建独特的效果。

<html>
<head>
   <style>
      body{
         text-align: center;
      }
      button {
         margin: auto;
         width: 120px;
         height: 60px;
         background-color: blue;
         border: none;
         color: red;
         font-size: 18px;
         padding: 10px 20px;
         transition: width 0.5s cubic-bezier(0.25, 0.1, 0.25, 1),
         color 1s ease-in-out;
      }
      button:hover {
         width: 180px;
         color: #fff;
      }
   </style>
</head>
   <body>
      <h3>Multiple Transitions with Different Timing Functions</h3>
      <button>Hover Me</button>
   </body>
</html>

在上面的示例中,我们为按钮设置了 120px 的宽度和蓝色的 background-color,然后将 transition 属性设置为同时过渡宽度和颜色属性。但是,我们为每个过渡使用了不同的时间函数。宽度过渡使用自定义 cubic-bezier 函数。当鼠标悬停在按钮上时,宽度将扩展到 180px,文本颜色将从红色变为白色。

结论

CSS 过渡是用于在网页上创建流畅且视觉上吸引人的效果的强大工具。通过使用 transition 属性,我们可以指定正在过渡的持续时间、时间函数和属性。我们还可以通过在 transition 属性中指定多个属性来在元素上创建多个过渡。

更新于:2023年3月16日

1000+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告