Vytvořte efekt CSS-Image Image Reveal s průhlednými ohraničeními
A CSS-only image odhalí efekt lze řešit různými způsoby. Je to vlastně docela snadné kódovat design, ve kterém obraz vyčnívá z (je přeplněno uživatelem) jeho pevné pozadí -prostě umístit obrázek přes menší prvek s pevným pozadím.
Pokud použijete, můžete dosáhnout stejného výsledku transparentní hranice, kde si udržet velikost elementu pozadí jako popředí a přidat průhledné okraje, aby se vytvořit prázdné místo pro přepadení popředí.
Existují některé výhody při použití druhého způsobu. Vzhledem k tomu, že se jedná o průhledné okraje, které poskytují prostor pro přepadení do popředí, můžeme řídit směr přepadu mezi levým, pravým, horním a dolním okrajem. Také mají stejnou velikost pro popředí i pozadí usnadňuje současné přesunutí obou prvků přes stránku.
Stručně řečeno, uvidíme, jak na to vytvořte efekt zobrazení pouze CSS používat menší pevné pozadí s obrázek, který má průhledné ohraničení. Můžete se podívat na závěrečné demo níže.
1. Vytvořte počáteční kód
HTML-moudrý, jen jeden V CSS používáme dvě proměnné CSS, Také přidáme My přidat prázdnou Přidáme obrázek do Na níže můžete vidět, co máme zatím ( Přidání menší (vysouvací) pozadí za obrazem, použijeme další pseudo-element, Vytváříme další proměnnou CSS, šířka se vypočte jako výška se vypočte jako S CSS filtr Tady je screenshot demo (zatím) My přidat Jako my již přidán Níže vidíte závěrečné demo. Pokud se zobrazí
--bgc
a --ztlumit
pro barva pozadí a rozměry z .foo
kontejneru. V příkladu jsem použil stejnou hodnotu pro šířku a výšku získat čtverec-tvarovaný box, vytvořit oddělené proměnné pro výšku a šířku, pokud chcete obdélníkový.poloha: relativní
pravidlo .foo
, takže jeho pseudo-elementy, pro které budeme používat odhalení obrazu, může být absolutně umístěna (viz níže), a tudíž na sebe. .foo --bgc: # FFCC03; --dim: 300px; width: var (- dim); výška: var (- dim); barva pozadí: var (- bgc); poloha: relativní;
obsah
vlastnictví k oběma pseudoprvkům, .foo :: předtím
a .foo :: po
, aby byly správně vykresleny. .foo :: before, .foo :: after content: "; pozice: absolutní; vlevo: 0; horní: 0;
.foo
element, jeho dva pseudo-elementy, .foo :: předtím
, .foo :: po
, a jejich :vznášet se
pseudo-třídy dostat přechod
vlastnictví to bude přidejte snadný přechod k nim po dobu 500 milisekund (půl sekundy). .foo, .foo: hover, .foo :: before, .foo :: after, .foo: hover :: before, .foo: hover :: after transition: transform 500ms easy-in;
2. Přidejte obrázek
.foo :: předtím
pseudo-element jako obrázek na pozadí, a velikost, aby pokryla celý pseudo-prvek s šířka
a výška
vlastnosti. My stoh to přímo pod .foo
živel za použití z-index: -1
pravidlo. .foo :: before width: 100%; výška: 100%; pozadí: url (camel.png) střed / kryt; z-index: -1;
centrum
klíčové slovo vycentruje obraz, zatímco Pokrýt
klíčové slovo změní velikost obrázku na pokrývají celý prvek při zachování poměru stran. z-index
je odstraněn z .foo :: předtím
tak, aby bylo vidět):3. Přidejte vysunuté pozadí
.foo :: po
.--b
, pro šířka okraje. Dáme tři průhledné okraje na ::po
pseudoprvek: horní, pravý a dolní. .foo :: after --b: 20px; width: calc (100% - var (- b)); výška: calc (100% - calc (var (- b) * 2)); hranice: var (- b) pevná průhledná; border-left: žádný; box-shadow: inset 0 var (- dim) 0 var (- bgc); filtr: jas (.8); z-index: -2;
calc (100% - var - b))
vrátí celková šířka .foo
mínus celková šířka jeho vodorovných hranic (pouze pravý okraj, protože není ponechán okraj).calc (100% - calc (var (- b) * 2))
vrátí celková výška .foo
mínus celková šířka svislých hran (horní a dolní hranice).box-stín
majetku, také přidat horizontální stín velikosti stejné jako .foo
(který je var (- dim)
).jas (.8)
ztmaví barvu pozadí trochu, a konečně z-index: -2
pravidlo umístí ::po
pseudo-prvek pod ním ::před
obsahující obrázek.z-index
odstraněny z obou pseudoprvků, takže je lze vidět):4. Přidejte transformaci
přeměnit
vlastnictví na dva pseudo-elementy, takže když uživatel přejde .foo
, oba pseudo-elementy jsou vodorovně.přechod
na všechny prvky na konci kroku 1 je pohyb obrazu a jeho pozadí oba animovaní. .foo: hover :: before, .foo: hover :: after transform: translateX (100%);
Bonus: Volitelná marže
.foo
vedle ostatních prvků na stránce a chcete, aby tyto další prvky Uhni když se obraz a jeho pozadí vysune, pak přidejte pravý okraj stejné šířky jako šířka .foo
na .foo: vznášet se
živel. .foo: hover pravý okraj: var (- dim);