Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
?? Experiment: The experimental loading animation needs special conditions.
css
@import url("https://lib.sinaapp.com/js/bootstrap/4.2.1/css/bootstrap.min.css"); @charset "UTF-8"; /** * * three-dots.css v0.1.0 * * https://nzbin.github.io/three-dots/ * * Copyright (c) 2018 nzbin * * Released under the MIT license * */ /** * ============================================== * Dot Elastic * ============================================== */ .dot-elastic { position: relative; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotElastic 1s infinite linear; } .dot-elastic::before, .dot-elastic::after { content: ''; display: inline-block; position: absolute; top: 0; } .dot-elastic::before { left: -15px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotElasticBefore 1s infinite linear; } .dot-elastic::after { left: 15px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotElasticAfter 1s infinite linear; } @keyframes dotElasticBefore { 0% { transform: scale(1, 1); } 25% { transform: scale(1, 1.5); } 50% { transform: scale(1, 0.67); } 75% { transform: scale(1, 1); } 100% { transform: scale(1, 1); } } @keyframes dotElastic { 0% { transform: scale(1, 1); } 25% { transform: scale(1, 1); } 50% { transform: scale(1, 1.5); } 75% { transform: scale(1, 1); } 100% { transform: scale(1, 1); } } @keyframes dotElasticAfter { 0% { transform: scale(1, 1); } 25% { transform: scale(1, 1); } 50% { transform: scale(1, 0.67); } 75% { transform: scale(1, 1.5); } 100% { transform: scale(1, 1); } } /** * ============================================== * Dot Pulse * ============================================== */ .dot-pulse { position: relative; left: -9999px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; box-shadow: 9999px 0 0 -5px #9880ff; animation: dotPulse 1.5s infinite linear; animation-delay: .25s; } .dot-pulse::before, .dot-pulse::after { content: ''; display: inline-block; position: absolute; top: 0; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; } .dot-pulse::before { box-shadow: 9984px 0 0 -5px #9880ff; animation: dotPulseBefore 1.5s infinite linear; animation-delay: 0s; } .dot-pulse::after { box-shadow: 10014px 0 0 -5px #9880ff; animation: dotPulseAfter 1.5s infinite linear; animation-delay: .5s; } @keyframes dotPulseBefore { 0% { box-shadow: 9984px 0 0 -5px #9880ff; } 30% { box-shadow: 9984px 0 0 2px #9880ff; } 60%, 100% { box-shadow: 9984px 0 0 -5px #9880ff; } } @keyframes dotPulse { 0% { box-shadow: 9999px 0 0 -5px #9880ff; } 30% { box-shadow: 9999px 0 0 2px #9880ff; } 60%, 100% { box-shadow: 9999px 0 0 -5px #9880ff; } } @keyframes dotPulseAfter { 0% { box-shadow: 10014px 0 0 -5px #9880ff; } 30% { box-shadow: 10014px 0 0 2px #9880ff; } 60%, 100% { box-shadow: 10014px 0 0 -5px #9880ff; } } /** * ============================================== * Dot Flashing * ============================================== */ .dot-flashing { position: relative; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotFlashing 1s infinite linear alternate; animation-delay: .5s; } .dot-flashing::before, .dot-flashing::after { content: ''; display: inline-block; position: absolute; top: 0; } .dot-flashing::before { left: -15px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotFlashing 1s infinite alternate; animation-delay: 0s; } .dot-flashing::after { left: 15px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotFlashing 1s infinite alternate; animation-delay: 1s; } @keyframes dotFlashing { 0% { background-color: #9880ff; } 50%, 100% { background-color: #ebe6ff; } } /** * ============================================== * Dot Collision * ============================================== */ .dot-collision { position: relative; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; } .dot-collision::before, .dot-collision::after { content: ''; display: inline-block; position: absolute; top: 0; } .dot-collision::before { left: -10px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotCollisionBefore 2s infinite ease-in; } .dot-collision::after { left: 10px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotCollisionAfter 2s infinite ease-in; animation-delay: 1s; } @keyframes dotCollisionBefore { 0%, 50%, 75%, 100% { transform: translateX(0); } 25% { transform: translateX(-15px); } } @keyframes dotCollisionAfter { 0%, 50%, 75%, 100% { transform: translateX(0); } 25% { transform: translateX(15px); } } /** * ============================================== * Dot Revolution * ============================================== */ .dot-revolution { position: relative; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; } .dot-revolution::before, .dot-revolution::after { content: ''; display: inline-block; position: absolute; } .dot-revolution::before { left: 0; top: -15px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; transform-origin: 5px 20px; animation: dotRevolution 1.4s linear infinite; } .dot-revolution::after { left: 0; top: -30px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; transform-origin: 5px 35px; animation: dotRevolution 1s linear infinite; } @keyframes dotRevolution { 0% { transform: rotateZ(0deg) translate3d(0, 0, 0); } 100% { transform: rotateZ(360deg) translate3d(0, 0, 0); } } /** * ============================================== * Dot Carousel * ============================================== */ .dot-carousel { position: relative; left: -9999px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; box-shadow: 9984px 0 0 0 #9880ff, 9999px 0 0 0 #9880ff, 10014px 0 0 0 #9880ff; animation: dotCarousel 1.5s infinite linear; } @keyframes dotCarousel { 0% { box-shadow: 9984px 0 0 -1px #9880ff, 9999px 0 0 1px #9880ff, 10014px 0 0 -1px #9880ff; } 50% { box-shadow: 10014px 0 0 -1px #9880ff, 9984px 0 0 -1px #9880ff, 9999px 0 0 1px #9880ff; } 100% { box-shadow: 9999px 0 0 1px #9880ff, 10014px 0 0 -1px #9880ff, 9984px 0 0 -1px #9880ff; } } /** * ============================================== * Dot Typing * ============================================== */ .dot-typing { position: relative; left: -9999px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; box-shadow: 9984px 0 0 0 #9880ff, 9999px 0 0 0 #9880ff, 10014px 0 0 0 #9880ff; animation: dotTyping 1.5s infinite linear; } @keyframes dotTyping { 0% { box-shadow: 9984px 0 0 0 #9880ff, 9999px 0 0 0 #9880ff, 10014px 0 0 0 #9880ff; } 16.667% { box-shadow: 9984px -10px 0 0 #9880ff, 9999px 0 0 0 #9880ff, 10014px 0 0 0 #9880ff; } 33.333% { box-shadow: 9984px 0 0 0 #9880ff, 9999px 0 0 0 #9880ff, 10014px 0 0 0 #9880ff; } 50% { box-shadow: 9984px 0 0 0 #9880ff, 9999px -10px 0 0 #9880ff, 10014px 0 0 0 #9880ff; } 66.667% { box-shadow: 9984px 0 0 0 #9880ff, 9999px 0 0 0 #9880ff, 10014px 0 0 0 #9880ff; } 83.333% { box-shadow: 9984px 0 0 0 #9880ff, 9999px 0 0 0 #9880ff, 10014px -10px 0 0 #9880ff; } 100% { box-shadow: 9984px 0 0 0 #9880ff, 9999px 0 0 0 #9880ff, 10014px 0 0 0 #9880ff; } } /** * ============================================== * Dot Windmill * ============================================== */ .dot-windmill { position: relative; top: -10px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; transform-origin: 5px 15px; animation: dotWindmill 2s infinite linear; } .dot-windmill::before, .dot-windmill::after { content: ''; display: inline-block; position: absolute; } .dot-windmill::before { left: -8.66px; top: 15px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; } .dot-windmill::after { left: 8.66px; top: 15px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; } @keyframes dotWindmill { 0% { transform: rotateZ(0deg) translate3d(0, 0, 0); } 100% { transform: rotateZ(720deg) translate3d(0, 0, 0); } } /** * ============================================== * Dot Bricks * ============================================== */ .dot-bricks { position: relative; top: 8px; left: -9999px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; box-shadow: 9991px -16px 0 0 #9880ff, 9991px 0 0 0 #9880ff, 10007px 0 0 0 #9880ff; animation: dotBricks 2s infinite ease; } @keyframes dotBricks { 0% { box-shadow: 9991px -16px 0 0 #9880ff, 9991px 0 0 0 #9880ff, 10007px 0 0 0 #9880ff; } 8.333% { box-shadow: 10007px -16px 0 0 #9880ff, 9991px 0 0 0 #9880ff, 10007px 0 0 0 #9880ff; } 16.667% { box-shadow: 10007px -16px 0 0 #9880ff, 9991px -16px 0 0 #9880ff, 10007px 0 0 0 #9880ff; } 25% { box-shadow: 10007px -16px 0 0 #9880ff, 9991px -16px 0 0 #9880ff, 9991px 0 0 0 #9880ff; } 33.333% { box-shadow: 10007px 0 0 0 #9880ff, 9991px -16px 0 0 #9880ff, 9991px 0 0 0 #9880ff; } 41.667% { box-shadow: 10007px 0 0 0 #9880ff, 10007px -16px 0 0 #9880ff, 9991px 0 0 0 #9880ff; } 50% { box-shadow: 10007px 0 0 0 #9880ff, 10007px -16px 0 0 #9880ff, 9991px -16px 0 0 #9880ff; } 58.333% { box-shadow: 9991px 0 0 0 #9880ff, 10007px -16px 0 0 #9880ff, 9991px -16px 0 0 #9880ff; } 66.666% { box-shadow: 9991px 0 0 0 #9880ff, 10007px 0 0 0 #9880ff, 9991px -16px 0 0 #9880ff; } 75% { box-shadow: 9991px 0 0 0 #9880ff, 10007px 0 0 0 #9880ff, 10007px -16px 0 0 #9880ff; } 83.333% { box-shadow: 9991px -16px 0 0 #9880ff, 10007px 0 0 0 #9880ff, 10007px -16px 0 0 #9880ff; } 91.667% { box-shadow: 9991px -16px 0 0 #9880ff, 9991px 0 0 0 #9880ff, 10007px -16px 0 0 #9880ff; } 100% { box-shadow: 9991px -16px 0 0 #9880ff, 9991px 0 0 0 #9880ff, 10007px 0 0 0 #9880ff; } } /** * ============================================== * Dot Floating * ============================================== */ .dot-floating { position: relative; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotFloating 3s infinite cubic-bezier(0.15, 0.6, 0.9, 0.1); } .dot-floating::before, .dot-floating::after { content: ''; display: inline-block; position: absolute; top: 0; } .dot-floating::before { left: -12px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotFloatingBefore 3s infinite ease-in-out; } .dot-floating::after { left: -24px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotFloatingAfter 3s infinite cubic-bezier(0.4, 0, 1, 1); } @keyframes dotFloating { 0% { left: calc(-50% - 5px); } 75% { left: calc(50% + 105px); } 100% { left: calc(50% + 105px); } } @keyframes dotFloatingBefore { 0% { left: -50px; } 50% { left: -12px; } 75% { left: -50px; } 100% { left: -50px; } } @keyframes dotFloatingAfter { 0% { left: -100px; } 50% { left: -24px; } 75% { left: -100px; } 100% { left: -100px; } } /** * ============================================== * Dot Fire * ============================================== */ .dot-fire { position: relative; left: -9999px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; box-shadow: 9999px 22.5px 0 -5px #9880ff; animation: dotFire 1.5s infinite linear; animation-delay: -.85s; } .dot-fire::before, .dot-fire::after { content: ''; display: inline-block; position: absolute; top: 0; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; } .dot-fire::before { box-shadow: 9999px 22.5px 0 -5px #9880ff; animation: dotFire 1.5s infinite linear; animation-delay: -1.85s; } .dot-fire::after { box-shadow: 9999px 22.5px 0 -5px #9880ff; animation: dotFire 1.5s infinite linear; animation-delay: -2.85s; } @keyframes dotFire { 1% { box-shadow: 9999px 22.5px 0 -5px #9880ff; } 50% { box-shadow: 9999px -5.625px 0 2px #9880ff; } 100% { box-shadow: 9999px -22.5px 0 -5px #9880ff; } } /** * ============================================== * Dot Spin * ============================================== */ .dot-spin { position: relative; width: 10px; height: 10px; border-radius: 5px; background-color: transparent; color: transparent; box-shadow: 0 -18px 0 0 #9880ff, 12.72984px -12.72984px 0 0 #9880ff, 18px 0 0 0 #9880ff, 12.72984px 12.72984px 0 0 rgba(152, 128, 255, 0), 0 18px 0 0 rgba(152, 128, 255, 0), -12.72984px 12.72984px 0 0 rgba(152, 128, 255, 0), -18px 0 0 0 rgba(152, 128, 255, 0), -12.72984px -12.72984px 0 0 rgba(152, 128, 255, 0); animation: dotSpin 1.5s infinite linear; } @keyframes dotSpin { 0%, 100% { box-shadow: 0 -18px 0 0 #9880ff, 12.72984px -12.72984px 0 0 #9880ff, 18px 0 0 0 #9880ff, 12.72984px 12.72984px 0 -5px rgba(152, 128, 255, 0), 0 18px 0 -5px rgba(152, 128, 255, 0), -12.72984px 12.72984px 0 -5px rgba(152, 128, 255, 0), -18px 0 0 -5px rgba(152, 128, 255, 0), -12.72984px -12.72984px 0 -5px rgba(152, 128, 255, 0); } 12.5% { box-shadow: 0 -18px 0 -5px rgba(152, 128, 255, 0), 12.72984px -12.72984px 0 0 #9880ff, 18px 0 0 0 #9880ff, 12.72984px 12.72984px 0 0 #9880ff, 0 18px 0 -5px rgba(152, 128, 255, 0), -12.72984px 12.72984px 0 -5px rgba(152, 128, 255, 0), -18px 0 0 -5px rgba(152, 128, 255, 0), -12.72984px -12.72984px 0 -5px rgba(152, 128, 255, 0); } 25% { box-shadow: 0 -18px 0 -5px rgba(152, 128, 255, 0), 12.72984px -12.72984px 0 -5px rgba(152, 128, 255, 0), 18px 0 0 0 #9880ff, 12.72984px 12.72984px 0 0 #9880ff, 0 18px 0 0 #9880ff, -12.72984px 12.72984px 0 -5px rgba(152, 128, 255, 0), -18px 0 0 -5px rgba(152, 128, 255, 0), -12.72984px -12.72984px 0 -5px rgba(152, 128, 255, 0); } 37.5% { box-shadow: 0 -18px 0 -5px rgba(152, 128, 255, 0), 12.72984px -12.72984px 0 -5px rgba(152, 128, 255, 0), 18px 0 0 -5px rgba(152, 128, 255, 0), 12.72984px 12.72984px 0 0 #9880ff, 0 18px 0 0 #9880ff, -12.72984px 12.72984px 0 0 #9880ff, -18px 0 0 -5px rgba(152, 128, 255, 0), -12.72984px -12.72984px 0 -5px rgba(152, 128, 255, 0); } 50% { box-shadow: 0 -18px 0 -5px rgba(152, 128, 255, 0), 12.72984px -12.72984px 0 -5px rgba(152, 128, 255, 0), 18px 0 0 -5px rgba(152, 128, 255, 0), 12.72984px 12.72984px 0 -5px rgba(152, 128, 255, 0), 0 18px 0 0 #9880ff, -12.72984px 12.72984px 0 0 #9880ff, -18px 0 0 0 #9880ff, -12.72984px -12.72984px 0 -5px rgba(152, 128, 255, 0); } 62.5% { box-shadow: 0 -18px 0 -5px rgba(152, 128, 255, 0), 12.72984px -12.72984px 0 -5px rgba(152, 128, 255, 0), 18px 0 0 -5px rgba(152, 128, 255, 0), 12.72984px 12.72984px 0 -5px rgba(152, 128, 255, 0), 0 18px 0 -5px rgba(152, 128, 255, 0), -12.72984px 12.72984px 0 0 #9880ff, -18px 0 0 0 #9880ff, -12.72984px -12.72984px 0 0 #9880ff; } 75% { box-shadow: 0 -18px 0 0 #9880ff, 12.72984px -12.72984px 0 -5px rgba(152, 128, 255, 0), 18px 0 0 -5px rgba(152, 128, 255, 0), 12.72984px 12.72984px 0 -5px rgba(152, 128, 255, 0), 0 18px 0 -5px rgba(152, 128, 255, 0), -12.72984px 12.72984px 0 -5px rgba(152, 128, 255, 0), -18px 0 0 0 #9880ff, -12.72984px -12.72984px 0 0 #9880ff; } 87.5% { box-shadow: 0 -18px 0 0 #9880ff, 12.72984px -12.72984px 0 0 #9880ff, 18px 0 0 -5px rgba(152, 128, 255, 0), 12.72984px 12.72984px 0 -5px rgba(152, 128, 255, 0), 0 18px 0 -5px rgba(152, 128, 255, 0), -12.72984px 12.72984px 0 -5px rgba(152, 128, 255, 0), -18px 0 0 -5px rgba(152, 128, 255, 0), -12.72984px -12.72984px 0 0 #9880ff; } } /** * ============================================== * Dot Falling * ============================================== */ .dot-falling { position: relative; left: -9999px; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; box-shadow: 9999px 0 0 0 #9880ff; animation: dotFalling 1s infinite linear; animation-delay: .1s; } .dot-falling::before, .dot-falling::after { content: ''; display: inline-block; position: absolute; top: 0; } .dot-falling::before { width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotFallingBefore 1s infinite linear; animation-delay: 0s; } .dot-falling::after { width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotFallingAfter 1s infinite linear; animation-delay: .2s; } @keyframes dotFalling { 0% { box-shadow: 9999px -15px 0 0 rgba(152, 128, 255, 0); } 25%, 50%, 75% { box-shadow: 9999px 0 0 0 #9880ff; } 100% { box-shadow: 9999px 15px 0 0 rgba(152, 128, 255, 0); } } @keyframes dotFallingBefore { 0% { box-shadow: 9984px -15px 0 0 rgba(152, 128, 255, 0); } 25%, 50%, 75% { box-shadow: 9984px 0 0 0 #9880ff; } 100% { box-shadow: 9984px 15px 0 0 rgba(152, 128, 255, 0); } } @keyframes dotFallingAfter { 0% { box-shadow: 10014px -15px 0 0 rgba(152, 128, 255, 0); } 25%, 50%, 75% { box-shadow: 10014px 0 0 0 #9880ff; } 100% { box-shadow: 10014px 15px 0 0 rgba(152, 128, 255, 0); } } /** * ============================================== * Dot Stretching * ============================================== */ .dot-stretching { position: relative; width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; transform: scale(1.25, 1.25); animation: dotStretching 2s infinite ease-in; } .dot-stretching::before, .dot-stretching::after { content: ''; display: inline-block; position: absolute; top: 0; } .dot-stretching::before { width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotStretchingBefore 2s infinite ease-in; } .dot-stretching::after { width: 10px; height: 10px; border-radius: 5px; background-color: #9880ff; color: #9880ff; animation: dotStretchingAfter 2s infinite ease-in; } @keyframes dotStretching { 0% { transform: scale(1.25, 1.25); } 50%, 60% { transform: scale(0.8, 0.8); } 100% { transform: scale(1.25, 1.25); } } @keyframes dotStretchingBefore { 0% { transform: translate(0) scale(0.7, 0.7); } 50%, 60% { transform: translate(-20px) scale(1, 1); } 100% { transform: translate(0) scale(0.7, 0.7); } } @keyframes dotStretchingAfter { 0% { transform: translate(0) scale(0.7, 0.7); } 50%, 60% { transform: translate(20px) scale(1, 1); } 100% { transform: translate(0) scale(0.7, 0.7); } } /** * ============================================== * Experiment-Gooey Effect * Dot Gathering * ============================================== */ .dot-gathering { position: relative; width: 12px; height: 12px; border-radius: 6px; background-color: black; color: transparent; margin: -1px 0; filter: blur(2px); } .dot-gathering::before, .dot-gathering::after { content: ''; display: inline-block; position: absolute; top: 0; left: -50px; width: 12px; height: 12px; border-radius: 6px; background-color: black; color: transparent; opacity: 0; filter: blur(2px); animation: dotGathering 2s infinite ease-in; } .dot-gathering::after { animation-delay: .5s; } @keyframes dotGathering { 0% { opacity: 0; transform: translateX(0); } 35%, 60% { opacity: 1; transform: translateX(50px); } 100% { opacity: 0; transform: translateX(100px); } } /** * ============================================== * Experiment-Gooey Effect * Dot Hourglass * ============================================== */ .dot-hourglass { position: relative; top: -15px; width: 12px; height: 12px; border-radius: 6px; background-color: black; color: transparent; margin: -1px 0; filter: blur(2px); transform-origin: 5px 20px; animation: dotHourglass 2.4s infinite ease-in-out; animation-delay: .6s; } .dot-hourglass::before, .dot-hourglass::after { content: ''; display: inline-block; position: absolute; top: 0; left: 0; width: 12px; height: 12px; border-radius: 6px; background-color: black; color: transparent; filter: blur(2px); } .dot-hourglass::before { top: 30px; } .dot-hourglass::after { animation: dotHourglassAfter 2.4s infinite cubic-bezier(0.65, 0.05, 0.36, 1); } @keyframes dotHourglass { 0% { transform: rotateZ(0deg); } 25% { transform: rotateZ(180deg); } 50% { transform: rotateZ(180deg); } 75% { transform: rotateZ(360deg); } 100% { transform: rotateZ(360deg); } } @keyframes dotHourglassAfter { 0% { transform: translateY(0); } 25% { transform: translateY(30px); } 50% { transform: translateY(30px); } 75% { transform: translateY(0); } 100% { transform: translateY(0); } } /** * ============================================== * Experiment-Gooey Effect * Dot Overtaking * ============================================== */ .dot-overtaking { position: relative; width: 12px; height: 12px; border-radius: 6px; background-color: transparent; color: black; margin: -1px 0; box-shadow: 0 -20px 0 0; filter: blur(2px); animation: dotOvertaking 2s infinite cubic-bezier(0.2, 0.6, 0.8, 0.2); } .dot-overtaking::before, .dot-overtaking::after { content: ''; display: inline-block; position: absolute; top: 0; left: 0; width: 12px; height: 12px; border-radius: 6px; background-color: transparent; color: black; box-shadow: 0 -20px 0 0; filter: blur(2px); } .dot-overtaking::before { animation: dotOvertaking 2s infinite cubic-bezier(0.2, 0.6, 0.8, 0.2); animation-delay: .3s; } .dot-overtaking::after { animation: dotOvertaking 1.5s infinite cubic-bezier(0.2, 0.6, 0.8, 0.2); animation-delay: .6s; } @keyframes dotOvertaking { 0% { transform: rotateZ(0deg); } 100% { transform: rotateZ(360deg); } } /** * ============================================== * Experiment-Gooey Effect * Dot Shuttle * ============================================== */ .dot-shuttle { position: relative; left: -15px; width: 12px; height: 12px; border-radius: 6px; background-color: black; color: transparent; margin: -1px 0; filter: blur(2px); } .dot-shuttle::before, .dot-shuttle::after { content: ''; display: inline-block; position: absolute; top: 0; width: 12px; height: 12px; border-radius: 6px; background-color: black; color: transparent; filter: blur(2px); } .dot-shuttle::before { left: 15px; animation: dotShuttle 2s infinite ease-out; } .dot-shuttle::after { left: 30px; } @keyframes dotShuttle { 0%, 50%, 100% { transform: translateX(0); } 25% { transform: translateX(-45px); } 75% { transform: translateX(45px); } } /** * ============================================== * Experiment-Emoji * Dot Bouncing * ============================================== */ .dot-bouncing { position: relative; height: 10px; font-size: 10px; } .dot-bouncing::before { content: '?????'; display: inline-block; position: relative; animation: dotBouncing 1s infinite; } @keyframes dotBouncing { 0% { top: -20px; animation-timing-function: ease-in; } 34% { transform: scale(1, 1); } 35% { top: 20px; animation-timing-function: ease-out; transform: scale(1.5, 0.5); } 45% { transform: scale(1, 1); } 90% { top: -20px; } 100% { top: -20px; } } /** * ============================================== * Experiment-Emoji * Dot Rolling * ============================================== */ .dot-rolling { position: relative; height: 10px; font-size: 10px; } .dot-rolling::before { content: '⚽'; display: inline-block; position: relative; transform: translateX(-25px); animation: dotRolling 3s infinite; } @keyframes dotRolling { 0% { content: '⚽'; transform: translateX(-25px) rotateZ(0deg); } 16.667% { content: '⚽'; transform: translateX(25px) rotateZ(720deg); } 33.333% { content: '⚽; transform: translateX(-25px) rotateZ(0deg); } 34.333% { content: '🏀'; transform: translateX(-25px) rotateZ(0deg); } 50% { content: '🏀'; transform: translateX(25px) rotateZ(720deg); } 66.667% { content: '🏀'; transform: translateX(-25px) rotateZ(0deg); } 67.667% { content: '🏐'; transform: translateX(-25px) rotateZ(0deg); } 83.333% { content: '🏐'; transform: translateX(25px) rotateZ(720deg); } 100% { content: '🏐'; transform: translateX(-25px) rotateZ(0deg); } }
JavaScript
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>三个点组成的CSS加载动画-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号