chevron-left chevron-right

Piotr Nalepa Frontend, architecture and AI

[CSS] Efekt Lightbox prawie bez JavaScriptu

This version
blog.piotrnalepa.pl/2009/06/25/css-efekt-lightbox-prawie-bez-javascriptu
Published
Author
, Staff Software Engineer
Category
CSS
Feedback
Write to me · Post on X

This post is 17 years old. Browsers and tools may have changed since then, so check the code against current documentation before you use it.

Na pewno się spotkaliście z takim efektem, że jak kliknęliście jakieś zdjęcie do powiększenia to tło pod nim się robiło takie szaro-przezroczyste, chciałem Wam pokazać jak można to osiągnąć praktycznie nie korzystając z JavaScriptu do generowania Lightboxa

Jest pełno gotowych kodów JavaScript by osiągnąć ten efekt, ale każdy swoje waży. Ten sposób praktycznie ogranicza się tylko CSS, co maksymalnie ogranicza wagę efektu.

Zacznę najpierw od kodu CSS, który wygląda następująco:

Example 1CSS
.czarne_tlo {
	display: none;
	position: absolute;
	top: 0%;
	left: 0%;
	width: 100%;
	height: 100%;
	background-color: #000000;
	z-index:1001;
	-moz-opacity: 0.8;
	opacity:.80;
	filter: alpha(opacity=80);
}
.biala_tresc {
	display: none;
	position: absolute;
	top: 25%;
	left: 25%;
	width: 50%;
	height: 50%;
	padding: 16px;
	border: 16px solid #b30000;
	background-color: #ffffff;
	z-index: 1002;
	overflow: auto;
}
Jak zapewne zauważyliście, użyłem kodu CSS w wersji 3 dla klasy czarne_tlo, by osiągnąć efekt przezroczystości w przeglądarkach.
Teraz przedstawię przykładowy kod HTML, który zawiera minimalne ilości JavaScript, by zdefiniować zachowanie po kliknięciu w linki:
Example 2HTML
<p>Bla bla bla jakis tekst na stronie. Aby wyświetlić lightboxa na stronie kliknij: <a href = "javascript:void(0)" onclick = "document.getElementById('normalny').style.display='block';document.getElementById('przejscie').style.display='block'">TUTAJ</a>
        </p>
        <div id="normalny" class="biala_tresc">
        	To jest treść lightboxa. Jakiś sobie tekst. Kliknij, aby <a href = "javascript:void(0)" onclick = "document.getElementById('normalny').style.display='none';document.getElementById('przejscie').style.display='none'">ZAMKNĄĆ</a>
        </div>
        <div id="przejscie" class="czarne_tlo">
        </div>
Jak widać, aby osiagnąć ten efekt, naprawdę niewiele trzeba. Można z tego skorzystać na stronach dynamicznych dodając obsługę PHP czy AJAXu. Ten przykład jest statyczny dla ułatwienia przykładu.
Tutaj możecie znaleźć demo z tego artykułu.
Share
Feedback

About the author

Staff Software Engineer

I've been writing this blog since 2009 and building for the web professionally for 14 years. Today I lead the frontend of the Cosmos platform at Bishop Fox, where I've been since day one of the project. Before that I worked at OLX, KUDO, Auto1 and eZ Systems. Here I write about what I've learned in practice: JavaScript, TypeScript, React, CSS and frontend architecture. I've also spoken at conferences across Poland and Europe. Got a question or an idea for a post? Let me know!