(Sample)
今回は「パララックス」と「慣性ローディング(=遅延読み込み)」という、ちょっとカッコいいWebの視覚演出について、HTMLとJavaScriptを使ったコード例をもとに、新人エンジニアでもゼロから理解できるように解説していきます!
このコードで何ができるの?
このWebページには、次の2つの演出が含まれています。
- パララックス効果:スクロールしても背景がゆっくり動いて、立体的な印象に。
- 遅延読み込み(慣性ローディング):スクロールで画面に入った要素だけ画像や内容を表示して、動きも軽快に!
こんな動き、見たことありませんか?Instagramや企業サイトなどでよく使われています。
パララックス効果ってなに?
パララックス(Parallax)とは、「視差効果」とも呼ばれる視覚表現で、前後の要素がスクロールで異なる速度で動くことで立体感が生まれる技法です。
実装のカギ:CSSの background-attachment: fixed;
.parallax {
background-image: url(...);
background-attachment: fixed;
}
background-attachment: fixed;
によって、背景画像がスクロールしても固定され、他のコンテンツがその上を動いて見えるようになります。
例えるなら、背景が「遠くの風景」で、手前のテキストが「電車の窓を流れる景色」のように動く感じですね!
遅延読み込み(Lazy Loading)ってなに?
遅延読み込みとは、必要になったときにだけ読み込む仕組みのことです。
Webでは、ページをすべて一気に読み込むと重くなるので、「今見えているところだけロードして、残りはスクロールされたときに読み込もう!」というのがこの考え方です。
JavaScriptによる遅延読み込みの仕組み
ここでは、Intersection Observer API(交差監視API)を使っています。
Intersection Observerって?
このAPIは、ある要素が画面に表示された(=交差した)タイミングを検知して、何か処理を実行できる便利な仕組みです。
コードの流れをざっくり図解!
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
// 表示されたら画像を読み込む
...
}
});
}, { threshold: 0.1 });
isIntersecting
がtrue
になる=画面に入ったという意味threshold: 0.1
→ 10%表示されたら「見えた」と判定.dataset.bg
を使って、後から画像を差し替えてるのもポイント!
例えると「監視カメラで画面内に誰か入ってきたらアラート出す」ような感じです。
見た目の工夫:CSSクラスの切り替え
.lazy-load {
opacity: 0;
transition: opacity 0.5s ease-in;
}
.lazy-load.visible {
opacity: 1;
}
- 初期状態は透明(
opacity: 0
) .visible
クラスがついたら0.5秒かけて表示(ふわっと登場)
これはまるで「フェードイン」するような見た目の演出になります。
まとめ:どんなときに使えるの?
演出 | 用途の例 | 効果 |
---|---|---|
パララックス | ブランドサイト、ランディングページ | リッチで印象的な雰囲気を演出 |
遅延読み込み | ブログ、画像が多いギャラリー、商品一覧ページ | 表示が軽くなり、読み込みが速くなる |
今後の学習の指針
このデモを活かして、次はこんなことにも挑戦してみましょう!
- JavaScriptだけでなく、ライブラリを使ってみる
- 例:AOS.js(Animate On Scroll)や
Lazysizes.js
でより簡単に!
- 例:AOS.js(Animate On Scroll)や
- 表示されるタイミングでアニメーションを追加
- 要素が現れたときに「ふわっ」や「スライドイン」などの演出をつけてみよう。
- レスポンシブ対応の工夫を覚える
- スマホでも美しく表示されるように、CSSの
@media
やvh
などを活用!
- スマホでも美しく表示されるように、CSSの
難しいように見える演出も、仕組みを理解すれば意外とシンプルです。