プラグインを使用せずにJavaScript Lightbox効果
13113 ワード
ライトボックスは素晴らしいです!私は、JQueryの日と考えで初めて彼らを見ていることを覚えています.
長年にわたって、私はそれがバニラJavaScriptといくつかのCSSで作られることを実現するために来ました.
だから今日、私はどのようにプラグインを使用せずに独自のイメージLightbox効果を構築する方法をお見せしたい!
最後の結果は、このクールな効果です
我々は、アプリケーションのHTMLビルディングブロックをレイアウトを開始します.
イメージは
次に、下部には、実際のライトボックスがあります.
LightBoxの内部では、簡単な絵文字の電源を閉じたボタンをクリックします.
そして、ライトボックスの中にも、私たちがイメージを置くために使用する空のイメージを見ます.
いくつかの基本的なスタイリングを追加することによって、我々のアプリケーションを少し良くしましょう.
最初に我々は
では隠しクラスを追加しましょう.
JavaScriptには、すべてをフックし、それを動作させる部分です.
何が起こるかイメージ上のユーザークリック.我々はLightboxイメージにそれを追加して、我々のLightbox から隠しクラスを削除するためにイメージのSRCを得ますユーザーが閉じるボタンをクリックします.私たちはライトボックスに隠しクラスを追加します. 作業に必要な変数を定義しましょう.
LightBoxを表示する関数を作成しましょう.
次に、隠されたクラスを削除し、ユーザーが私たちのライトボックスを見て!
今、私たちは近い機能を必要とします.
次のcodepenでこのライトボックスを試すことができます.
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、Facebook
長年にわたって、私はそれがバニラJavaScriptといくつかのCSSで作られることを実現するために来ました.
だから今日、私はどのようにプラグインを使用せずに独自のイメージLightbox効果を構築する方法をお見せしたい!
A while ago, we did a vanilla javascript modal, which is quite similar but uses a different approach.
最後の結果は、このクールな効果です
HTML構造
我々は、アプリケーションのHTMLビルディングブロックをレイアウトを開始します.
<div class="container">
<div class="col">
<img src="https://images.unsplash.com/photo-1605347220242-04d3b97ceee9?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1950&q=80" onClick="openLightbox(this)" />
</div>
<div class="col">
<img src="https://images.unsplash.com/photo-1605306030698-6e966cc142b4?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1950&q=80" onClick="openLightbox(this)" />
</div>
<div class="col">
<img src="https://images.unsplash.com/photo-1593642634402-b0eb5e2eebc9?ixlib=rb-1.2.1&auto=format&fit=crop&w=1950&q=80" onClick="openLightbox(this)" />
</div>
</div>
<!-- Actual Lightbox -->
<div id="lightbox" class="lightbox hidden">
<div onClick="closeLightbox()" class="close">❌</div>
<div class="lightbox-content">
<img id="lightbox-image" />
</div>
</div>
上部には、ユーザーが表示されるレイアウトが含まれます.この場合、3つの列を持つコンテナーがあります.イメージは
onClick
関数を持ちます.(これを少しずつ作成します).次に、下部には、実際のライトボックスがあります.
LightBoxの内部では、簡単な絵文字の電源を閉じたボタンをクリックします.
そして、ライトボックスの中にも、私たちがイメージを置くために使用する空のイメージを見ます.
This article does not focus on accessibility and is not optimized for that purpose
ライトボックスへのスタイリングの追加
いくつかの基本的なスタイリングを追加することによって、我々のアプリケーションを少し良くしましょう.
最初に我々は
openLightbox
to center our columnsを使用し、次に、画像をポップにするために境界線とボックスの影を追加します..container {
display: flex;
flex-wrap: wrap;
background: url("https://images.unsplash.com/photo-1558051815-0f18e64e6280?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1949&q=80") no-repeat center center;
background-position: cover;
min-height: 100vh;
justify-content: center;
align-items: center;
}
.container .col {
width: 30%;
margin: 1.6%;
}
.container .col img {
cursor: pointer;
border: 5px solid #fff;
box-shadow: 0 0 1rem #aaaaaa;
max-width: 100%;
max-height: 100%;
}
我々のLightboxが行くように、我々はそれを全体のページの上にわたるために必要として、トップから始まっていて固定されます..lightbox {
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
overflow: auto;
opacity: 1;
visibility: visible;
transition: all 0.3s ease;
}
我々は、フェードインとフェードアウト効果をアニメーション化することができますので、不透明度と可視性を使用している.では隠しクラスを追加しましょう.
.lightbox.hidden {
opacity: 0;
visibility: hidden;
}
そして、それを上にするために、我々はライトボックスの中でボタン、内容とイメージをスタイルします..lightbox .close {
position: absolute;
right: 2.5%;
top: 2.5%;
font-size: 2rem;
cursor: pointer;
}
.lightbox-content {
display: flex;
margin: 5%;
align-items: center;
justify-content: center;
}
.lightbox-content img {
max-width: 100%;
max-height: 100%;
border: 5px solid #fff;
}
ジャバスクリプトライトボックス効果
JavaScriptには、すべてをフックし、それを動作させる部分です.
何が起こるか
const lightbox = document.getElementById('lightbox');
const lightboxHolder = document.getElementById('lightbox-image');
実際のLightbox要素とその中のイメージ要素を定義します.LightBoxを表示する関数を作成しましょう.
openLightbox = (element) => {
lightboxHolder.src = element.src; lightbox.classList.remove("hidden");
};
待ってください.はい、ユーザーがクリックしたイメージのsrcを取得し、ライトボックスに追加します.次に、隠されたクラスを削除し、ユーザーが私たちのライトボックスを見て!
今、私たちは近い機能を必要とします.
closeLightbox = () => lightbox.classList.add("hidden");
そして今、プラグインを使用せずに、完全に機能するライトボックスを持っています.次のcodepenでこのライトボックスを試すことができます.
読んでいただきありがとうございます、接続しましょう!
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、Facebook
Reference
この問題について(プラグインを使用せずにJavaScript Lightbox効果), 我々は、より多くの情報をここで見つけました https://dev.to/dailydevtips1/javascript-lightbox-effect-without-using-plugins-bb4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol