今回はJSを使用せずにCSSのみで画像を永遠ループさせる方法をご紹介します。
私が今回永遠ループさせたかったのは前回のブログで紹介したグリッドデザインをJSで実装した画像です。
ソースは前回のブログを見てもらえるとわかると思います。
今回は下記ソースのul liの中にある画像をループさせたいのではなく
ulごとがっつりループさせたいというもの。
<div id="slide_wrap">
<ul>
<li class="element01">
<a href="#">
<img src="images/index/01.jpg" alt="">
</a>
</li>
<li class="element02">
<a href="#">
<img src="images/index/02.jpg" alt="">
</a>
</li>
<li class="element03">
<a href="#">
<img src="images/index/03.jpg" alt="">
</a>
</li>
</ul>
</div>
え?それだったら次にくる画像なくない?っていうことなので
空白の間を空けないためにulのブロックももう1回分ソースに記述しておきます。
<div id="slide_wrap">
<ul>
<li class="element01">
<a href="#">
<img src="images/index/01.jpg" alt="">
</a>
</li>
<li class="element02">
<a href="#">
<img src="images/index/02.jpg" alt="">
</a>
</li>
<li class="element03">
<a href="#">
<img src="images/index/03.jpg" alt="">
</a>
</li>
</ul>
//ここまで1つめのul
<ul>
<li class="element01">
<a href="#">
<img src="images/index/01.jpg" alt="">
</a>
</li>
<li class="element02">
<a href="#">
<img src="images/index/02.jpg" alt="">
</a>
</li>
<li class="element03">
<a href="#">
<img src="images/index/03.jpg" alt="">
</a>
</li>
</ul>
//ここまで2つめ
</div>
ulの中身は1つめも2つめもまったく同じです。
ちなみに変えても問題なく動きます。
CSSなので。
肝心のアニメーションですが、以下になります。
#slide_wrap {
ul {
display: flex;
&:first-child {
animation: loop 50s linear infinite;
flex: 1;
}
&:last-child {
animation: loop2 50s linear infinite;
flex: 1;
}
}
}
@keyframes loop {
from {
transform: translateX(-100%);
}
to {
transform: translateX(-200%);
}
}
@keyframes loop2 {
from {
transform: translateX(0%);
}
to {
transform: translateX(-100%);
}
}
これでばっちり!
グリッドデザインで組んだブロックが永遠ループで横に動きます。
みなさんもぜひ試してみてくださいね~!