Główna » Kodowanie » Jak nakładać efekt tylko na CSS za pomocą Box-Shadow

    Jak nakładać efekt tylko na CSS za pomocą Box-Shadow

    Nakładki zawartości są ważną częścią nowoczesnego projektowania stron internetowych. Pomagają ci ukryj element na stronie internetowej, a później - za zgodą użytkownika - ujawnij to, i wyświetlać dodatkowe informacje lub elementy sterujące, takie jak przyciski za nim.

    Typowa nakładka to półprzezroczysty, z jednolity kolor tła (zazwyczaj czarny), a na nim jest tekst lub przyciski, które użytkownicy mogą zobaczyć lub z którymi mogą się kontaktować. Po interakcji (kliknięcie lub zawisnięcie) nakładka zostaje usunięty i ujawnia treść pod nim.

    W tym artykule przyjrzymy się, jak to zrobić dodaj kolorową nakładkę do obrazów używając czystego CSS. Możesz zobaczyć wynik końcowy na poniższej wersji demonstracyjnej. Najedź kursorem, aby nakładki ujawniły pokemony. Chociaż ten post omawia obrazy, technika, którą prezentuje, może być bezpiecznie zastosowana również do innych typów treści (takich jak bloki tekstu).

    Unikaj dodawania dodatkowych elementów HTML

    Nakładki są często tworzone przez pozycjonowanie dodatkowego elementu HTML z nieprzezroczystość wartość mniejsza niż 1 tuż nad elementem, który ma być zakryty. Problem polega na tym, że ta technika wymaga użycia dodatkowy element (lub pseudoelement) dla nakładki.

    Jeśli nie jesteś pedantycznym rozmiarem HTML, posiadanie dodatkowego elementu do nakładki prawdopodobnie nie jest wielkim problemem, ponieważ najprawdopodobniej nie obciąży tak bardzo przepustowości żadnej sieci. Jednak mając oddzielny reguły stylów dla elementów i ich nakładek nadal szkodzą czytelności CSS i łatwości konserwacji.

    Aby utrzymać swój kod w porządku, a nie zepsuć konspektu HTML, lepiej jest użyć rozwiązania opartego tylko na CSS.

    Utwórz nakładkę za pomocą box-shadow

    Jak więc można utworzyć nakładkę tylko dla CSS? Z pomocą box-shadow Właściwość CSS. Box-shadow jest idealny do tego zadania, ponieważ to, co jest nakładką, ale ciemny cień rzucony na element?

    Pole-cień ma wartość właściwości o nazwie wstawka, co powoduje pojawienie się cienia do wewnątrz ramy pudełka.

    Wstawione pole-cień z połową lub więcej niż połową szerokości i wysokości elementu tworzy cień obejmuje Cały element.

     .box szerokość: 200px; wysokość: 200px; box-shadow: zielony 0 0 0 100px wstawka;  
    Cień skrzynki pokrywający cały element

    Od zwykle nakładek mieć pewną przejrzystość, musisz także dodać go do cienia skrzynki. Można to zrobić za pomocą rgba () funkcja koloru cienia.

    The rgb część wartości kanału koloru rgba, reprezentuje kolor czerwony, zielony i niebieski za reprezentuje kanał alfa, który jest odpowiedzialny za przejrzystość.

    Dla kanału alfa wartość 1 tworzy nieprzezroczysty kolor, podczas gdy 0 tworzy a w pełni przezroczysty kolor.

    Przez przypisanie wartości z zakresu od 0 do 1 do kanału alfa wartości koloru rgba cienia skrzynki można utwórz półprzezroczystą nakładkę.

    Utwórz kod demonstracyjny

    Nasze demo pokaże zdjęcia i nazwy różnych pokemonów. Tutaj utworzymy tylko kod Bulbasaura, pierwszego pokemona w demie, ponieważ pozostałe są w ten sam sposób (na Codepen możesz również sprawdzić kod dla nich).

    HTML

    W przypadku HTML musimy tylko utwórz pudełko do którego dodamy wszystko inne za pomocą CSS.

    CSS

    W poniższym CSS .pokemon elementy wyświetlają obrazy pokemonów i .pokemon :: po pseudoelementy noszą nazwę pokemona.

    Od box-shadow własność może przyjmować wiele wartości w celu renderuj wiele cieni, oprócz cienia nakładki dodałem również inne cienie szarości do .pokemon i .pokemon: hover elementy estetyki.

     / * zdjęcia pokemona * / .pokemon szerokość: 200px; wysokość: 200px; / * treść środkowa przy użyciu flex box * / display: flex; justify-content: center; align-items: center; / * overlay * / box-shadow: 0 0 0 100px wstawka, 0 0 5px szary; / * przejście do najechania * / przejście: box-shadow 1s;  / * nazwy pokemonów * / .pokemon :: after width: 80%; wysokość: 80%; Blok wyświetlacza; czcionka: 16pt „stary styl bukmachera”; kolor biały; border: 2px solid; wyrównywanie tekstu: środek; / * treść środkowa przy użyciu flex box * / display: flex; justify-content: center; align-items: center; / * przesuń kursor * / przejście: krycie 1s .5s;  / * odsłonić obraz pokemona na hover * / .pokemon: hover przejście: box-shadow 1s; box-shadow: 0 0 0 5px wstawka, 0 0 5px szary, 0 0 10px szara wstawka;  / * ukryj nazwę pokemona na hover * / .pokemon: hover :: after przejście: krycie .5s; krycie: 0;  

    Kiedy .pokemon elementy są zawieszone, ich cień pudła musi się zmienić, aby odsłonić obraz z tyłu.

    Widać, że .pokemon: hover selektor otrzymuje nowy shadow-box, który usuwa nakładkę i .pokemon: hover :: after selektor ukrywa nazwę pokemona za pomocą nieprzezroczystość własność.

    Być może zauważyłeś brak wartości kolorów w polu nakładki cienie w .pokemon i .pokemon: hover zasady stylu. Należy określić kolor nakładki-cienia poszczególnych pokemonów we własnych osobnych zasadach stylu, ponieważ wszystkie różnią się od siebie.

    Tak jak box-shadow nie ma żadnych własności długich, nie można ustawić koloru cienia indywidualnie z czymś takim, pudełko-cień-kolor; zamiast tego - używamy kolor własność.

    Domyślnie, gdy podajesz wartość dla kolor właściwość, ta wartość jest stosowane do obramowania, konturu i kolorów pudełka-cienia także. Możesz więc po prostu użyć kolor właściwość, aby dodać kolor do pola-cienia.

     #bulbasaur background-image: url (https://assets.hongkiat.com/uploads/css-only-overlays-box-shadow/bulbasaur.jpg); / * wartość koloru używana w polu koloru cienia * / kolor: rgba (71, 121, 94, 0.9);  #bulbasaur :: after / * nazwa pokemona * / treść: „Bulbasaur”;  

    Kolor cienia nakładki używa wspomnianego powyżej rgba () funkcja z 0.9 dla wartości alfa, aby nakładka była przezroczysta.

    Oprócz koloru nakładki-cienia, powyższy CSS dodaje również reguły, które są indywidualne dla każdego pokemona - obraz jako zdjęcie w tle i imię.

    I to wszystko, jesteśmy gotowi z naszą kolorową nakładką na obraz CSS. Spójrz na kod wszystkich pokemonów w piórze poniżej.