Vytvorte efekt odhalenia obrazu len s CSS s priehľadnými hranicami
Efekt odhalenia obrazu iba v CSS možno riešiť rôznymi spôsobmi. Je skutočne celkom ľahké kódovať dizajn, v ktorom obraz vyniká (je prekrútený) jeho pevné pozadie -ty iba umiestniť obrázok nad menším prvkom s pevným pozadím.
Ak používate rovnaký výsledok, môžete získať rovnaký výsledok transparentné hranice, kde si ponecháte veľkosť elementu pozadia je rovnaká ako pre nové znalosti a pridať transparentné hranice s cieľom vytvorte prázdny priestor aby sa popredia dostali do pretečenia.
Existujú niektoré výhody pri použití druhej metódy. Keďže to sú priehľadné hranice, ktoré poskytujú oblasti, do ktorej môžu popredia preniknúť, môžeme ovládanie smeru pretečenia medzi ľavým, pravým, horným a dolným okrajom. Tiež má rovnakú veľkosť ako pre popredí, tak aj pre pozadie uľahčuje pohyb oboch prvkov súčasne na celej stránke.
Stručne povedané, uvidíme ako to vytvorte efekt odhalenia obrazu len v systéme CSS pomocou a menšie pevné pozadie s obrázok v popredí, ktorý má priehľadné hranice. Môžete sa pozrieť na konečné demo nižšie.
1. Vytvorte pôvodný kód
HTML-múdry, len jeden V CSS používame dve premenné CSS, Pridáme tiež my pridať prázdne Obrázok sme pridali do priečinka Na nižšie môžete vidieť, čo máme doteraz ( Ak chcete pridať menšie (vysunuté) pozadie za obrázkom, použijeme druhý pseudo-element, Vytvárame ďalšiu premennú CSS, šírka sa vypočíta ako výška sa vypočíta ako S CSS filter z Tu je screenshot demo doteraz poskytnuté (s my pridajte Ako my už pridané Nižšie uvidíte konečné demo. Ak sa zobrazí
--BGC
a --stlmiť
pre farbu pozadia a rozmery z .foo
kontajner, resp. V príklade som použil rovnaká hodnota pre šírku a výšku získať štvorcový tvar, vytvorte oddelené premenné pre výšku a šírku, ak chcete obdĺžnikový.Pozícia: relatívna
pravidlo na .foo
, takže jeho pseudo-prvky, ktoré budeme používať odhalenie obrazu, môže byť absolútne umiestnená (pozri nižšie), a tak stohované na seba. .foo -bgc: # FFCC03; --dim: 300px; šírka: var (- dim); výška: var (- dim); farba pozadia: var (- bgc); pozícia: relatívna;
obsah
vlastnosť na oba pseudo-prvky, .foo :: predtým
a .foo :: po
, aby ste ich dostali správne. .foo :: pred, .foo :: po content: "; position: absolute; left: 0; top: 0;
.foo
element, jeho dva pseudo-prvky, .foo :: predtým
, .foo :: po
, a ich :vznášať sa
pseudo-triedy dostať prechod
vlastnosť to bude pridajte jednoduchý prechod k nim za 500 milisekúnd (pol sekundy). .foo, .foo: hover, .foo :: pred, .foo :: po, .foo: hover :: pred, .foo: hover :: po transition: transformácia 500ms easy-in;
2. Pridajte obrázok
.foo :: predtým
pseudo-prvok ako obrázok na pozadí, a veľkosť, aby pokryla celý pseudo-prvok s šírka
a výška
Vlastnosti. my uložte ho priamo pod .foo
element pomocou z-index: -1
pravidlo. .foo :: pred šírka: 100%; výška: 100%; pozadie: url (camel.png) centrum / obal; z-index: -1;
centrum
kľúčových slov vycentruje obraz, kým veko
kľúčové slovo rozlíši obrázok na pokryť celý prvok pri zachovaní jeho pomeru strán. z-index
je odstránený z .foo :: predtým
tak, aby to bolo viditeľné):3. Pridajte pozadie posúvania
.foo :: po
.--b
, pre hraničná šírka. Dáme tri priehľadné hranice na :: po
pseudo-element: hore, vpravo a dole. .foo :: po - b: 20px; šírka: calc (100% - var (- b)); výška: vypočítať (100% - vypočítať (var (- b) * 2)); hranica: var (- b) pevná transparentná; border-left: none; box-tieň: vložka 0 var (- dim) 0 var (- bgc); filter: jas (.8); z-index: -2;
calc (100% - var - b))
ktorý sa vráti celková šírka .foo
mínus celková šírka horizontálnych hraníc (len v pravej hranici, pretože tu nie je ponechaná hranica).calc (100% - výpočet (var (- b) * 2))
ktorý sa vráti celková výška .foo
mínus celková šírka jeho vertikálnych hraníc (horné a spodné okraje).box-shadow
majetok, aj my pridajte horizontálny vložený tieň rovnakej veľkosti ako .foo
(ktorý je var (- dim)
).jas (0,8)
stmavne farbu pozadia trochu, a napokon, z-index: -2
pravidlo umiestni :: po
pseudo-element pod :: predtým
ktorý obsahuje obrázok.z-index
odstránené z obidvoch pseudo-elementov tak, aby boli viditeľné):4. Pridajte transformáciu
premeniť
vlastnosť k dvom pseudo-elementom, takže keď sa používateľ pohybuje nad .foo
, oba pseudo-prvky sú pohyboval horizontálne.prechod
majetok ku všetkým prvkom na konci kroku 1 je pohyb obrazu a jeho pozadia oba animované. .foo: hover :: pred, .foo: pohybovať po: transform: translateX (100%);
Bonus: Nepovinná marža
.foo
vedľa iných prvkov na stránke a chcete, aby tieto ďalšie prvky odsťahovať sa keď sa obrázok a jeho pozadie posúvajú von, potom pridajte pravý okraj s rovnakou šírkou ako .foo
na .foo: hover
element. .foo: vznášať margin-right: var (- dim);