Jak wyróżnić elementy w 2022 roku (najlepsze praktyki)
Opublikowany: 2022-08-23W tym artykule omówimy najlepsze sposoby tworzenia ruchomych elementów markizy w nowoczesnym projektowaniu stron internetowych.
Markiza to nieskończona część tekstu i/lub elementu wizualnego (takiego jak obrazy), która automatycznie przewija się w poziomie.
![obraz-38-9](/uploads/article/41618/YTWnf1FpShHttBo9.png)
Pomimo tego, że oficjalny element HTML <marquee> jest deprecjonowany i zdecydowanie zniechęcany do używania, ogólny efekt przewijania, ciągłe elementy używane do urozmaicenia strony internetowej są żywe i dobrze w 2022 roku, pojawiając się w wielu modnych witrynach.
Niektórzy nadal używają elementu Marquee, który jest nadal obsługiwany przez wszystkie przeglądarki, mimo że (ponownie) jest zniechęcany do używania. Oto przykład klasycznego „wygaszacza ekranu” z odbijającym się DVD, utworzonego za pomocą markizy HTML.
To nie jest sprytne, ale nadal działa. Powody, dla których należy unikać stosowania tego pierwiastka w 2022 roku, są jasne:
- To nie jest naprawdę dostępne
- Jest w 100% zdeprecjonowany, a wsparcie dla niego może (i prawdopodobnie w pewnym momencie zostanie) usunięte
- To nigdy nie był prawdziwy element HTML (nie był częścią żadnego standardu)
![HTML Marquee jest przestarzały - nie używaj go.](/uploads/article/41618/xm2PjnPLOVLWdVY6.png)
Jednak zawsze byliśmy fanami namiotów imprezowych w Isotropic.
Spójrz na wiele modnych witryn Awwwards, a zobaczysz tekst, obrazy lub kombinację obu poruszających się w poziomie, na przykład:
![](/uploads/article/41618/mx2zNJkFczNSFnTa.png)
![](/uploads/article/41618/mx2zNJkFczNSFnTa.png)
![](/uploads/article/41618/mx2zNJkFczNSFnTa.png)
![](/uploads/article/41618/mx2zNJkFczNSFnTa.png)
![](/uploads/article/41618/mx2zNJkFczNSFnTa.png)
To jest namiot demonstracyjny
![](/uploads/article/41618/mx2zNJkFczNSFnTa.png)
![](/uploads/article/41618/mx2zNJkFczNSFnTa.png)
![](/uploads/article/41618/mx2zNJkFczNSFnTa.png)
![](/uploads/article/41618/mx2zNJkFczNSFnTa.png)
![](/uploads/article/41618/mx2zNJkFczNSFnTa.png)
Oczywiście nigdy nie jest dobrym pomysłem umieszczanie informacji o znaczeniu krytycznym dla misji w przewijanych lub animowanych sekcjach. Ale w przypadku czegoś takiego jak powyższy przykład wygląda fajnie, wyróżnia witrynę i sprawia, że jest niezapomniana. Używaj go mądrze i z umiarem.
Markizy są tak fajne, że opublikowaliśmy nawet przydatne narzędzie, które automatycznie wygeneruje sekcję przewijanego tekstu w stylu „ticker” za pomocą cieni CSS. Fajnie, ale myślę, że podejście omówione w tym artykule jest jeszcze lepsze.
Kod do stworzenia demonstracji markizy pochodzi z tego CodePen przez Ryana Mulligana, co jest (prawdopodobnie) najlepszym sposobem na uzyskanie efektu markizy w 2022 roku. Pisze również o tym kodzie na swoim blogu, https://ryanmulligan.dev/ blog/css-markiza.
Jest dostępny (obsługuje preferowane ruchy), nieskończony, pozwala na dowolny typ elementu html i jest lekki i łatwy do zaimplementowania.
Jest również wykonany w 100% z CSS i bez JS.
<div class="marquee"> <div class="marquee__group"> <img src='https://images.unsplash.com/photo-1548199973-03cce0bbc87b?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHx=Mrq2&baltHx8f>'' <img src='https://images.unsplash.com/photo-1583511666445-775f1f2116f5?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8&08fHx3.2x8fH> <img src='https://images.unsplash.com/photo-1586917383423-c25e88ac05ce?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHix&NQ280fHx> <img src='https://images.unsplash.com/photo-1560743173-567a3b5658b1?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHQx&NQ280fHx> <img src='https://images.unsplash.com/photo-1603232644140-bb47da511b92?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHQx4M&Maltk0=1 </div> <div aria-hidden="true" class="marquee__group"> <img src='https://images.unsplash.com/photo-1548199973-03cce0bbc87b?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHx=Mrq2&baltHx8f>'' <img src='https://images.unsplash.com/photo-1583511666445-775f1f2116f5?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8&08fHx3.2x8fH> <img src='https://images.unsplash.com/photo-1586917383423-c25e88ac05ce?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHix&NQ280fHx> <img src='https://images.unsplash.com/photo-1560743173-567a3b5658b1?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHQx&NQ280fHx> <img src='https://images.unsplash.com/photo-1603232644140-bb47da511b92?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHQx4M&Maltk0=1 </div> </div> <div class="marquee marquee--borders"> <div class="marquee__group"> <p>Psy Unsplash</p> <p aria-hidden="true">Psy Unsplash</p> <p aria-hidden="true">Psy Unsplash</p> </div> <div aria-hidden="true" class="marquee__group"> <p>Psy Unsplash</p> <p>Psy Unsplash</p> <p>Psy Unsplash</p> </div> </div> <div class="marquee marquee--reverse"> <div class="marquee__group"> <img src='https://images.unsplash.com/photo-1546421845-6471bdcf3edf?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHQqx4M&Maltk0=2.1 <img src='https://images.unsplash.com/photo-1518378188025-22bd89516ee2?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8f8f&x8fHx480xMNT-1 <img src='https://images.unsplash.com/photo-1571772805064-207c8435df79?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHQx4M&rg2Ntk0> <img src='https://images.unsplash.com/photo-1602067340370-bdcebe8d1930?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8=8fMfHx2TM8fH> <img src='https://images.unsplash.com/photo-1508948956644-0017e845d797?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8f=8fHxyTM8fH> </div> <div aria-hidden="true" class="marquee__group"> <img src='https://images.unsplash.com/photo-1546421845-6471bdcf3edf?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHQqx4M&Maltk0=2.1 <img src='https://images.unsplash.com/photo-1518378188025-22bd89516ee2?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8f8f&x8fHx480xMNT-1 <img src='https://images.unsplash.com/photo-1571772805064-207c8435df79?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8fHQx4M&rg2Ntk0> <img src='https://images.unsplash.com/photo-1602067340370-bdcebe8d1930?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8=8fMfHx2TM8fH> <img src='https://images.unsplash.com/photo-1508948956644-0017e845d797?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwzMjM4NDZ8MHwxfHJhbmRvbXx8f=8fHxyTM8fH> </div> </div>
@import url("https://fonts.googleapis.com/css2?family=Corben:wght@700&display=swap"); * { rozmiar pudełka: obramowanie-pudełko; } ciało { wysokość min: 100vh; } ciało { --spacja: 2rem; wyświetlacz: siatka; wyrównaj zawartość: środek; przelew: ukryty; przerwa: var(--spacja); szerokość: 100%; rodzina czcionek: "Corben", systemowy interfejs użytkownika, bezszeryfowy; rozmiar czcionki: 1,5 rem; wysokość linii: 1,5; } .marque { --czas trwania: 60s; --gap: var(--spacja); wyświetlacz: elastyczny; przelew: ukryty; wybór użytkownika: brak; przerwa: var(--przerwa); transformacja: skośny Y(-3 stopnie); } .marquee__grupa { flex-skurcz: 0; wyświetlacz: elastyczny; wyrównaj-elementy: centrum; uzasadnić-treść: spacja-around; przerwa: var(--przerwa); minimalna szerokość: 100%; animacja: scroll var(--duration) liniowy nieskończony; } @media (preferuje zredukowany ruch: zmniejsz) { .marquee__grupa { stan odtwarzania animacji: wstrzymany; } } .marquee__grupa img { max szerokość: zacisk(10rem, 1rem + 28vmin, 20rem); współczynnik proporcji: 1; dopasowanie do obiektu: okładka; promień graniczny: 1rem; } .marquee__group p { obraz w tle: gradient liniowy ( 75 stopni, hsl(240deg 70% 49%) 0%, hsl(253deg 70% 49%) 11%, hsl(267deg 70% 49%) 22%, hsl(280deg 71% 48%) 33%, hsl(293deg 71% 48%) 44%, hsl(307deg 71% 48%) 56%, hsl(320deg 71% 48%) 67%, hsl(333stopnie 72% 48%) 78%, hsl(347 stopni 72% 48%) 89%, hsl(0deg 73% 47%) 100% ); -webkit-background-clip: tekst; -webkit-text-fill-color: przezroczysty; } .marquee--obramowania { border-block: 3px stałe dodgerblue; wyściółka: 0,75rem; } .marquee--reverse .marquee__group { kierunek animacji: rewers; opóźnienie animacji: calc(var(--duration) / -2); } @klatki kluczowe przewijanie { 0% { przekształcenie: przetłumaczX(0); } 100% { transform: translateX(calc(-100% - var(--gap))); } }
Przyjrzyjmy się, jak to zostało stworzone i dlaczego jest takie wspaniałe.
![](https://s.stat888.com/img/bg.png)
Oto przegląd, zanim przyjrzymy się całemu kodowi:
- W łatwy sposób możemy kontrolować prędkość i kierunek efektu przewijania. Dla szybkości ustawiamy
.marquee--reverse
. - Jest modułowy — możesz mieć tyle grup, ile chcesz, umieszczając zawartość w div z klasą
.marquee
i wewnętrzną zawartość za pomocą.marquee__group
. - Zmiana rozmiaru jest responsywna i płynna, ponieważ wykorzystuje zmienne CSS i klamrę.
- Jest dostępny za pomocą etykiet aria i wstrzymywania, jeśli CSS preferuje zredukowany ruch jest ustawiony na zredukowany.
- Ruch to standardowa animacja CSS, która wykorzystuje klatki kluczowe (możesz więc zatrzymać się po najechaniu myszą, jeśli chcesz). W ogóle nie ma JS.
- Jest też całkiem niezły kopiuj/wklej. Po prostu zamień swoją zawartość, zaimplementuj HTML i CSS, a będziesz miał fajny mały namiot.
To naprawdę dobrze zrobione i (imo) powinno być standardowym sposobem implementacji efektu markizy w 2022 roku.
Oto kod HTML:
W demie widzimy trzy markizy. Pierwszy i trzeci są odwrócone z klasą .marquee--reverse
. Mają standardową prędkość i zawierają obrazy.
Drugi (środkowy) to cały tekst i implementuje obramowania z niestandardową klasą. Ma również wolniejszy czas trwania ustawiany przez atrybut stylu: .
Zauważysz również, że w div .marquee
są zasadniczo duplikaty, które są takie same, z wyjątkiem znacznika aria.
Dzięki temu animacja będzie płynnie nieskończona, a jednocześnie będzie w stanie dostosować się do różnych współczynników widoku (więcej na ten temat, gdy spojrzymy na CSS).
Jest to dostępne za pomocą aria-hidden="true"
, która usuwa zduplikowaną treść z drzewa dostępności.
Ponadto obrazy są wyświetlane bezpośrednio z Unsplash. Może Cię zainteresować ten zasób: Jak wygenerować losowe obrazy według adresu URL (Web Dev)
Podsumowując, jest to elegancka, prosta struktura HTML.
Spójrzmy teraz na CSS
A oto CSS (wyciągnięty bezpośrednio z CodePen):
Możemy zobaczyć:
- Wszystko korzysta z REM, zmiennych i zacisku, co oznacza, że efekt płynie i będzie reagował na rozmiar ekranu i ustawienia przeglądarki.
- Animacja jest w 100% CSS. Jest to zaimplementowane za pomocą wiersza "
animation: scroll var(--duration) linear infinite;
" w.marquee__group
. Animacja jest nieskończona, liniowa i ma nazwę przewijania. Czas trwania root jest kontrolowany przez zmienną--duration
, którą można nadpisać, aby kontrolować szybkość określonej grupy w znacznikach HTML (wspomnianych powyżej). - Scroll to podstawowa transformacja, tłumacząca X.
- Aby odwrócić animację, po prostu mamy "
animation-direction: reverse;
" w klasie.marquee--reverse .marquee__group
. - W większości odstępów używamy funkcji calc i --gap. To sprawia, że wszystko jest płynne i możesz dostosować Gap do swoich potrzeb.
- Występuje efekt pochylenia (3%), który sprawia, że jest przekątny, który można usunąć, aby był w 100% poziomy.
- Jest dostępny i odpowiedzialny, ponieważ nie będzie się poruszał, jeśli preferuje-zmniejszony ruch: jest ustawiony (dowiedz się, jak to przetestować tutaj).
Zasadniczo robi wszystko naprawdę dobrze i jest najlepszym sposobem na wdrożenie efektu przewijania przypominającego markizę w 2022 roku.
Aby zaimplementować, po prostu dodaj kod HTML do swojej strony, zamień tekst/obrazy i dodaj CSS do swoich globalnych stylów.
Możesz bawić się zmiennymi, ale realistycznie jest to dość plug and play... nie musisz wiele zmieniać!