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つと分かれていないので、個別にリンクを張ったりする事ができない事です。
使用用途としては、今回のデモみたいなメインビジュアルにサクッとアニメーションを追加したいって感じの時ですかね?今回は以上です。