Homepage » Coding » Come effetto Sovrapponi solo CSS con Box-Shadow

    Come effetto Sovrapponi solo CSS con Box-Shadow

    Sovrapposizioni di contenuti sono una parte importante del web design moderno. Ti aiutano nascondi un elemento su una pagina Web e in seguito - con l'approvazione dell'utente - rivelalo, e visualizzare informazioni aggiuntive o controlli, come i pulsanti dietro di esso.

    Una sovrapposizione tipica è semi trasparente, con un colore di sfondo solido (solitamente nero), e c'è del testo o dei pulsanti su cui gli utenti possono vedere o interagire. Dopo l'interazione (cliccando o passandoci sopra), l'overlay viene rimosso e rivela il contenuto sotto.

    In questo articolo, daremo un'occhiata a come aggiungi una sovrapposizione colorata alle immagini usando puro CSS. Puoi vedere il risultato finale nella demo qui sotto. Passa il mouse sulle immagini per fare in modo che le sovrapposizioni rivelino i Pokemon. Sebbene questo post discuti le immagini, la tecnica che presenta può essere tranquillamente applicata ad altri tipi di contenuto (come blocchi di testo).

    Evita di aggiungere elementi HTML aggiuntivi

    Gli overlay sono spesso creati da posizionare un elemento HTML extra con un opacità valore inferiore a 1 proprio sopra l'elemento da coprire. Il problema è che questa tecnica implica l'uso di un extra elemento (o pseudo-elemento) per l'overlay.

    Se non sei un pedante di dimensioni HTML, avere un elemento extra per la sovrapposizione non è probabilmente un grosso problema, poiché molto probabilmente non tassherà la larghezza di banda di una rete tanto. Tuttavia avendo separato le regole di stile per gli elementi e le loro sovrapposizioni danneggiano ancora la leggibilità e la manutenibilità dei CSS.

    Per mantenere il tuo codice in ordine, e non confondere il tuo profilo HTML, è una scelta migliore per usare una soluzione solo CSS.

    Crea sovrapposizione con box-ombra

    Quindi, come si può effettivamente creare un overlay solo CSS? Con l'aiuto di box-ombra Proprietà CSS. Il box-shadow è perfetto per questo lavoro, dal momento che cos'è un overlay ma un'ombra scura proiettata su un elemento?

    Il box-shadow ha un valore di proprietà chiamato inserire, che fa apparire l'ombra verso l'interno della cornice della scatola.

    Un'ombra di riquadri inserita con una dimensione dell'ombra pari a metà o più della metà della larghezza e dell'altezza dell'elemento crea un'ombra copre il intero elemento.

     .box larghezza: 200px; altezza: 200 px; box-shadow: verde 0 0 0 100 pixel inset;  
    Box shadow che copre l'intero elemento

    Poiché si sovrappone di solito avere una certa trasparenza, è necessario aggiungerlo all'ombra della casella. Questo può essere fatto usando il RGBA () funzione per il colore dell'ombra.

    Il rgb porzione di rgba, rappresenta, rosso, verde e blu i valori dei canali di colore, mentre un rappresenta il canale alfa, che è responsabile della trasparenza.

    Per il canale alfa, il valore 1 crea un colore opaco, mentre 0 crea a colore completamente trasparente.

    Assegnando un valore compreso tra 0 e 1 al canale alfa del valore del colore rgba dell'ombra della casella, è possibile creare una sovrapposizione semitrasparente.

    Crea il codice per la demo

    La nostra demo mostrerà le immagini e i nomi di diversi Pokemon. Qui creeremo solo il codice per Bulbasaur, il primo pokemon nella demo, dato che gli altri sono fatti allo stesso modo (su Codepen puoi anche controllare il codice per loro).

    HTML

    Per l'HTML, abbiamo solo bisogno di creare una scatola a cui aggiungeremo tutto il resto con i CSS.

    CSS

    Nel CSS qui sotto, il .pokemon elementi mostrano le immagini pokemon e il .pokemon :: dopo gli pseudo-elementi portano il nome del Pokemon.

    Dal momento che il box-ombra proprietà può assumere più valori in modo da rendere più ombre, oltre all'ombra di sovrapposizione, ho aggiunto anche altre ombre di grigio al .pokemon e .pokemon: hover elementi per l'estetica.

     / * pokemon pictures * / .pokemon width: 200px; altezza: 200 px; / * contenuto centrale tramite box flessibile * / display: flex; justify-content: center; align-items: center; / * overlay * / box-shadow: 0 0 0 100 px inset, 0 0 5px grigio; / * transizione di passaggio del mouse * / transizione: box-shadow 1s;  / * nomi pokemon * / .pokemon :: after width: 80%; altezza: 80%; blocco di visualizzazione; font: 16pt 'bookman old syle'; colore bianco; bordo: 2 px solido; allineamento del testo: centro; / * contenuto centrale tramite box flessibile * / display: flex; justify-content: center; align-items: center; / * transizione di passaggio del mouse * / transizione: opacità 1s .5s;  / * mostra l'immagine del pokemon su hover * / .pokemon: hover transition: box-shadow 1s; box-shadow: 0 0 0 5px inserto, 0 0 5px grigio, 0 0 10px grigio inserito;  / * nascondi il nome del pokemon su hover * / .pokemon: hover :: after transition: opacity .5s; opacità: 0;  

    Quando il .pokemon gli elementi sono aleggiati, la loro ombra di scatola deve cambiare per rivelare l'immagine dietro.

    Puoi vedere che il .pokemon: hover il selettore riceve una nuova casella-ombra che rimuove la sovrapposizione e il .pokemon: hover :: dopo il selettore nasconde il nome del Pokemon usando il opacità proprietà.

    Potresti aver notato anche il assenza di valori cromatici nella casella di sovrapposizione ombre in .pokemon e .pokemon: hover regole di stile. È necessario specificare la casella di sovrapposizione colore dell'ombra dei singoli Pokemon nelle loro regole di stile separate, poiché sono tutti diversi l'uno dall'altro.

    Come box-ombra non ha alcuna proprietà di longhand, non puoi impostare il suo colore dell'ombra individualmente con qualcosa di simile, box-ombra-colore; invece - usiamo il colore proprietà.

    Per impostazione predefinita, quando si assegna un valore per colore proprietà, quel valore è applicato per il bordo, il contorno e i colori dell'ombra della scatola anche. Quindi, puoi semplicemente usare il colore proprietà per aggiungere colore a box-shadow.

     #bulbasaur background-image: url (https://assets.hongkiat.com/uploads/css-only-overlays-box-shadow/bulbasaur.jpg); / * valore del colore utilizzato per il colore dell'ombra del riquadro * / colore: rgba (71, 121, 94, 0,9);  #bulbasaur :: after / * nome pokemon * / content: 'Bulbasaur';  

    Il colore dell'ombra di sovrapposizione utilizza il suddetto RGBA () funzione con 0.9 per il valore alfa per rendere trasparente l'overlay.

    Oltre al colore dell'overlay box-shadow, il CSS sopra riportato aggiunge anche le regole che sono individuali per ogni Pokemon - l'immagine come immagine di sfondo e il nome.

    E questo è tutto, siamo pronti con la nostra sovrapposizione di immagini colorate solo CSS. Dai un'occhiata al codice di tutti i Pokemon nella penna qui sotto.