CSS 实现鼠标滑过卡片上浮效果
# CSS 实现鼠标滑过卡片上浮效果
几行简单的 CSS 代码,实现页面元素在鼠标悬停时的浮起特效,类似于纸张折起的效果。
# 📖. 原理
hover
的时候对元素设置阴影:box-shadow
,使其样式与常态不同。
box-shadow
表达式参见 MDN (opens new window):
/* x偏移量 | y偏移量 | 阴影颜色 */
box-shadow: 60px -16px teal;
/* x偏移量 | y偏移量 | 阴影模糊半径 | 阴影颜色 */
box-shadow: 10px 5px 5px black;
/* x偏移量 | y偏移量 | 阴影模糊半径 | 阴影扩散半径 | 阴影颜色 */
box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);
/* 插页(阴影向内) | x偏移量 | y偏移量 | 阴影颜色 */
box-shadow: inset 5em 1em gold;
/* 任意数量的阴影,以逗号分隔 */
box-shadow: 3px 3px red, -1em 0 0.4em olive;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
指定单个 box-shadow
的用法:
- 给出两个、三个或四个数字值的情况。
- 如果只给出两个值,这两个值将被浏览器解释为 x 轴上的偏移量 和 y 轴上的偏移量。
- 如果给出了第三个值,这第三个值将被解释为模糊半径的大小。
- 如果给出了第四个值,这第四个值将被解释为扩展半径的大小。
- 可选,插页(阴影向内) inset。
- 可选,颜色值。
声明多个 shadows
时,用逗号将 shadows
隔开。
下面列举几种样式,也是在本博客系统中多次用到的。
# 一. 鼠标悬浮仿纸张折起的样式
代码实现:
在 hover
状态增加了 transition
属性,从而产生渐变的效果。
# 二. 鼠标悬浮仿纸张聚焦的样式
代码实现:
与上面的区别是调整了 box-shadow
属性的具体数值( y 轴上的偏移和阴影扩散半径,即第二、三个数字)。
# 三. 鼠标悬浮仿纸张抬起的样式
代码实现:
通过 box-shadow
属性和 transform
属性相结合。
# 四. 鼠标悬浮仿纸张升起的样式(动画实现)
代码实现:
使用 @keyframes
规则创建动画,将一套 CSS 样式逐渐变化为另一套样式。
在悬浮状态下执行动画。
上次更新: 2022/07/01, 17:34:19