主要思路
- 仅保留一条边框 + border-radius 50%
- drop-shadow
- 动画 animation + keyframes
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>流光按钮</title>
<style>
.wrapper{
width: 900px;
height: 800px;
background: #111111;
padding: 60px;
}
.item{
margin: auto;
position: relative;
--size: 150px;
height: var(--size);
width: var(--size);
background-color: rgba(224, 224, 224, 0.774);
border-radius: 50%;
border: 3px solid rgba(255, 255, 255, 0.911);
color: rgb(255, 0, 179);
font-weight: 800;
line-height: var(--size);
text-align: center;
font-size: 30px;
}
.item::before{
content: "";
position: absolute;
inset: -7px;
border-top: 11px solid red;
border-radius: 50%;
filter: drop-shadow(1px 1px 5px red);
z-index: 1;
transition: all 1s;
animation: 2.3s linear infinite spin;
}
.item::after{
content: "";
position: absolute;
inset: -7px;
border-bottom: 11px solid rgb(0, 60, 255);
border-radius: 50%;
filter: drop-shadow(1px 1px 5px rgb(0, 140, 255));
z-index: 2;
transition: all 1s;
animation: 2.3s linear infinite spin;
}
@keyframes spin {
0%{
transform: rotate(0deg);
border-width: 3px;
opacity: .66;
}
50%{
opacity: .9;
border-width: 8px;
}
100%{
transform: rotate(360deg);
opacity: .66;
border-width: 3px;
}
}
</style>
</head>
<body>
<div class="wrapper" >
<div class="item">Hello</div>
</div>
</body>
</html>