Hjemmeside » Coding » Hvordan CSS-Only Overlays Effect med Box-Shadow

    Hvordan CSS-Only Overlays Effect med Box-Shadow

    Innhold overlegg er en fremtredende del av moderne webdesign. De hjelper deg skjul et element på en nettside og senere - med brukerens godkjenning - avslør det, og vise ekstra informasjon eller kontroller, for eksempel knapper bak den.

    Et typisk overlegg er halvgjennomsiktig, med en solid bakgrunnsfarge (vanligvis svart), og det er litt tekst eller knapper på det for brukere å se eller samhandle med. Etter samspillet (klikk eller svever) oppstår overlegget blir fjernet og avslører innholdet under det.

    I denne artikkelen vil vi se på hvordan legg til farget overlegg til bilder ved å bruke ren CSS. Du kan se det endelige resultatet på demoen nedenfor. Beveg bildene slik at overleggene avslører pokemonene. Selv om dette innlegget diskuterer bilder, kan teknikken som presenteres sikkert brukes på andre innholdstyper (for eksempel tekstblokker).

    Unngå å legge til ekstra HTML-elementer

    Overlegg er ofte opprettet av posisjonering av et ekstra HTML-element med en opasitet verdi mindre enn 1 rett over elementet som skal dekkes. Problemet er at denne teknikken innebærer bruk av en ekstra element (eller pseudo-element) for overlegget.

    Hvis du ikke er en pedantisk i HTML-størrelse, er det sannsynligvis ikke en stor avtale å ha et ekstra element for overlegg, da det mest sannsynlig vil det ikke beskatte båndbredden til noe nettverk så mye. Men å ha skille stilregler for elementer og overleggene deres, skader CSS lesbarhet og vedlikehold.

    For å holde koden din i orden, og ikke å ødelegge HTML-oversikten, er det et bedre valg å bruke en CSS-eneste løsning.

    Opprett overlegg med box-shadow

    Så hvordan kan du faktisk lage et CSS-bare overlegg? Med hjelp av box-shadow CSS eiendom. Boksen-skyggen er perfekt for denne jobben, siden det er et overlegg, men en mørk skygge kastet over et element?

    Boksen-skyggen har en eiendomsverdi kalt innfelt, som forårsaker at skyggen vises innover av rammen av boksen.

    En innsatsboksskygge med en skyggeformat halv eller mer enn halvparten av elementets bredde og høyde, skaper en skygge som dekker hel element.

     .boks bredde: 200px; høyde: 200px; boks-skygge: grønn 0 0 0 100px innskudd;  
    Box skygge som dekker hele elementet

    Siden overlegg vanligvis ha litt gjennomsiktighet, du må legge den til bokseskyggen også. Dette kan gjøres ved å bruke RGBA () funksjon for skyggefarge.

    De rgb del av rgba, representerer, rød, grønn og blå fargekanalverdier, mens en representerer alfakanal, som er ansvarlig for åpenhet.

    For alfakanalen oppretter en verdi på 1 en ugjennomsiktig farge, mens 0 skaper en helt gjennomsiktig farge.

    Ved å tildele en verdi mellom 0 og 1 til alfakanalen til rgba-fargeværdien i bokseskyggen, kan du Lag et halvtransparent overlegg.

    Opprett koden for demonstrasjonen

    Vår demonstrasjon vil vise bilder og navn på forskjellige pokemoner. Her lager vi bare koden for Bulbasaur, den første pokemonen i demoen, som de andre er gjort på samme måte (på Codepen kan du sjekke ut koden for dem også).

    HTML

    For HTML, trenger vi bare å lage en boks som vi vil legge til alt annet med CSS.

    CSS

    I CSS nedenfor, den .pokemon elementene viser pokemonbildene, og .pokemon :: etter pseudo-elementer bærer navnet pokemon.

    Siden box-shadow eiendom kan ta flere verdier for å gjengi flere skygger, foruten overleggeskyggen, la jeg også til andre gråskygger til .pokemon og .pokemon: hover elementer for estetikk.

     / * pokemon bilder * / .pokemon width: 200px; høyde: 200px; / * senterinnhold ved hjelp av flexboks * / display: flex; begrunn-innhold: center; justeringselementer: senter; / * overlegg * / boks-skygge: 0 0 0 100px innskudd, 0 0 5px grå; / * sveveovergang * / overgang: bokseskygge 1s;  / * pokemonnavn * / .pokemon :: etter bredde: 80%; høyde: 80%; skjerm: blokk; font: 16pt 'bookman old syle'; farge: hvit; grense: 2px solid; tekstjustering: center; / * senterinnhold ved hjelp av flexboks * / display: flex; begrunn-innhold: center; justeringselementer: senter; / * sveve ut overgang * / overgang: opacity 1s .5s;  / * avslør pokemon bilde på hover * / .pokemon: hover transition: box-shadow 1s; boks-skygge: 0 0 0 5px innsats, 0 0 5px grå, 0 0 10px gråinnsats;  / * skjul pokemonnavn på hover * / .pokemon: hover :: etter overgang: opacity .5s; opasitet: 0;  

    Når .pokemon elementene er svevet, deres bokseskygge må endres for å avsløre bildet bak.

    Du kan se at .pokemon: hover velgeren får en ny bokseskygge som fjerner overlegget, og .pokemon: hover :: etter Selector skjuler navnet på pokemonet ved å bruke opasitet eiendom.

    Du har kanskje også lagt merke til fravær av fargeverdier i overleggskassen-skyggene i .pokemon og .pokemon: hover stil regler. Overlay box-skyggen fargen på de enkelte pokemons må spesifiseres i sine egne separate regler, som de er forskjellige fra hverandre.

    Som box-shadow har ingen longhand eiendom, Du kan ikke sette sin skyggefarge individuelt med noe som helst, box-shadow-farge; i stedet - vi bruker farge eiendom.

    Som standard, når du gir en verdi for farge eiendom, den verdien er søkt på grensen, omrisset og boksskyggefargene også. Så, du kan bare bruke farge eiendom for å legge til farge i bokseskygge.

     #bulbasaur bakgrunnsbilde: url (https://assets.hongkiat.com/uploads/css-only-overlays-box-shadow/bulbasaur.jpg); / * fargeverdi brukt for bokseskyggefarge * / farge: rgba (71, 121, 94, 0,9);  #bulbasaur :: etter / * pokemon navn * / innhold: 'Bulbasaur';  

    Fargene på overleggeskyggen bruker ovennevnte RGBA () Fungerer med 0,9 for alfa-verdi for å gjøre overlegget gjennomsiktig.

    Bortsett fra fargen på overleggskassen-skyggen, legger CSS-tillegget også de reglene som er individuelle for hver pokemon - bildet som bakgrunnsbilde og navnet.

    Og det er alt, vi er klare med vårt CSS-kun-fargede bildeoverlegg. Se koden til alle pokemoner i pennen nedenfor.