80 lines
1.2 KiB
Vue
80 lines
1.2 KiB
Vue
<template>
|
|
<div style="position: relative;">
|
|
<div class="spin">
|
|
<div class="loader">
|
|
<div class="outer" />
|
|
<div class="middle" />
|
|
<div class="inner" />
|
|
</div>
|
|
</div>
|
|
<p class="text">
|
|
思考中
|
|
</p>
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.text{
|
|
display: block;
|
|
width: 100%;
|
|
font-size: 1.5em;
|
|
text-align: center;
|
|
position: absolute;
|
|
left: 0;
|
|
bottom: -2em;
|
|
}
|
|
.spin{
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
width: 20em;
|
|
height: 20em;
|
|
transform: scale(5);
|
|
}
|
|
.loader {
|
|
position: relative;
|
|
}
|
|
|
|
.outer,
|
|
.middle,
|
|
.inner {
|
|
border: 3px solid transparent;
|
|
border-top-color: #7fe7c4;
|
|
border-right-color: #7fe7c4;
|
|
border-radius: 50%;
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
}
|
|
|
|
.outer {
|
|
width: 3.5em;
|
|
height: 3.5em;
|
|
margin-left: -1.75em;
|
|
margin-top: -1.75em;
|
|
animation: spin 2s linear infinite;
|
|
}
|
|
|
|
.middle {
|
|
width: 2.1em;
|
|
height: 2.1em;
|
|
margin-left: -1.05em;
|
|
margin-top: -1.05em;
|
|
animation: spin 1.75s linear reverse infinite;
|
|
}
|
|
|
|
.inner {
|
|
width: 0.8em;
|
|
height: 0.8em;
|
|
margin-left: -0.4em;
|
|
margin-top: -0.4em;
|
|
animation: spin 1.5s linear infinite;
|
|
}
|
|
|
|
@keyframes spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
</style>
|