chevron-left chevron-right

Piotr Nalepa Frontend, architecture and AI

[CSS] Lustrzane odbicie

This version
blog.piotrnalepa.pl/2010/08/22/css-lustrzane-odbicie
Published
Author
, Staff Software Engineer
Category
CSS
Feedback
Write to me · Post on X

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

W dzisiejszym krótkim artykule po dłuższej przerwie postanowiłem opisać sposób na zrobienie lustrzanego odbicia jakiegoś obrazka.
Dzięki temu, będzie można tworzyć efektownie wyglądające galerie zdjęć bez wykorzystywania skryptów PHP czy JavaScript.
Niestety, ta metoda ma jedną wadę - nie działa we wszystkich przeglądarkach. Działa jedynie w przeglądarkach opartych o silnik Webkit, czyli Google Chrome i Safari. Lecz istnieje prawdopodobieństwo, że w przyszłości specyfikacja CSS3 zostanie wzbogacona o obsługę tego typu efektów.

Na początek tworzymy strukturę HTML naszej galerii, która może przyjąć następującą postać:

Example 1HTML
<p>
   <img class="reflex" src="img1.jpg" alt="Mustang 1" />
   <img class="reflex" src="img2.jpg" alt="Ferrari" />
   <img class="reflex" src="img3.jpg" alt="Mustang 2" />
</p>
Jak pewnie zauważyłeś, drogi czytelniku, obrazki mają przypisaną klasę. Ma to na celu wskazanie, które obrazki mają mieć odbicie lustrzane.
Kod CSS odpowiadający za obsługę obrazków z odbiciem lustrzanym wygląda następująco:
Example 2CSS
.reflex {
	-webkit-box-reflect: below 0px /*kierunek gradientu przezroczystego - above|below|left|right*/
	-webkit-gradient(linear, 0% 0%, 0% 100%, /*krycie gradientu, w tym kierunek krycia - top left | bottom left*/
	from(transparent), color-stop(0.25, transparent), to(white)); /*maska kryjąca - więcej o tym, tutaj - http://webkit.org/blog/181/css-masks/*/
}
To by było na tyle. Cała magia opiera się na tym jednym, rozbudowanym atrybucie.
Demo z tego artykułu jest dostępne pod tym linkiem: lustrzane odbicie obrazka

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!