过渡简介
了解 CSS 中的过渡效果。
让我们了解 CSS 中动画和过渡效果的工作原理。
CSS 过渡简介
我们先在 HTML 页面中添加一个按钮:
1<button> 2 测试按钮 3</button>
同时,为按钮添加一些 CSS 样式:
1button { 2 padding: 10px 20px; 3 background: tomato; 4 border: none; 5 border-radius: 5px; 6 font-size: 20px; 7 color: white; 8}
我们如何给用户一个视觉提示,表明他们正在悬停于该按钮之上?
一种常见做法是,在按钮的 CSS 声明中加入小手带手指的光标图标(即 pointer):
1button { 2 /* 省略部分代码 ... */ 3 cursor: pointer; 4}
cursor: pointer 表示当鼠标悬停在按钮上时,光标将变为指向的手形图标。
实际上,我们为按钮定义了一种特殊行为。
这种特殊行为仅在鼠标悬停于按钮上时发生,也就是按钮处于某种特殊状态;这种状态被称为 悬停状态。
因此,我们成功地在按钮悬停时改变了鼠标光标的外观。隐含地,我们把 cursor CSS 属性的值从 default 变成了 pointer。
接下来,我们还可以通过 CSS 过渡,在按钮处于悬停状态时,改变其他 CSS 属性的值。
CSS 过渡
CSS 过渡 是指当 HTML 元素进入某种特殊状态时,其 CSS 属性值逐渐发生变化的过程。
在我们的例子中,这种特殊状态就是悬停状态。我们可以使用 :hover 伪类来针对这一特定状态,如下所示:
1button:hover { 2 background: plum; 3}
上述代码的意思是:当按钮被悬停时,将其背景色改为紫罗兰色。
然而,上面的代码存在一个小问题。
颜色变化是突然发生的,就像有人瞬间打开了开关一样。
我们真正想要的效果是让变化缓慢进行,使过渡看起来更自然。
我们可以通过 transition 属性来实现这一点:
1button { 2 /* 省略部分代码 ... */ 3 transition: background 1s; 4} 5button:hover { 6 background: plum; 7}
No configuration found for ID: f6ddf2031d172b03b00b7955b03c50c1e5710c87c1cd3227492f244b662d6310
在同一个 HTML 元素上添加两个过渡效果
在下面的例子中,我们将为按钮添加另一个过渡效果。
HTML 几乎相同:
1<button type="submit"> 2 悬停时的两次过渡 3</button>
CSS 也类似:
1button { 2 padding: 10px 20px; 3 background: tomato; 4 border: none; 5 border-radius: 5px; 6 font-size: 20px; 7 color: white; 8 cursor: pointer; 9 transition: background 1s, font-size 2s; 10} 11button:hover { 12 background: orange; 13 font-size: 30px; 14}
注意以上代码的最后六行。
这六行正是我们变化的核心:
- 我们在
transition属性中列出需要过渡的多个 CSS 属性,每个属性后紧跟过渡持续时间。 - 在
button:hover的 CSS 声明中,我们定义了过渡的最终状态。
在 button:hover 选择器中,我们明确设置了按钮过渡的结束状态。只要某个属性出现在 button:hover 中,并且也在 button 的 transition 声明中列出,它就会参与过渡。
关于 CSS 过渡还有更多内容可以学习。例如,我们不必逐个列出要过渡的属性,可以直接使用通配关键字 all:
1transition: all 1s;
No configuration found for ID: f0bf7ed49d4fbab53c4d761e1525cf460403d079d2c32cd8ba724a7bb3e7cd91