CSS技巧专栏:一日一例 14-纯CSS实现模拟水波波动填充按钮特效
大家好,今天介绍一个在网上很常见的模拟水波波动要灌满按钮的动画效果,效果下面图所示。
本例图片
案例分析
我们沿着Z轴从上到下数一下一共有几个层:
文字层:白色文字阴影的黑色文字,当鼠标移动上来时候,它变成了暗蓝色。
水波层:这里的水波是一个蓝色的层,上面叠加了2个圆形的白色层模拟的。两个大小一样的白色的近圆形层不停缓慢的滚动形成的。 这里就是3个层。
好吧,这样数下来就至少4个层。那么,文字层怎么在最上面呢?显然,按钮本体层是不行的,它会被压在水波层下面,那么它还需要用到 伪元素,这就是:5个层。
分析结束,我们开工!
布局代码
<button class="base">我要被淹死了</button>
基础样式
:root{--main-bg-color: #000;--color:#000;--hover-color:#993399;
}
button{margin: 0.3em;outline: 0;border: none;
}
.base{position: relative; padding: 1rem 3rem; /* 用 padding 撑起按钮的宽度和高度 ,并确保了按钮文字水平方向居中 */font-family: "微软雅黑", sans-serif;font-size: 1.5rem; line-height: 1.5rem; /* 行高和字号大小相等,可以实现按钮文字在按钮内垂直居中 */ font-weight:700;color: var(--color); /* 文字颜色为预定义的前景色 */cursor: pointer; /* 鼠标移动到按钮上时候的形状:手型 */user-select: none; /* 让用户不能选择按钮上的文字 */white-space: nowrap; /* 避免英文单词间的空格导致文字换行 */border-radius: 2rem; text-decoration: none; text-transform:uppercase; /* 字母自动修正为大写 */transition: all .5s; /* 按钮响应动画效果的持续时间 */margin: 1.5rem 2rem;
}
按钮样式
我们先做复杂的水波滚动效果,先修改一下HTML,给按钮增加一个 行内元素 span,它会有1个本体和两个伪元素层,用来实现上面我们说过的水波波动效果。
<button class="ba