← Hubに戻る
ローディング素材
スピナー
<div class="spinner"></div>
.spinner {
width: 48px; height: 48px;
border: 5px solid #eee;
border-top: 5px solid #4f8cff;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
100% { transform: rotate(360deg); }
}
バー型ローダー
<div class="bar-loader"><div class="bar"></div></div>
.bar-loader {
width: 80px; height: 12px;
background: #eee;
border-radius: 8px;
overflow: hidden;
position: relative;
}
.bar-loader .bar {
width: 0; height: 100%;
background: linear-gradient(90deg, #4f8cff, #ff6ec4);
animation: barload 1.2s infinite alternate;
}
@keyframes barload {
0% { width: 0; }
100% { width: 100%; }
}
ドット3つローダー
<div class="dot-loader">
<span></span><span></span><span></span>
</div>
.dot-loader {
display: flex;
gap: 8px;
}
.dot-loader span {
width: 14px; height: 14px;
background: #4f8cff;
border-radius: 50%;
display: block;
animation: dot-bounce 0.8s infinite alternate;
}
.dot-loader span:nth-child(2) { animation-delay: 0.2s; }
.dot-loader span:nth-child(3) { animation-delay: 0.4s; }
@keyframes dot-bounce {
to { transform: translateY(-12px); opacity: 0.5; }
}
波紋ローダー
<div class="ripple-loader"><span></span></div>
.ripple-loader {
position: relative;
width: 48px; height: 48px;
}
.ripple-loader span {
position: absolute;
left: 0; top: 0;
width: 100%; height: 100%;
border: 4px solid #4f8cff;
border-radius: 50%;
animation: ripple-ani 1.2s infinite;
opacity: 0.7;
}
@keyframes ripple-ani {
0% { transform: scale(0.2); opacity: 0.7; }
100% { transform: scale(1.2); opacity: 0; }
}
グラデーション円ローダー
<div class="grad-spinner"></div>
.grad-spinner {
width: 48px; height: 48px;
border: 5px solid #eee;
border-top: 5px solid #ff6ec4;
border-right: 5px solid #4f8cff;
border-radius: 50%;
animation: spin 1s linear infinite;
}
カラフルバー
<div class="color-bar-loader"><div class="bar"></div></div>
.color-bar-loader {
width: 100px; height: 14px;
background: #eee;
border-radius: 8px;
overflow: hidden;
position: relative;
}
.color-bar-loader .bar {
width: 0; height: 100%;
background: linear-gradient(90deg, #ff6ec4, #4f8cff, #6effc4, #ffe66e);
animation: colorbarload 1.4s infinite alternate;
}
@keyframes colorbarload {
0% { width: 0; }
100% { width: 100%; }
}
ドーナツローダー
<div class="donut-loader"></div>
.donut-loader {
width: 48px; height: 48px;
border: 5px solid #eee;
border-top: 5px solid #4f8cff;
border-bottom: 5px solid #ff6ec4;
border-radius: 50%;
animation: spin 1s linear infinite;
}
スケルトンローダー
<div class="skeleton-loader"></div>
.skeleton-loader {
width: 120px; height: 18px;
border-radius: 8px;
background: linear-gradient(90deg, #eee 25%, #f0f4ff 50%, #eee 75%);
background-size: 200% 100%;
animation: skeleton 1.2s infinite linear;
}
@keyframes skeleton {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
バウンスローダー
<div class="bounce-loader"><span></span><span></span><span></span></div>
.bounce-loader {
display: flex;
gap: 8px;
align-items: flex-end;
}
.bounce-loader span {
width: 12px; height: 12px;
background: #4f8cff;
border-radius: 50%;
display: block;
animation: bounce 0.6s infinite alternate;
}
.bounce-loader span:nth-child(2) { animation-delay: 0.2s; }
.bounce-loader span:nth-child(3) { animation-delay: 0.4s; }
@keyframes bounce {
to { transform: translateY(-18px); opacity: 0.7; }
}
リングローダー
<div class="ring-loader"></div>
.ring-loader {
width: 48px; height: 48px;
border: 4px solid #4f8cff44;
border-top: 4px solid #4f8cff;
border-radius: 50%;
animation: spin 1s linear infinite;
}
フラッシュローダー
<div class="flash-loader"></div>
.flash-loader {
width: 48px; height: 12px;
background: linear-gradient(90deg, #4f8cff 0%, #fff 50%, #4f8cff 100%);
border-radius: 8px;
animation: flash 1s linear infinite;
}
@keyframes flash {
0% { background-position: 0 0; }
100% { background-position: 100% 0; }
}
ハートローダー
<div class="heart-loader"></div>
.heart-loader {
width: 32px; height: 32px;
position: relative;
display: inline-block;
animation: heart-beat 0.8s infinite;
}
.heart-loader::before,
.heart-loader::after {
content: '';
position: absolute;
top: 8px;
width: 16px; height: 24px;
background: #ff6ec4;
border-radius: 16px 16px 0 0;
}
.heart-loader::before {
left: 8px;
transform: rotate(-45deg);
}
.heart-loader::after {
left: 0;
transform: rotate(45deg);
}
@keyframes heart-beat {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.2); }
}