CSS技巧专栏:一日一例 13 -纯CSS实现晃晃悠悠背景不停滚动的按钮特效
大家好,本篇文章给大家带来一个可爱的按钮,像个小宠物等待你抚摸和奖励,不知道它会不会引起你的关注呢?页面上这样的一个按钮,会不会让你忍不住把鼠标移动过去点一下呢?
本例图片
案例分析
这个按钮比之前我们介绍的按钮稍微复杂了一些些。但不外乎就是多了些小小的可爱的动画而已。
间隔的灰色条和白色的条纹布滚动效果,以及鼠标移动上去后,变成了醒目的荧光绿。仔细观察发现,那个滚动的条纹布并没有超过按钮上灰色的边框,而这个按钮,居然在灰色的边框外面还有一层白色的边框。那么,我们把这些样式分解一下:两个边框,可以都写在按钮上,一个用真的边框border,一个用box-shadow来模拟。三个动画:
- 条纹滚动动画,采用背景色渐变位移动画,绑定在after层上。
- 像个摇头摆尾的小狗狗一样时不时晃一晃的动画,绑定在按钮上。
- 响应鼠标悬浮:条纹灰色变荧光绿色,可以用颜色变化,也可以用灰度滤镜。
布局代码
<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;
}
按钮样式
那么我们先来给它两个层:
.line-scroll{
box-sizin