Početna » šifriranje » Stvorite efekt slike samo za CSS s transparentnim granicama

    Stvorite efekt slike samo za CSS s transparentnim granicama

    Učinak otkrivanja slike samo za CSS može se riješiti na različite načine. To je zapravo vrlo lako kodirati dizajn u kojem slika se izdvaja (prepunio je) njegova čvrsta pozadina -ti samo stavite sliku preko manjeg elementa s čvrstom pozadinom.

    Isti rezultat možete dobiti ako koristite transparentne granice, gdje zadržavate veličina elementa pozadine je ista kao u prvom planu i dodajte prozirne granice kako biste stvoriti prazan prostor kako bi se u prvi plan prelilo.

    Tamo su neke prednosti u korištenju potonje metode. Budući da se radi o transparentnim granicama koje pružaju područje u koje će se prednji plan preliti, možemo kontrolirajte smjer preljeva između lijeve, desne, gornje i donje granice. Također, imaju istu veličinu i za prednji i za pozadinu olakšava istovremeno pomicanje oba elementa preko stranice.

    Ukratko, vidjet ćemo kako stvorite CSS-efekt samo za prikaz slike pomoću a manje čvrste pozadine s slika u prvom planu koja ima prozirne granice. Možete pogledati konačni demo ispod.

    1. Stvorite početni kod

    HTML-mudar, samo jedan

    obavezno:

     

    U CSS-u koristimo dvije CSS varijable, --BGC i --zamagliti za boja pozadine i dimenzije od .foo u spremniku. U primjeru sam koristio iste vrijednosti za širinu i visinu da bi dobili kvadratnu kutiju, napravite zasebne varijable za visinu i širinu ako želite pravokutnik.

    Također dodajemo Položaj: relativna pravilo .foo, tako da ćemo koristiti njegove pseudo-elemente otkrivajući sliku, Može biti apsolutno pozicioniran (vidi dolje), i time naslagane jedna na drugu.

     .foo --bgc: # FFCC03; --dim: 300px; width: var (- dim); visina: var (- dim); pozadinska boja: var (- bgc); pozicija: relativna;  

    Mi dodajte prazno sadržaj svojstvo na oba pseudo-elementa, .foo :: prije i .foo :: poslije, kako bi ih ispravno prikazali.

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

    .foo element, njegova dva pseudo-elementa, .foo :: prije, .foo :: poslije, i njihovi : hover pseudo-klase dobiti tranzicija svojstvo to će dodavanje prijelaza jednostavnosti za njih 500 milisekundi (pola sekunde).

     .foo, .foo: hover, .foo :: before, .foo :: after, .foo: hover :: before, .foo: hover :: after transition: transformacija 500ms;  

    2. Dodajte sliku

    Dodajmo sliku u .foo :: prije pseudo elemenata kao pozadinsku sliku, i veličinu da pokrije cijeli pseudo-element s širina i visina svojstva. Mi stavite ga odmah ispod .foo element koristiti z-indeks: -1 Pravilo.

     .foo :: before width: 100%; visina: 100%; pozadina: url (camel.png) centar / naslovnica; z-indeks: -1;  

    centar ključna riječ centrira sliku, dok pokriti ključna riječ mijenja sliku pokriti cijeli element zadržavajući njegov omjer.

    Na screenshot ispod možete vidjeti što smo do sada imali (z-index je uklonjen iz .foo :: prije tako da se može vidjeti):

    3. Dodajte pozadinu koja se pomiče

    Za dodavanje pozadina iza slike, koristit ćemo drugi pseudo-element, .foo :: poslije.

    Stvaramo drugu CSS varijablu, --b, za širina obruba. Dajemo tri transparentne granice prema ::nakon pseudo elemenata: gore, desno i dolje.

     .foo :: after --b: 20px; width: calc (100% - var (- b)); visina: calc (100% - calc (var (- b) * 2)); border: var (- b) solid transparent; granica lijevo: nema; box-shadow: umetak 0 var (- dim) 0 var (- bgc); filter: svjetlina (.8); z-indeks: -2;  

    širina izračunava se kao calc (100% - var - b)) koji se vraća ukupna širina .foo minus ukupna širina njegovih horizontalnih granica (samo desna granica, budući da nema lijeve granice).

    visina izračunava se kao calc (100% - calc (var (- b) * 2)) koji se vraća ukupna visina .foo minus ukupna širina njegovih vertikalnih granica (gornja i donja granica).

    Sa kutija-sjena vlasništvo, također dodajte vodoravnu umetnutu sjenu iste veličine kao .foo (koji je var (- dim)).

    CSS filter od svjetline (a8) zamračuje boju pozadine malo, i konačno, z-indeks: -2 Pravilo mjesta ::nakon pseudo-element ispod ::prije koja sadrži sliku.

    Evo ga screenshot demo do sada (s z-index uklonjeno iz oba pseudo-elementa tako da se mogu vidjeti):

    4. Dodajte transformaciju

    Mi dodajte transformirati svojstvo na dva pseudo-elementa, tako da kada korisnik lebdi iznad .foo, oba su pseudoelementa premještena vodoravno.

    Kao i mi već je dodao tranzicija vlasništvo svih elemenata na kraju koraka 1 kretanje slike i njezina pozadina su obje animirane.

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

    Dolje možete vidjeti konačni demo.

    Bonus: Neobavezna margina

    Ako prikažete .foo pored drugih elemenata na stranici i želite da ti drugi elementi budu Odmakni se kada slika i njezina pozadina iskoče, tada dodajte desnu marginu iste širine kao i .foo prema .foo: hover element.

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