Homepage » Coding » Crea un effetto Reveal immagine solo CSS con bordi trasparenti

    Crea un effetto Reveal immagine solo CSS con bordi trasparenti

    UN L'immagine solo CSS rivela l'effetto può essere risolto in diversi modi. In realtà è abbastanza facile codificare un design in cui il l'immagine risalta (è sorvolato da) il suo solido background -hai appena posiziona un'immagine su un elemento più piccolo con uno sfondo solido.

    Puoi ottenere lo stesso risultato se lo usi confini trasparenti, dove tieni il la dimensione dell'elemento di sfondo è la stessa come quello del primo piano e aggiungere bordi trasparenti per crea uno spazio vuoto per il primo piano di traboccare in.

    Ci sono alcuni vantaggi nell'utilizzo del secondo metodo. Dal momento che sono i bordi trasparenti a fornire l'area in cui il foreground deve essere traboccato, possiamo farlo controlla la direzione del trabocco tra i bordi sinistro, destro, superiore e inferiore. Inoltre, avendo le stesse dimensioni sia per il primo piano che per lo sfondo rende più facile spostare entrambi gli elementi contemporaneamente attraverso la pagina.

    In poche parole, vedremo come crea un effetto di rivelazione di immagine solo CSS usare un più piccolo sfondo solido con un immagine in primo piano con bordi trasparenti. Puoi controllare il demo finale sotto.

    1. Creare il codice iniziale

    HTML-saggio, solo uno

    è obbligatorio:

     

    Nel CSS, usiamo due variabili CSS, --BGC e --offuscare per il colore di sfondo e il dimensioni del .foo contenitore, rispettivamente. Nell'esempio, ho usato il stesso valore per la larghezza e l'altezza per ottenere una scatola quadrata, creare variabili separate per l'altezza e la larghezza se vuoi un rettangolo.

    Aggiungiamo anche il position: relative regola a .foo, in modo che i suoi pseudo-elementi, che useremo per rivelando l'immagine, può essere assolutamente posizionato (vedi sotto), e quindi impilati l'uno sull'altro.

     .foo --bgc: # FFCC03; --dim: 300px; larghezza: var (- dim); altezza: var (- dim); background-color: var (- bgc); posizione: relativa;  

    Noi aggiungi un vuoto soddisfare proprietà ad entrambi gli pseudo-elementi, .foo :: prima e .foo :: dopo, per ottenerli correttamente resi.

     .foo :: before, .foo :: after content: "; position: absolute; left: 0; top: 0; 

    Il .foo elemento, i suoi due pseudo-elementi, .foo :: prima, .foo :: dopo, e il loro : hover pseudo-classi prendi un transizione proprietà quello sarà aggiungi una transizione easy-in a loro per 500 millisecondi (mezzo secondo).

     .foo, .foo: hover, .foo :: before, .foo :: after, .foo: hover :: before, .foo: hover :: after transition: transform 500ms ease-in;  

    2. Aggiungi l'immagine

    Aggiungiamo l'immagine al .foo :: prima pseudo-elemento come immagine di sfondo, e dimensionalo per coprire l'intero pseudo-elemento con il larghezza e altezza proprietà. Noi impilarlo proprio sotto il .foo elemento usando il z-index: -1 regola.

     .foo :: before width: 100%; altezza: 100%; background: url (camel.png) centro / copertina; z-index: -1;  

    Il centro parola chiave centra l'immagine, mentre il copertina parola chiave ridimensiona l'immagine coprire l'intero elemento pur mantenendo le proporzioni.

    Sul screenshot qui sotto puoi vedere quello che abbiamo finora (z-index viene rimosso da .foo :: prima in modo che possa essere visto):

    3. Aggiungi lo sfondo slide-out

    Per aggiungere il più piccolo (slide-out) dietro l'immagine, useremo l'altro pseudo-elemento, .foo :: dopo.

    Creiamo un'altra variabile CSS, --B, per il larghezza del bordo. Noi diamo tre bordi trasparenti al ::dopo pseudo-elemento: in alto, a destra e in basso.

     .foo :: after --b: 20px; larghezza: calc (100% - var (- b)); altezza: calc (100% - calc (var (- b) * 2)); border: var (- b) solido trasparente; border-left: none; box-shadow: inset 0 var (- dim) 0 var (- bgc); filtro: luminosità (.8); z-index: -2;  

    Il larghezza è calcolato come calc (100% - var - b)) che ritorna la larghezza totale di .foo meno la larghezza totale dei suoi bordi orizzontali (solo bordo destro, dato che non c'è il bordo sinistro).

    Il altezza è calcolato come calc (100% - calc (var (- b) * 2)) che ritorna l'altezza totale di .foo meno la larghezza totale dei suoi bordi verticali (bordi superiore e inferiore).

    Con il box-ombra proprietà, anche noi aggiungi un'ombreggiatura orizzontale della dimensione uguale a .foo (che è var (- dim)).

    Un filtro CSS di luminosità (.8) scurisce il colore di sfondo un po ', e infine, il z-index: -2 regola pone il ::dopo pseudo-elemento sotto ::prima che contiene l'immagine.

    Ecco il screenshot della demo reso finora (con z-index rimosso da entrambi gli pseudo-elementi in modo che possano essere visti):

    4. Aggiungi la trasformazione

    Noi Aggiungi il trasformare proprietà ai due pseudo-elementi, quindi quando l'utente passa sopra .foo, entrambi gli pseudo-elementi sono spostato orizzontalmente.

    Come noi già aggiunto il transizione proprietà a tutti gli elementi alla fine del passaggio 1, il movimento dell'immagine e il suo sfondo sono entrambi animati.

     .foo: hover :: before, .foo: hover :: after transform: translateX (100%);  

    Sotto, puoi vedere il demo finale.

    Bonus: margine opzionale

    Se si visualizza .foo accanto ad altri elementi su una pagina e desideri questi altri elementi vai via quando l'immagine e il suo sfondo scivolano fuori, allora aggiungere un margine destro della stessa larghezza di quello di .foo al .pippo: hover elemento.

     .foo: hover margin-right: var (- dim);