初心者でも実装しやすい文字の無限ループアニメーション。
セクションの区切りに使ったり、薄い大き目の文字で背景に流すのもおススメ。
HTML
<div class="ugkTxtSlider">
<div class="ugkTxtSlider__inner">
<!--要素の横いっぱいになるまで複製しておく-->
<p class="ugkTxtSlider__text">DREAM COME TRUE</p>
<p class="ugkTxtSlider__text">DREAM COME TRUE</p>
<p class="ugkTxtSlider__text">DREAM COME TRUE</p>
</div>
</div>
CSS
.ugkTxtSlider {
width: 100%;
/* コンテナのサイズ指定 */
overflow: hidden;
}
.ugkTxtSlider__inner {
display: flex;
column-gap: 2em;
/* テキスト同士の隙間 */
width: fit-content;
/* 中身に合わせて幅を自動調整 */
}
.ugkTxtSlider__inner.animating {
animation: imgSlider 30s linear infinite;
/* 早さはここで調整 */
}
@keyframes imgSlider {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
.ugkTxtSlider__text {
font-size: 50px;
font-weight: bold;
white-space: nowrap;
color: #fff;
text-shadow: 3px 3px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
}
JS
document.addEventListener('DOMContentLoaded',() =>{
const sliderContainer = document.querySelector('.ugkTxtSlider');
const sliderLists = sliderContainer.querySelector('.ugkTxtSlider__inner');
// 元のli要素たちを取得
const sliderItems = sliderLists.innerHTML;
// リストの中身を複製して後ろに追加する
sliderLists.insertAdjacentHTML('beforeend',sliderItems);
// 複製が終わってからアニメーションクラスを付与
sliderLists.classList.add('animating');
});
実際の動き
DREAM COME TRUE
DREAM COME TRUE
DREAM COME TRUE

コメント