HTML代码:
CSS代码:
.btn {
position: relative;
display: inline-block;
padding: 12px 32px;
font-size: 16px;
font-weight: bold;
color: #fff;
text-transform: uppercase;
text-decoration: none;
background-color: #0085cc;
border: none;
overflow: hidden;
cursor: pointer;
}
.btn:before {
content: "";
position: absolute;
top: 50%;
left: 50%;
z-index: -1;
width: 100%;
height: 100%;
background-color: #0076b3;
transform: translate(-50%, -50%) scale(0);
transition: transform 0.3s ease-out;
}
.btn:hover:before {
transform: translate(-50%, -50%) scale(1);
transition-delay: 0.5s;
}
.btn:hover:after {
animation: pulse 1s infinite;
animation-delay: 0.5s;
}
@keyframes pulse {
0% {
transform: scale(1);
opacity: 1;
}
100% {
transform: scale(1.5);
opacity: 0;
}
}
在这段CSS代码中,使用 :before
和 :after
伪元素创建一个波浪圆和一个脉冲效果。当鼠标悬停在按钮上时,波浪圆会从中心点开始动画,并在鼠标悬停时停止一半的动画。同时,脉冲效果会开始动画。
这里使用 transition-delay
属性来实现按钮动画暂停的效果, animation-delay
属性实现脉冲效果在一定时间后开始。