トップページを開いた瞬間、ふわっと画像が切り替わる。
そんなサイトっぽい雰囲気に少し憧れたことはありませんか?
でも実際に調べ始めると、
- プラグインが重いかも
- JavaScriptが難しそう
- 結局どれが正解かわからない
…途中で止まってしまうこともあります。
この記事では、HTMLとCSSだけで軽量に実装できるCSSフェードスライダーをまとめました。

実際にはもっと凝ったJavaScript製のスライダーもあります。ただ、トップページで数枚の画像を切り替えるだけならこの方法が一番扱いやすく、今も自分のサイトで使っています。
「まずはそのまま使いたい」という方向けに、コピペで導入できる完成テンプレも用意しています。
Contents
CSSフェードスライダーとは?【HTML・CSSだけで実装】
CSSで作るフェードスライダーとは、複数の画像を重ねて、透明度(opacity)とアニメーションで順番に切り替えるシンプルなスライドショーです。
動きのイメージ(DEMO)
まず、実際の動きを確認してみてください。
例:3枚の画像が3秒ごとに順番に切り替わる
複数の画像が自動でフェードしながら切り替わります。
特徴
- JS不要で軽量
→ スクリプトを使わないため表示が速く、サイトが重くなりにくい - 簡単に導入できる
→ HTMLとCSSを追加するだけ - テーマを問わず使える
→ Cocoonをはじめ、どのWordPressテーマでも導入可能 - 自由にカスタマイズできる
→ 画像枚数・表示時間・高さなどを調整できる
こんな場面に最適
- トップページのメインビジュアル
- ランディングページや商品紹介ページ
CSSフェードスライダーの作り方
HTML構造
スライダーは、コンテナ + 画像要素の構造で作ります。
<div class="slider-container">
<div class="slideimg"></div>
<div class="slideimg"></div>
<div class="slideimg"></div>
<!-- 画像枚数に応じて増やせます -->
</div>
.slider-container… スライダー全体の枠.slideimg… 背景画像を設定する個別スライド
- HTMLは、WordPressの投稿・固定ページの「カスタムHTML」ブロックに貼り付けて使用します。基本的に「表示したい場所」にそのまま貼り付ければOKです。
- 装飾目的のスライダーのため、画像は
imgタグではなくCSSのbackground-imageを使用します。
CSSで画像を設定する方法
URLの” “内に個別の画像パスを設定します。(””は消さないように注意)
.slideimg:nth-of-type(1) {
background-image: url("image1.jpg");
}
.slideimg:nth-of-type(2) {
background-image: url("image2.jpg");
}
.slideimg:nth-of-type(3) {
background-image: url("image3.jpg");
}
- 管理画面で「外観」→「テーマファイルエディター」を開く
- 子テーマ(Cocoon Child)が選択されているか確認
- ファイル一覧から「スタイルシート (style.css)」を開く
- 既存のコードは消さず、/* 子テーマ用のスタイルを書く */ の下の行に追加

※他のWordPressテーマでも基本的に「外観 → style.css」から設定できます。
ここまでで、CSSフェードスライダーの基本的な仕組みは作れます。
ただ実際にトップページへ導入するとなると、
- チラつかない調整
- 自然なフェード時間
- スマホ表示の最適化
- ヒーローとして見栄えする動き
このあたりで細かい調整がかなり増えてきます。
実際に試しながら調整したものをテンプレ化しています。
このテンプレでできること
- 3枚版フェードスライダー
- 4枚版フェードスライダー
- 5枚版フェードスライダー
- 背景ズーム演出
- 中央テキスト固定
- スマホ対応
- デモ付き
- チラつき対策済み

販売者情報は 「特定商取引法に基づく表記」をご確認ください。


Comment 記事の感想を書き込んでいただけると幸いです
はっちゃん様
お世話になっております。素晴らしいカスタマイズに惹かれ購入させていただきました。
カテゴリごとに記事を分けて表示させる設定が、何回もトライしても実現することが出来なくてこまっておりました。
修正のやりかたについてご教示賜りたくよろしくお願いいたします。
> Kさん
ありがとうございます。
タブ切り替え部分にpタグが自動挿入されCSSがうまく反映されていないようです。
メールで添付画像と対応方法を添付しますので、ご確認いただければと思います。