今回はslick.jsを使用して無限ループを作成してみました。
早速デモから。
See the Pen
by sayuri (@giraffeweb)
on CodePen.0
head内に以下のJSを読み込むのを忘れずに!
<!--JS--> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript" src="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script> <!--css--> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css"/>
ソースはいたって簡単です。
<div id="key"> <ul id="list"> <li class="no01">No.01</li> <li class="no02">No.02</li> <li class="no03">No.03</li> <li class="no04">No.04</li> <li class="no05">No.05</li> <li class="no06">No.06</li> <li class="no07">No.07</li> <li class="no08">No.08</li> </ul> </div>
*,*:before,*:after {
list-style: none;
margin: 0;
padding: 0;
-webkit-box-sizing:border-box;
box-sizing:border-box
}
#key {
position: relative;
width: 100%;
ul {
li {
display: block;
text-align: center;
width: 200px;
height: 100vh;
margin: 10px;
line-height: 100vh;
&.no01 { background-color: #E6FFE9;}
&.no02 { background-color: #CEF9DC;}
&.no03 { background-color: #F3FFD8;}
&.no04 { background-color: #D7EEFF;}
&.no05 { background-color: #BAD3FF;}
&.no06 { background-color: #DCC2FF;}
&.no07 { background-color: #FFBEDA;}
&.no08 { background-color: #FFC7AF;}
}
}
}
window.addEventListener("load", function() {
$('#key ul').slick({
autoplay: true,
autoplaySpeed: 0,
speed: 8000,
cssEase: 'linear',
arrows:false,
swipe: false,
pauseOnFocus: false,
pauseOnHover: false,
centerMode: true,
initialSlide: 4,
variableWidth: true,
});
});
上記実装いただければデモのまんまになります。
個人的には最初に少しアニメーションが欲しかったので以下のようにカスタマイズしました。
変更するのはCSSだけです。
*,*:before,*:after {
list-style: none;
margin: 0;
padding: 0;
-webkit-box-sizing:border-box;
box-sizing:border-box
}
#key {
position: relative;
width: 100%;
ul {
li {
display: block;
text-align: center;
width: 200px;
height: 100vh;
margin: 10px;
line-height: 100vh;
position: relative;
z-index: 10;
&:before {
animation: img-wrap 2s cubic-bezier(.4, 0, .2, 1) forwards;
background: #fff;
bottom: 0;
content: '';
left: 0;
pointer-events: none;
position: absolute;
right: 0;
top: 0;
z-index: 1;
}
&.no01 { background-color: #E6FFE9;}
&.no02 { background-color: #CEF9DC;}
&.no03 { background-color: #F3FFD8;}
&.no04 { background-color: #D7EEFF;}
&.no05 { background-color: #BAD3FF;}
&.no06 { background-color: #DCC2FF;}
&.no07 { background-color: #FFBEDA;}
&.no08 { background-color: #FFC7AF;}
}
}
}
@keyframes img-wrap {
100% {
transform: translateX(100%);
}
}
このような形でCSSアニメーションを追加しました。
デモは以下の通りです。
読み込みなおしていただけると最初だけアニメーションがつきます。
See the Pen
by sayuri (@giraffeweb)
on CodePen.0