animation loading
.loader { position: relative; width: 2.5em; height: 2.5em; transform: rotate(165deg); } .loader:before, .loader:after { content: ""; position: absolute; top: 50%; left: 50%; display: block; width: 0.5em; height: 0.5em; border-radius: 0.25em; transform: translate(-50%, -50%); } .loader:before { animation: before 2s infinite; } .loader:after { animation: after 2s infinite; } @keyframes before { 0% { width: 0.5em; box-shadow: 1em -0.5em hsla(337, 84%, 48%, 0.75), -1em 0.5em hsla(190, 61%, 65%, 0.75); } 35% { width: 2.5em; box-shadow: 0 -0.5em hsla(337, 84%, 48%, 0.75), 0 0.5em hsla(190, 61%, 65%, 0.75); } 70% { width: 0.5em; box-shadow: -1em -0.5em hsla(337, 84%, 48%, 0.75), 1em 0.5em hsla(190, 61%, 65%, 0.75); } 100% { box-shadow: 1em -0.5em hsla(337, 84%, 48%, 0.75), -1em 0.5em hsla(190, 61%, 65%, 0.75); } } @keyframes after { 0% { height: 0.5em; box-shadow: 0.5em 1em hsla(160, 50%, 48%, 0.75), -0.5em -1em hsla(41, 82%, 52%, 0.75); } 35% { height: 2.5em; box-shadow: 0.5em 0 hsla(160, 50%, 48%, 0.75), -0.5em 0 hsla(41, 82%, 52%, 0.75); } 70% { height: 0.5em; box-shadow: 0.5em -1em hsla(160, 50%, 48%, 0.75), -0.5em 1em hsla(41, 82%, 52%, 0.75); } 100% { box-shadow: 0.5em 1em hsla(160, 50%, 48%, 0.75), -0.5em -1em hsla(41, 82%, 52%, 0.75); } } html, body { height: 100%; } .loader { position: absolute; top: calc(50% - 1.25em); left: calc(50% - 1.25em); } /*# sourceMappingURL=2.css.map */ .loader { position: relative; width: 5em; /* 2.5 */ height: 5em; /* 2.5 */ transform: rotate(165deg); } .loader:before, .loader:after { content: ""; position: absolute; top: 50%; left: 50%; display: block; width: 1em; /* 0.5em */ height: 1em; /* 0.5em 改为 */ border-radius: 0.5em; /* 0.25em */ transform: translate(-50%, -50%); } .loader:before { animation: before 1.5s infinite; } .loader:after { animation: after 1.5s infinite; } @keyframes before { 0% { width: 1em; /* 0.5em */ box-shadow: 2em -1em hsla(337, 84%, 48%, 0.75), -2em 1em hsla(190, 61%, 65%, 0.75); /* 阴影距离加倍 */ } 35% { width: 5em; /* 2.5em */ box-shadow: 0 -1em hsla(337, 84%, 48%, 0.75), 0 1em hsla(190, 61%, 65%, 0.75); } 70% { width: 1em; /* 0.5em */ box-shadow: -2em -1em hsla(337, 84%, 48%, 0.75), 2em 1em hsla(190, 61%, 65%, 0.75); } 100% { box-shadow: 2em -1em hsla(337, 84%, 48%, 0.75), -2em 1em hsla(190, 61%, 65%, 0.75); } } @keyframes after { 0% { height: 1em; /* 从 0.5em 改为 1em */ box-shadow: 1em 2em hsla(160, 50%, 48%, 0.75), -1em -2em hsla(41, 82%, 52%, 0.75); /* 阴影距离加倍 */ } 35% { height: 5em; /* 从 2.5em 改为 5em */ box-shadow: 1em 0 hsla(160, 50%, 48%, 0.75), -1em 0 hsla(41, 82%, 52%, 0.75); } 70% { height: 1em; /* 从 0.5em 改为 1em */ box-shadow: 1em -2em hsla(160, 50%, 48%, 0.75), -1em 2em hsla(41, 82%, 52%, 0.75); } 100% { box-shadow: 1em 2em hsla(160, 50%, 48%, 0.75), -1em -2em hsla(41, 82%, 52%, 0.75); } } .loader { position: absolute; top: calc(50% + 2.5em); /* 1.25em */ left: calc(50% - 2.5em); /* 1.25em */ }
.app-loading { display: flex; width: 100%; height: 100%; justify-content: center; align-items: center; flex-direction: column; background: #f0f2f5; } .app-loading .app-loading-wrap { position: absolute; top: 50%; left: 50%; display: flex; -webkit-transform: translate3d(-50%, -50%, 0); transform: translate3d(-50%, -50%, 0); justify-content: center; align-items: center; flex-direction: column; } .app-loading .app-loading-title { margin-bottom: 30px; font-size: 20px; font-weight: bold; text-align: center; } .app-loading .app-loading-logo { width: 100px; margin: 0 auto 15px auto; } .app-loading .app-loading-item { position: relative; display: inline-block; width: 60px; height: 60px; vertical-align: middle; border-radius: 50%; } .app-loading .app-loading-outter { position: absolute; width: 100%; height: 100%; border: 4px solid #2d8cf0; border-bottom: 0; border-left-color: transparent; border-radius: 50%; animation: loader-outter 1s cubic-bezier(0.42, 0.61, 0.58, 0.41) infinite; } .app-loading .app-loading-inner { position: absolute; top: calc(50% - 20px); left: calc(50% - 20px); width: 40px; height: 40px; border: 4px solid #87bdff; border-right: 0; border-top-color: transparent; border-radius: 50%; animation: loader-inner 1s cubic-bezier(0.42, 0.61, 0.58, 0.41) infinite; } @-webkit-keyframes loader-outter { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes loader-outter { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @-webkit-keyframes loader-inner { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(-360deg); transform: rotate(-360deg); } } @keyframes loader-inner { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(-360deg); transform: rotate(-360deg); } }
<div class="loader"></div>
<div class="app-loading-item">
<div class="app-loading-outter"></div>
<div class="app-loading-inner"></div>
</div>
https://www.runoob.com/w3cnote/free-html5-css3-loaders-preloaders.html
https://www.jq22.com/(A(caqiry))/plugin/4405
npm install -g sass
sass 1.scss 2.css

浙公网安备 33010602011771号