Articles

Zoomování obrázků na pozadí

následuje hostující příspěvek Dylana Winn-Browna, který nám ukazuje výkonný způsob, jak dosáhnout tohoto designového efektu.

při nedávné práci na webových stránkách klienta jsem byl požádán o replikaci takového efektu.

Kontejnery s obrázky na pozadí, které zoom do jejich kontejneru na hover, odhalující více informací.

Tento typ efektu se používá zejména v situacích typu portfolia, kde návrh zamýšlí zobrazit vizuální i informační detaily.

Existuje mnoho různých možných metod

Jako nikdy předtím vytvořili efekt, jako dříve, začal jsem se podívat na různé způsoby, jak dělat to a narazil na řadu různých metod.

jednou z možností bylo použít Plugin jQuery. Tenhle nebyl úplně ten efekt, po kterém jsem šel, a rozhodně ne příliš lehký.

Další možností bylo umístit <img> do kontejneru a manipulovat s ním pomocí CSS. Zde by mohly být některé potenciální výhody, například možnost nastavit zdroj pomocí srcset , takže použitý obraz je vhodný pro výkon a zařízení.

v mé situaci jsem chtěl řídit efekt zcela v CSS, tak jsem šel na to.

základní funkce

pro dosažení optimálního výkonu jsem se rozhodl použít vlastnost CSS transform pro zpracování zvětšení obrázku. (Animace CSS těží z hardwarové akcelerace a v důsledku toho vypadají plynuleji než jiné metody animace.)

spíše než <img> jsem použil další <div> uvnitř rodiče, abych fungoval jako obrázek. Struktura je:

<div class="parent"> <div class="child"></div></div>

nejprve určíme rozměry nadřazeného prvku. Pak se dítě může vyplnit rodič pomocí width: 100%height: 100%;, stejně jako nastavení obrázku na pozadí, zajistí, že váhy na pokrytí oblasti.

.parent { width: 400px; height: 300px;}.child { width: 100%; height: 100%; background-color: black; /* fallback color */ background-image: url("images/city.jpg"); background-position: center; background-size: cover;}

do nadřazeného prvku přidáme efekty vznášení, které ovlivní náš podřízený prvek. Zaměření styl je dobrý pro přístupnost stejně:

.parent:hover .child,.parent:focus .child { transform: scale(1.2);}

možná Budete chtít použít nástroj pro přidání předpony pro nejlepší možnou podporu prohlížeče.

dokončit základní efekt, můžeme přidat nějaké přechody, aby naše dítě prvek je v normálním stavu:

transition: all .5s;

Pokud chcete přidat barvu překrytí, můžete využít pseudo prvky jako ::before:

.child::before { content: ""; display: none; height: 100%; width: 100%; position: absolute; top: 0; left: 0; background-color: rgba(52, 73, 94, 0.75);}.parent:hover .child:before,.parent:focus .child:before { display: block;}

Nyní, když najedeme na nadřazený prvek, měl by podřízený prvek Zobrazit překrytí barev!

nakonec se budeme zabývat tím, jak přidat nějaký text, který se zobrazí na našem překrytí. Můžeme přidat prvek do naší aktuální podřízený prvek jako tak:

<div class="parent"> <div class="child"> <span>Hello</span> </div></div>

můžeme dát naše <span> styl:

span { color: white; /* Good thing we set a fallback color! */ font-family: sans-serif; padding: 25%; position: absolute;}

a můžeme je vidět jen tehdy, když jsme hover na .parent:

.parent:hover span,.parent:focus span { display: block;}

Live Demo

Viz Pen Image zoom na hover – portfolio internetových stránek o Dylan (@dwinnbrown) na CodePen.

Mobilní podpora

pokud jsou kontejnery odkazy a stavy vznášení nezobrazují žádné podstatné informace,můžete je nechat na pokoji.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *