[CSSチュートリアル】パララックススクロールの効果を完成させるCSS
2021-12-30 05:11:59
I. 何であるか
パララックススクロールは、異なる速度で動く多層構造の背景で、素晴らしい視覚体験を提供する立体的なモーションエフェクトを作成します。
ページを背景レイヤー、コンテンツレイヤー、ホバーレイヤーに分解することができます。
マウスホイールをスクロールさせると、各レイヤーが異なる速度で移動し、視覚的な違いによる効果が得られます
II. 実装
cssフォームを使用した視覚的な差分スクロール効果の実装方法は以下の通りです。
- バックグラウンドアタッチメント
- トランスフォーム:トランスレート3D
背景アタッチメント
背景画像を固定するか、ページの他の部分と一緒にスクロールさせるかを設定する効果です
値はそれぞれ以下の通りです。
- scroll: デフォルト値、背景画像はページの残りの部分のスクロールに合わせて移動します。
- 固定:ページの残りの部分がスクロールしても、背景画像は動きません。
- inherit: 親要素の background-attachment プロパティの値を継承します。
スクロールの視覚的差異を完成させるには、background-attachmentプロパティをfixedに設定し、背景がビューポートに対して相対的に固定されるようにする必要があります。要素にスクロール機構がある場合でも、背景は要素のコンテンツと一緒にスクロールしません。
つまり、背景は最初からすでに初期位置に固定されています
コアとなるcssのコードは以下の通りです。
section {
height: 100vh;
}
.g-img {
background-image: url(...) ;
background-attachment: fixed;
background-size: cover;
background-position: center center;
}
全体の例は次のようになります。
<style>
div {
height: 100vh;
background: rgba(0, 0, 0, .7);
color: #fff;
line-height: 100vh;
text-align: center;
font-size: 20vh;
}
.a-img1 {
background-image: url(https://images.pexels.com/photos/1097491/pexels-photo-1097491.jpeg);
background-attachment: fixed;
background-size: cover;
background-position: center center;
}
.a-img2 {
background-image: url(https://images.pexels.com/photos/2437299/pexels-photo-2437299.jpeg);
background-attachment: fixed;
background-size: cover;
background-position: center center;
}
.a-img3 {
background-image: url(https://images.pexels.com/photos/1005417/pexels-photo-1005417.jpeg);
background-attachment: fixed;
background-size: cover;
background-position: center center;
}
</style>
<div class="a-text">1</div>
<div class="a-img1">2</div>
<div class="a-text">3</div>
<div class="a-img2">4</div>
<div class="a-text">5</div>
<div class="a-img3">6</div>
<div class="a-text">7</div>
トランスフォーム:トランスレート3D
ここでもまず、transformとperspectiveという2つの概念について見ていきましょう。
- transform: 要素(2d/3d)を変換するcss3プロパティで、translate、rotate、scaleなどがある。
- perspective: 要素が3dで変換されたときに私たちの目が見る3d立体視効果、すなわち空間的な効果を定義するcss3属性です。
3D透視図法を以下に示す。
一例として
<style>
html {
overflow: hidden;
height: 100%
}
body {
/* The parent of the parallax element needs a 3D perspective */
perspective: 1px;
transform-style: preserve-3d;
height: 100%;
overflow-y: scroll;
overflow-x: hidden;
}
#app{
width: 100vw;
height:200vh;
background:skyblue;
padding-top:100px;
}
.one{
width:500px;
height:200px;
background:#409eff;
transform: translateZ(0px);
margin-bottom: 50px;
}
.two{
width:500px;
height:200px;
background:#67c23a;
transform: translateZ(-1px);
margin-bottom: 150px;
}
.three{
width:500px;
height:200px;
background:#e6a23c;
transform: translateZ(-2px);
margin-bottom: 150px;
}
</style>
<div id="app">
<div class="one">one</div>
<div class="two">two</div>
<div class="three">three</div>
</div>
そして、この視覚的差分の考え方は、次のように機能します。
- コンテナにはtransform-style: preserve-3d、perspective: xpxが設定されており、このコンテナ内の子要素は3D空間になります。
- 子要素には異なるtransform: translateZ()が設定され、3DのZ軸におけるスクリーン(私たちの目)からの距離が各要素で異なるようにします。
- スクロールバーをスクロールすると、子要素が異なるtransformを設定するように:translateZ()、その後、彼らはスクロール視差の効果を実現し、画面(私たちの目)に相対的にtranslateYを上下にスクロールする
上記は、視差スクロール効果を完了するためにCSSの詳細であり、CSS視差スクロール効果の詳細については、スクリプトハウスの他の関連記事に注意を払うしてください
関連
-
[CSSレイアウト例】float(フロート)、position(ポジション)プロパティの差分によるCSSレイアウト
-
[CSSチュートリアル】検索ボックスの非表示機能を実現するCSS(アニメーションの順送り・逆戻りシーケンス)
-
[CSSチュートリアル】子要素のmargin-topが親要素の移動を引き起こす問題解決
-
[css3] CSS3を使ってヘッダーアニメーション効果を作成する
-
[CSSチュートリアル]テーブル table :nth-child()を使って行間の色変更と整列を実現する。
-
[CSSチュートリアル]cssに0.5pxの行を実装してモバイル互換の問題を解決する(推奨)
-
[CSSチュートリアル]アダプティブスクエアを実現するCSSの例
-
[css3]CSS3アニメーションによるグラフィックドロップ効果
-
[CSSチュートリアル]マウスをスライドさせてカードを浮かせるCSSの例
-
[css3]CSS 3.0テキストホバー飛び効果コード
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[CSSチュートリアル】Pure CSSカスタム複数行抜け問題(原理から実装まで)
-
[CSSチュートリアル]cssのbackgroundとborderタグの例 詳細
-
[CSSチュートリアル】CSSでemを開く正しい方法 詳細へ
-
[css3]CSS3アニメーションによる光のボタンの流れの効果
-
[CSSチュートリアル】CSSで実現できるのなら、わざわざJavaScriptを使う必要はない
-
[CSSレイアウト例】等間隔の四角形で完璧なページレイアウトを実現する方法
-
[css3]CSS3ベジェ曲線サンプル:リンクホバーアニメーション効果の作成
-
[CSSチュートリアル】BlazorでCSSを分離する
-
[css3]水平方向のプログレスバーの最後にテキストを表示するCSSコード
-
[CSSチュートリアル】CSS疑似要素を使って、連続する複数の要素のスタイルを制御する