🍦 バニラジェイ
8813 ワード
このポストでは、シンプルなCSSとバニラJSライトボックスを共有したい.
以下はデモGitHubページです.
👉 https://yossi-abramov.github.io/simple-lightbox.github.io/
プロジェクトのGithubリポジトリ
👉 https://github.com/yossi-abramov/simple-lightbox.github.io
このデモのためのHTMLは簡単に従うので、私はそれ以上行くことはありません.関連するCSSとコードのJS部分をカバーしましょう.
CSS
我々のLightboxは、2つの州を持ちます:隠れて、目に見えます.隠し状態から始めましょう.
Lightboxの見える状態のスタイルはとても簡単です.
js
私たちのライトボックスのJavaScriptもかなり簡単です!この場合、カバーする三つの機能があります. 可視と隠れたライトボックスの状態を切り替える 2 )照明ボックスに被写体画像を表示する 3 )中心の(被写体)画像にないクリックごとにライトボックスを隠す
LightBoxを表示するには、静的なイメージ要素を使いたくない
✍ その他のポスト
https://yossiabramov.com/
以下はデモGitHubページです.
👉 https://yossi-abramov.github.io/simple-lightbox.github.io/
プロジェクトのGithubリポジトリ
👉 https://github.com/yossi-abramov/simple-lightbox.github.io
このデモのためのHTMLは簡単に従うので、私はそれ以上行くことはありません.関連するCSSとコードのJS部分をカバーしましょう.
CSS
我々のLightboxは、2つの州を持ちます:隠れて、目に見えます.隠し状態から始めましょう.
.lightbox{
opacity: 0;
visibility: hidden;
position: fixed;
left:0;
right: 0;
top: 0;
bottom: 0;
z-index: -1;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.15s ease-in;
}
ご覧のように、ライトボックスが入っていますfixed
位置と方向のプロパティを0
. これは、ライトボックスを画面全体の任意の種類を使用せずに画面を埋めるになりますwidth
or height
プロパティ.この位置決め戦略はまた、より多くの状況において非常に有用であり得る.たとえば、イメージオーバーレイを作成することを考えます.あなたが配置されるイメージコンテナを持っているかもしれませんrelative
と.overly
位置するabsolute
. すべての方向プロパティを設定する0
イメージオーバーレイは完全に親コンテナを塗りつぶすことができます.Lightboxの見える状態のスタイルはとても簡単です.
.lightbox.show{
background-color: rgba(0,0,0, 0.85);
opacity: 1;
visibility: visible;
z-index: 1000;
}
ページの読み込み時に表示されるライトボックスのフラッシュを避けるためにbackground-color
隠れた州スタイルで.js
私たちのライトボックスのJavaScriptもかなり簡単です!この場合、カバーする三つの機能があります.
document.addEventListener("DOMContentLoaded", () => {
// ===> DOM elements <=== //
const $imagesContainer = document.getElementById('images-container');
const $lightbox = document.getElementById('lightbox');
// ===> Event listeners and triggers <=== //
// Show lightbox
$imagesContainer.addEventListener('click', e => {
const imageWrapper = e.target.closest('.image-wrapper');
if (imageWrapper) {
const image = imageWrapper.querySelector('img');
if (image) {
$lightbox.innerHTML = '<div class="close-lightbox"></div>' + image.outerHTML;
$lightbox.classList.add('show');
}
}
});
// Hide Lightbox
$lightbox.addEventListener('click', (e) => {
if (!e.target.hasAttribute('src')) {
$lightbox.classList.remove('show');
}
});
});
隠れた状態と見える状態の間をトグルするためには、.show
クラス.我々は、使用することができたclassList.toggle()
しかし、この例ではclassList.remove()
and classList.add()
コードをより読みやすくします.LightBoxを表示するには、静的なイメージ要素を使いたくない
src
and alt
別のプロパティ(イメージ要素上で持つことができるすべてのHTML属性を考えます...............).この理由で私はimage.outerHTML
. しかし、これは単純なライトボックスのためのちょうど私の提案です、そして、それを実装する多くの方法があります!✍ その他のポスト
https://yossiabramov.com/
Reference
この問題について(🍦 バニラジェイ), 我々は、より多くの情報をここで見つけました https://dev.to/yossiabramov/vanilla-js-lightbox-306hテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol