chevron-left chevron-right

Piotr Nalepa Frontend, architektura i AI

[CSS] Jak zrobić efekt błysku na obrazku?

Ta wersja
blog.piotrnalepa.pl/2012/04/01/css-jak-zrobic-efekt-blysku-na-obrazku
Opublikowano
Autor
, Staff Software Engineer
Kategoria
CSS
Uwagi
Napisz do mnie · Napisz na X

Ten wpis ma 14 lat. Od tego czasu przeglądarki i narzędzia mogły się zmienić, więc zanim użyjesz kodu, sprawdź go z aktualną dokumentacją.

Na pewno czasem chciałbyś, aby galeria zdjęć wyglądała szczególnie efektownie i przyciągała uwagę użytkownika strony.
W dzisiejszym artykule zostanie opisany sposób na uzyskanie efektu błysku na zdjęciu za pomocą tylko i wyłącznie CSS. Efekt pojawi się w momencie najazdu kursorem myszki na zdjęcie.

Sekcja 1Struktura kodu HTML

Zaczynamy od kodu HTML, wygląda on następująco:

Przykład 1HTML
1
2
3
4
<div class="polaroid">
	<img src="http://farm3.staticflickr.com/2394/2060535614_24d54e30bb.jpg" alt="Obrazek z Flickr"/>
	<div class="shine"></div>
</div>

Kod nie jest przesadnie rozbudowany, ale to dobrze. Utrzymujemy dzięki temu przejrzystość kodu.
Jak pewnie zauważyłeś, w divie o klasie polaroid zawarte są 2 elementy:

  • obrazek
  • div o klasie shine, który będzie zawierał animację blasku

Jako obrazek wykorzystałem jeden z obrazków z serwisu Flickr na licencji Creative Commons.

Sekcja 2Style CSS

Mając tak przygotowaną strukturę kodu przygotujemy odpowiednie style:

Przykład 2HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
.polaroid {
	width:  500px;
	height: 314px;
	position: relative;
	border: 5px solid #fff;
	border-bottom: 50px solid #fff;
}
.shine {
	width: 100%; 
	height: 100%;
	background-image: url('blask.png');
	background-position: -500px 0;
	left: 0px;
	top: 0px;
	position: absolute;
	background-repeat: no-repeat;
	-webkit-transition: background-position .5s ease;
	-moz-transition: background-position .5s ease;
	-o-transition: background-position .5s ease;
	transition: background-position .5s ease;
}
.shine:hover { background-position: 500px 0; }

Najpierw definiujemy style dla kontenera obrazka polaroid, a następnie style dla efektu błysku. Jak pewnie zauważyłeś, zostanie wykorzystany atrybut CSS transistion, należy go zdefiniować dla elementu bez żadnej dodatkowej aktywności na nim (czyli tak jak na przykładzie, a nie w hover, focus, itd., itp.). Będzie on płynnie przesuwał przygotowany obrazek blasku od lewej do prawej w czasie 0,5 sekundy. Należy pamiętać, żeby ustawić pozycję końcową dla obrazka (dla danego efektu, w tym przypadku hover).

Sekcja 3Podsumowanie

Jest to prosty przykład na to jak osiągnąć efektowny wygląd swojej galerii zdjęć. Mam nadzieję, że będzie dla Ciebie pożyteczny.

Demo z tego artykułu jest dostępne tutaj: css efekt blasku

źródło

Udostępnij
Uwagi

O autorze

Staff Software Engineer

Piszę na tym blogu od 2009 roku, a strony i aplikacje webowe tworzę zawodowo od 14 lat. Obecnie w Bishop Fox prowadzę frontend platformy Cosmos, od samego początku projektu. Wcześniej pracowałem m.in. w OLX, KUDO, Auto1 i eZ Systems. Piszę tu o tym, czego nauczyłem się w praktyce: o JavaScripcie, TypeScripcie, Reakcie, CSS-ie i architekturze frontendu. Występowałem też jako prelegent na konferencjach w Polsce i Europie. Masz pytanie albo pomysł na wpis? Daj znać!