5 つの異なるボックスを含むシンプルな Web レイアウトを実装しました。それぞれに異なる背景画像があり、ボックス間に一定の間隔があります。ボックスの上にマウスを置くと、背景画像が薄暗くなり、テキストが白に変わります。ボックスとボタンはコンテナー内に配置され、ページ全体がギャラリーのように見えます。
<div class="コンテナ"> <div id="スライド"> <div class="item" style="background-image:url('./img/Zhang Ruonan01.jpg')"></div> <div class="item" style="background-image:url('./img/Ju Jingyi01.jpg')"></div> <div class="item" style="background-image:url('./img/Ju Jingyi02.jpg')"></div> <div class="item" style="background-image:url('./img/Ju Jingyi06.jpg')"></div> <div class="item" style="background-image:url('./img/Ju Jingyi04.jpg')"></div> <div class="item" style="background-image:url('./img/Ju Jingyi07.jpg')"></div> </div> <div class="ボタン"> <div class="左"> < 前</div> <div class="center">壁紙をダウンロード</div> <div class="right">次へ ></div> </div> </div> </div>
* { マージン: 0; パディング: 0; ボックスのサイズ設定: ボーダーボックス; } 。容器 { 幅: 100vw; 高さ: 100vh; 位置: 相対的; オーバーフロー: 非表示; } 。アイテム { 幅: 240ピクセル; 高さ: 160ピクセル; 位置: 絶対; トップ: 50%; 左: 0; 変換: 変換Y(-50%); 境界半径: 10px; ボックスシャドウ: 0 30px 50px #505050; 背景サイズ: カバー; 背景位置: 中央; 遷移: 1秒。 } .item:nth-child(1)、 .item:nth-child(2) { 左: 0; トップ: 0; 幅: 100%; 高さ: 100%; 変換:translateY(0); ボックスシャドウ: なし。 境界半径: 0; } .item:nth-child(3) { 左: 70%。 } .item:nth-child(4) { 左: calc(70% + 250px); } .item:nth-child(5) { 左: calc(70% + 500px); } .item:n番目の子(n+6) { 左: calc(70% + 750px); 不透明度: 0; } .ボタン { 幅: 100%; 位置: 絶対; 下: 50ピクセル; マージン左: -50px; テキスト整列: 中央; ディスプレイ: フレックス; コンテンツの位置揃え: 中央; } .buttons div { 幅: 120ピクセル; 高さ: 50ピクセル; 行の高さ: 50px; テキスト整列: 中央; 境界半径: 5px; マージン: 0 25px; トランジション: 0.5秒。 カーソル: ポインタ; ユーザー選択: なし。 フォントサイズ: 20px; 色: #fff; 背景色: rgba(0, 0, 0, 0.4); ボックスシャドウ: 2px 2px 2px rgba(0, 0, 0, 0.2); }
const leftBtn = document.querySelector(".buttons .left") const rightBtn = document.querySelector(".buttons .right") const slide = document.querySelector("#slide") let openClick = true // スロットル処理 (アニメーションの実行プロセスを確実にするため、ボタンが繰り返しクリックされないようにします) leftBtn.addEventListener("クリック", () => { if (openClick) { openClick = false // クリックをトリガーした後、ボタンを無効にします const items = document.querySelectorAll(".item") slide.prepend(items[items.length - 1]) setTimeout(() => openClick = true, 1000) // ボタンを再度開くまで 1 秒} }) rightBtn.addEventListener("クリック", () => { if (openClick) { openClick = false const items = document.querySelectorAll(".item") slide.appendChild(items[0]) setTimeout(() => openClick = true, 1000) } })
* { マージン: 0; パディング: 0; ボックスのサイズ設定: ボーダーボックス; }
このコードは、要素のボックス モデルをボーダー ボックスに設定するなど、グローバル CSS スタイルを設定します。つまり、ボックス モデルの幅と高さには、要素のコンテンツだけでなく、要素の境界線とパディングが含まれます。
。容器 { 幅: 100vw; 高さ: 100vh; 位置: 相対的; オーバーフロー: 非表示; }
このコードは、コンテナーの幅と高さを 100vw と 100vh (ビューポートの幅と高さ) に設定するなど、コンテナーの CSS スタイルを設定します。同時にコンテナの配置を相対配置、つまり親要素を基準とした配置に設定します。最後に、コンテナのオーバーフロー プロパティを非表示に設定します。つまり、コンテナのスコープを超える要素は表示されません。
。アイテム { 幅: 240ピクセル; 高さ: 160ピクセル; 位置: 絶対; トップ: 50%; 左: 0; 変換: 変換Y(-50%); 境界半径: 10px; ボックスシャドウ: 0 30px 50px #505050; 背景サイズ: カバー; 背景位置: 中央; 遷移: 1秒。 }
このコードは、ボックスの幅と高さをボックスのサイズである 240 ピクセルと 160 ピクセルに設定するなど、ボックスの CSS スタイルを設定します。同時に、ボックスの位置を絶対位置、つまり親要素を基準とした相対位置に設定します。最後に、ボックスの境界線の半径を 10px (ボックスの丸い角) に設定します。ボックスの背景画像サイズはカバーであり、ボックス全体をカバーします。背景画像が中央に配置されます。最後に、ボックスのトランジション効果を 1 秒に設定します。つまり、トランジション効果時間は 1 秒です。
.item:nth-child(1)、 .item:nth-child(2) { 左: 0; トップ: 0; 幅: 100%; 高さ: 100%; 変換:translateY(0); ボックスシャドウ: なし。 境界半径: 0; }
このコードは、最初と 2 番目のボックスの CSS スタイルを設定します。これには、ボックスの位置を 0 に設定することも含まれます。これは、コンテナーの上部を覆うことを意味します。また、高さを 100% に設定します。これは、コンテナーの高さ全体をカバーすることを意味します。最後に、変換プロパティをtranslateY(0)に設定します。これは、下に移動しないことを意味します。また、影と境界線の半径を 0 に設定します。つまり、影も境界線もありません。
.item:nth-child(3) { 左: 70%。 }
このコードは、位置をコンテナーの左側から 70% に設定するなど、3 番目のボックスの CSS スタイルを設定します。
.item:nth-child(4) { 左: calc(70% + 250px); }
このコードは、位置を 3 番目のボックスの右側から 250 ピクセルに設定するなど、4 番目のボックスの CSS スタイルを設定します。
.item:nth-child(5) { 左: calc(70% + 500px); }
このコードは、位置を 3 番目のボックスの右側から 500 ピクセルに設定するなど、5 番目のボックスの CSS スタイルを設定します。
.item:n番目の子(n+6) { 左: calc(70% + 750px); 不透明度: 0; }
このコードは、3 番目のボックスの右から 750 ピクセルの位置の設定を含め、すべてのボックスの CSS スタイルを設定します。また、不透明度を 0 に設定します。つまり、非表示になります。
.ボタン { 幅: 100%; 位置: 絶対; 下: 50ピクセル; マージン左: -50px; テキスト整列: 中央; ディスプレイ: フレックス; コンテンツの位置揃え: 中央; }
このコードは、ボタンの CSS スタイルを設定するもので、ボタンの幅を 100% に設定すること、つまりボタンのサイズがコンテナーと同じになることを含みます。同時にボタンの位置をコンテナの下部から 50px に設定します。最後に、ボタンの配置を中央配置に設定します。これは、ボタンが水平方向の中央に配置されることを意味します。
.buttons div { 幅: 120ピクセル; 高さ: 50ピクセル; 行の高さ: 50px; テキスト整列: 中央; 境界半径: 5px; マージン: 0 25px; トランジション:.5秒; カーソル: ポインタ; ユーザー選択: なし。 フォントサイズ: 20px; 色: #fff; 背景色: rgba(0, 0, 0, 0.4); ボックスシャドウ: 2px 2px 2px rgba(0, 0, 0, 0.2); }
このコードは、ボタンの幅を 120 ピクセルに、高さをボタンのサイズである 50 ピクセルに設定するなど、ボタンの CSS スタイルを設定します。同時に、ボタンの行の高さをボタンの高さである 50px に設定します。ボタンのテキスト配置は中央揃え、つまりテキストは水平方向の中央揃えになります。ボタンの境界線の半径は 5 ピクセルで、これはボタンの丸い角です。ボタンの余白は0 25px、つまりボタンの左右の横方向の距離は25pxです。ボタンのトランジション効果は 0.5 秒、つまりトランジション効果時間は 0.5 秒です。ボタンのカーソル属性はポインタです。つまり、マウスをボタンの上に置くと、マウスの形状が手の形に変わります。ボタンのユーザー選択属性は none です。つまり、ユーザーはボタン内のテキストを選択できません。ボタンのフォント サイズは 20px で、これはボタンのテキスト サイズです。ボタンのテキストの色は、ボタンのテキストの色である白です。ボタンの背景色は rgba(0, 0, 0, 0.4)、つまりボタンの背景色は黒、透明度は 0.4 です。ボタンの影のプロパティは 2px 2px 2px rgba(0, 0, 0, 0.2) です。つまり、ボタンの影は 2px 2px 2px 黒で、透明度は 0.2 です。
HTML+CSS パノラマ カルーセルのサンプル コードに関するこの記事はこれで終わりです。関連する HTML CSS パノラマ カルーセルのコンテンツについては、downcodes.com で以前の記事を検索するか、引き続き次の関連記事を参照してください。引き続き downcodes.com をサポートしてください。将来的にはもっと!