仕事で使えるカルーセルの作り方 #CSSだけで動くカルーセル編

2023年9月21日

CSS

eyecatch ホームページを作る時に、何かとカルーセルと言われます。 みんな横スライド処理が大好きなんですね。 いや、別にカルーセル処理が憎くも悪くもないのですよ。 webサイトにとって、非常に効果のある機能だと思ってます。 ただ、色々なライブラリを使ったり、めんどくさい運用などをやるのが嫌なだけで、もっと簡単にカルーセルが作れたら便利じゃないですか? というわけで、自分がよく構築する方法をコピペできるコードで紹介したいと思います。

サンプル

適当な画像を3つサンプルとして使います。 サイズも色味も違うことで、汎用的に作れるようにしますね。

sample.html

<div class='carousel'> <div class='items'> <img src='img/img-1.jpg'> <img src='img/img-2.jpg'> <img src='img/img-3.jpg'> </div> </div>

carousel.css

.carousel{ width:300px; height:200px; position:relative; } .carousel .items{ width:100%; height:100%; display:flex; gap:20px; overflow-x:scroll; position:relative; border:4px solid black; border-radius:8px; } .carousel .items > *{ width:300px; height:100%; flex:1; } .carousel .items img{ width:100%; min-width:100%; height:100%; object-fit:cover; } /* scroll-bar hidden */ .carousel .items{ -ms-overflow-style: none; scrollbar-width: none; } .carousel .items::-webkit-scrollbar{ display:none; } /* Carousel */ .carousel .items{ scroll-snap-type: x mandatory; } .carousel .items > *{ scroll-snap-align: center; }

デモ

使い方とポイント

比較的簡易なHTML構造でカルーセルできていしまいます。 今後ページネーション(ページャー)機能などをつけることを考えると、画像などのスライドアイテムが入る器をさらに上に1階層多くしておきました。 今回のcssをコピペで使う場合は、次の構造にすると、大体どんな画像でも対応できると思います。
.carousel └ .items │ image-1 │ image-2 └ image-3
画像の枚数はいくつでもできるし、画像ではなく、divタグなどにして、その中に個別に装飾をすることも可能です。 (その場合は、個別にcssなどで独自にコーディングする必要があります) 今回のカルーセルのポイントは、cssの中に書いてある、次のコードです。 .carousel .items{ scroll-snap-type: x mandatory; } リファレンスサイト : MDN: scroll-snap-type この機能を使うと、DOM構造の中にフィットするように配置して、アニメーション処理も自動で行ってくれる便利機能なんですよね。 カルーセルのようなパーツじゃなく、画面全体に対して使うことで、ページ切り替えを効果的にするようなホームページを作ることも可能ですね。 あと、スクロールバーを非表示にする処理も重要なポイントなので、自身でコーディングする際は忘れないようにしましょう。 (次のコードの部分です) /* scroll-bar hidden */ .carousel .items{ -ms-overflow-style: none; scrollbar-width: none; } .carousel .items::-webkit-scrollbar{ display:none; }

あとがき

実際に、これだけの機能だけだと、足りないと感じる人は、次のような機能が欲しいと思っているでしょう。
・ページネーション機能 ・前後の送りボタン ・自動的にスライドを見せることができるオートスクロール機能 ・最後まで行ったら、自動的に最初の画像が次に繰り返される、無限スライド機能
上記の機能は、Javascriptを使わなくてはいけなくて、今回のcssだけの趣旨とは違ってくるので、また別の機会にブログで紹介したいと思います。 そういえば、以前に全然別の方法で、Githubにもカルーセル機能をアップしていたことを思い出しました。 合わせてこちらも見てみてください。 https://github.com/yugeta/carousel

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ