CSSのみで画像を永遠ループする

今回は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%);
  }
}

これでばっちり!
グリッドデザインで組んだブロックが永遠ループで横に動きます。
みなさんもぜひ試してみてくださいね~!