jQueryを使ったカルーセルスライダーではなく、ゆっくり右から左に画像が流れていくスライダーを作る場合、今まで「Slick」とかのライブラリ系のjQueryを使ってたんですけど、CSSのアニメーションだけでそれっぽいのがつくれたので、備忘録としてまとめておきます。
スライダーのイメージを効果音で言うなら通常のカルーセルが「サッサッサッ」と変わるなら、今回のは「サーーーッ」と流れていくイメージです。
余計にわかりにくくなったという方は下記のデモを見てください。
「repeat-xでリピートされている背景画像が右から左にひたすら流れていく」という構造になります。
今回はこんな感じの画像を用意しました。
ポイントとしては、繰り返しで表示させても違和感ないような画像にしましょう。

使用画像:ぱくたそ
画像は背景画像を使うので、CSSで読み込みます。
今回は「画像を流す」「上にテキストを入れる」「テキストが目立つように画像にオーバーレイ(うっすら色)をつける」って事をするって事で、HTMLはこんな感じで
【HTML】
<div class="jp_slide_img_wrapper">
<div class="jp_slide_img_overlay">
<div class="main_catch">
<div class="logo">
<img src="img/logo.png" alt="logo">
</div>
<h1>メインキャッチを入れたりして</h1>
</div>
</div>
</div>
<!-- /.jp_slide_img_wrapper -->
CSS
.jp_slide_img_wrapper {
position: relative;
width: 100%;
height: 100vh;
background-image: url('../img/main-bg.jpg');
background-repeat: repeat-x;
background-size: cover;
background-position: 0 0;
animation-name: slide_img;
animation-duration: 200s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes slide_img {
100% {
background-position: -10000px 0;
}
}
.jp_slide_img_overlay{
position: absolute;
top: 0%;
right: 0%;
left: 0%;
bottom: 0%;
width: 100%;
height: 100%;
background-color: rgba(46, 36, 100, 0.4);
}
.main_catch {
position: absolute;
top: 50%;
left: 50%;
width: 100%;
text-align: center;
transform: translateY(-50%) translateX(-50%);
-webkit- transform: translateY(-50%) translateX(-50%);
}
.main_catch .logo {
max-width: 250px;
margin: 0 auto 15px;
}
.main_catch .logo img {
max-width: 100%;
height: auto;
}
CSSのポイントは「jp_slide_img_wrapper 」にあてている
・高さを取得するために「height: 100vh;」
・背景画像をリピートするための「background-repeat: repeat-x;」
・アニメーションの始点と終点のための「background-position: 0 0;」
・「 animation-iteration-count: infinite;」で無限にアニメーションを繰り返す。
そして、Keyframeでは「background-position: -10000px 0;」としています。
これで、backgroundの位置が0〜−10000pxと横に動くアニメーションが出来上がります。
画像の長さとかで判断して「animation-duration」をいじってスピード感を調整してください。
今の設定は「200s(200秒)で10000px動く」ってなっています。
もう一回デモ置いておきます。
弱点としては、画像が1つ1つと分かれていないので、個別にリンクを張ったりする事ができない事です。
使用用途としては、今回のデモみたいなメインビジュアルにサクッとアニメーションを追加したいって感じの時ですかね?今回は以上です。