CSS技巧专栏:一日一例 18 -纯CSS实现背景浮光掠影的按钮特效
先发图,再说话:
案例图片
案例分析
按钮是好几种颜色的背景色组成的,使用css的话,应该会有几个不同颜色的层,在按钮后面移动。每个层互相叠加,大概还会用到图片混合模式产生了更多的叠加的颜色,然后边缘过渡的话,就是用模糊滤镜了。
布局代码
<button class="base">浮光掠影</button>
基础样式
/* 颜色定义在这里 */
:root{
--main-bg-color: #333;
--color:#000;
--bg: #000000;
--clr-1: #00ccff;
--clr-2: #33ff8c;
--clr-3: #ffcc00;
--clr-4: #e54cff;
--clr-5: #ffcc00;
--blur: 1.2rem;
}
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;
}
按钮样式,Let's do it!
先给按钮打个补丁:
.base{
overflow: hidden;
}
.base::before{
content: "";
position: absolute;
width: 100%;
height:100%;
top:0;
left:0;
border-radius: 2rem;
box-shadow: 8px 8px 10px 0 rgba( 66, 46,168, 0.9),-1px -1px 1px 0 rgba(207,189,245, 0.2),inset -1px 0px 0px 0 rgba( 255,255,255, 0.4),inset -1px 0px 10px 0 rgba( 255,255,255, 0.6),inset 1px 1px 0px 0 rgba( 255,255,255, 0.5);
z-index: 4;
}
接下来,我们要修改按钮的html结构:
<button class="base" >浮光掠影
<span cl