如何实现一个tooltip组件
- 首先编写HTML代码如下
html
<section class="rund">
<div class="container">
<div class="item" style="--i:0;"></div>
<div class="item" style="--i:1;"></div>
<div class="item" style="--i:2;"></div>
<div class="item" style="--i:3;"></div>
<div class="item" style="--i:4;"></div>
<div class="item" style="--i:5;"></div>
<div class="item" style="--i:6;"></div>
<div class="item" style="--i:7;"></div>
<div class="item" style="--i:8;"></div>
<div class="item" style="--i:9;"></div>
<div class="item" style="--i:10;"></div>
</div>
</section><section class="rund">
<div class="container">
<div class="item" style="--i:0;"></div>
<div class="item" style="--i:1;"></div>
<div class="item" style="--i:2;"></div>
<div class="item" style="--i:3;"></div>
<div class="item" style="--i:4;"></div>
<div class="item" style="--i:5;"></div>
<div class="item" style="--i:6;"></div>
<div class="item" style="--i:7;"></div>
<div class="item" style="--i:8;"></div>
<div class="item" style="--i:9;"></div>
<div class="item" style="--i:10;"></div>
</div>
</section>- 编写样式文件
scss
.rund .container .item {
position: absolute;
background-color: transparent;
width: calc(var(--i) * 25px);
aspect-ratio: 1;
border: 10px solid rgb(0, 200, 255);
border-radius: 50%;
transform: rotateX(70deg);
animation: move 3s ease-in-out calc(var(--i) * 0.08s) infinite;
box-shadow: 0 0 15px rgb(124, 124, 124),
inset 0 0 15px rgb(124, 124, 124);
}
.rund .container {
position: relative;
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
@keyframes move {
0% {
transform: rotateX(70deg) translateY(0deg);
filter: hue-rotate(0deg);
}
50% {
transform: rotateX(70deg) translateY(-35vw);
filter: hue-rotate(180deg);
}
}.rund .container .item {
position: absolute;
background-color: transparent;
width: calc(var(--i) * 25px);
aspect-ratio: 1;
border: 10px solid rgb(0, 200, 255);
border-radius: 50%;
transform: rotateX(70deg);
animation: move 3s ease-in-out calc(var(--i) * 0.08s) infinite;
box-shadow: 0 0 15px rgb(124, 124, 124),
inset 0 0 15px rgb(124, 124, 124);
}
.rund .container {
position: relative;
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
@keyframes move {
0% {
transform: rotateX(70deg) translateY(0deg);
filter: hue-rotate(0deg);
}
50% {
transform: rotateX(70deg) translateY(-35vw);
filter: hue-rotate(180deg);
}
}