Najlepsze praktyki progresywnego ulepszania projektowania stron internetowych
Rzemiosło tworzenia stron internetowych jest niezwykle złożone z wieloma szybko zmieniającymi się częściami. Celem społeczności projektantów stron internetowych jest zmniejszyć złożoność, i zmniejszyć potencjał błędu na każdym etapie procesu tworzenia.
Progresywne ulepszanie jest taki pomysł w projektowaniu stron internetowych, który ma na celu zmniejszyć błędy i zapewniają spójne wrażenia użytkownika powszechny. Koncepcja ma własną stronę Wikipedii, która wyjaśnia ją jako metodę w pełni dostępna treść, renderowanie rozszerzonych funkcji tylko wtedy, gdy jest obsługiwane przez przeglądarkę.
Łatwo jest zrozumieć progresywne ulepszanie, ale nie tak łatwo zastosować je bezpośrednio do prac projektowych. Chciałbym trochę pokryć najlepsze praktyki stopniowego ulepszania projektów realizowanych w świecie rzeczywistym do pomagać projektantom w bardziej zrównoważonym myśleniu o swojej pracy.
1. Zrozumienie progresywnego ulepszania
Teoria ulepszeń progresywnych zaleca zacznij od prostej strony internetowej to działa we wszystkich przeglądarkach, tworząc go dostępne dla każdego odwiedzającego. Następnie dodaj funkcje, gdy tylko jest to możliwe.
Jest to przeciwieństwo zgrabnej degradacji, która domyślnie obejmuje wszystkie funkcje, a następnie degraduje się, gdy coś nie działa.
Progresywne ulepszanie jest lepsze dla ogólnego doświadczenia użytkownika, ponieważ w jego istocie jest to ładuje tylko niezbędne elementy. Każda przeglądarka internetowa może obsługiwać tekst (i zazwyczaj obrazy). Bez CSS te informacje będą wyglądać mdłe i bez smaku, ale będą dostępne.
To List Apart artykuł dowodzi, że progresywne ulepszanie jest content-first z style i składniki dynamiczne dodane później. Treść w semantycznym kodzie HTML powinna być dostarczona przed wszystkim innym.
Zaawansowane CSS i JavaScript, których używamy dzisiaj, są szeroko wspierane, ale jeśli chcemy postępować zgodnie z zasadami stopniowego ulepszania, należy je uważać za luksusy.
Oto ogólny przegląd głównych cech progresywnego ulepszania, które powinieneś wziąć pod uwagę:
- Znaczniki semantyczne dla wszystkich treści
- Użytkownicy preferencje przeglądarki należy szanować
- Treść i podstawowa funkcjonalność powinny być dostępne dla wszystkich użytkowników
- Dyskretny JavaScript jest ładowany tylko w środowiskach, które mogą to obsługiwać
Ograniczenia technologiczne w rozwoju frontonu zależą przede wszystkim od zgodności przeglądarki. Progresywne ulepszenie pozwala Ci wrócić do podstaw myślenia o tym, jak najprostsza strona gołej kości może wyglądać. Stamtąd możesz zaplanuj bardziej zaawansowane funkcje, jak właściwości CSS3.
Ale co z przeglądarkami, które nie obsługują nowoczesnego CSS3? W tym miejscu pojawiają się takie witryny, jak Can I Use. Powinieneś zdecydować, które funkcje warto wdrożyć i dokonać osądów na docelowej grupie odbiorców Twojej witryny.
2. Posiadanie w arkuszach stylów
Większość dzisiejszych przeglądarek obsługuje wszystkie podstawowe właściwości, których potrzebujesz. Ale zaawansowany CSS3 nadal stanowi problem dla starszych użytkowników, a progresywne ulepszanie oferuje rozwiązanie.
Zamiast szukać metod awaryjnych w celu utrzymania tych nowych funkcji, najpierw zajmij się odpowiednie struktury układu.
Napisz semantyczny znacznik HTML i CSS, który działa w możliwie największej liczbie aktywnych przeglądarek (obsługa starożytnych przeglądarek, takich jak obsługa IE5, nie jest konieczna).
Weźmy na przykład ten JSFiddle, który używa pływaków z dwoma paskami bocznymi (.naprawiony
) i obszar zawartości płynu (.płyn
). Jeśli usuniesz cały CSS i ponownie uruchomisz kod, zauważysz, że wszystko układa się ładnie w pierwszej kolumnie, potem w drugiej i wreszcie w ostatniej.
Niektórzy programiści woleliby mieć kolumnę treści (.płyn
) pojawia się najpierw w HTML. Tu właśnie pojawia się progresywne ulepszanie, a alternatywne rozwiązania CSS stają się opłacalne.
Dwa główne cele Twojego kodu HTML są następujące:
- Całkowicie semantyczny i ważny kod
- ZA spójne doświadczenie dla wszystkich
Najprostszym sposobem osiągnięcia tych celów jest zacznij od niczego i doprowadzić się do czegoś, jak większość zwolenników postępowej poprawy poleciłoby to.
Jeśli twój kod wygląda dobrze z CSS wyłączonym i włączonym, oferuje rozsądne rozwiązanie dla wszystkich.
Warto również rozważyć w którym momencie upuszczasz wsparcie dla czegoś. Microsoft już zrezygnował z poważnego wsparcia dla IE6, więc użytkownicy korzystający z tej przeglądarki mogą nie być warty twojego czasu.
Ale jest jeszcze jedno wielkie pytanie: jeśli przeglądarka nie obsługuje mojego nowoczesnego CSS, co powinienem zrobić?
Po prostu napisz kod, który działa bez to, i uważaj nowoczesny CSS za ulepszenie progresywne. Oto piękno metodologii progresywnego ulepszania.
Nie potrzebujesz upadków, ponieważ jesteś zasadniczo zakładając, że domyślnie nic nie jest obsługiwane.
Metody ulepszania progresywnego polegają na uczynieniu witryny użyteczną nawet w przypadkach, gdy coś nie jest obsługiwane, ale jeśli jest obsługiwane, tym lepiej.
Musisz wziąć pod uwagę jak rzeczywiście płynie treść bez CSS. Na przykład, gdy wyłączam CSS na stronie Transmit, zawartość nadal przepływa organicznie w dół strony.
Tak, to brzydkie, i tak, wydaje się, że straciliśmy dwadzieścia lat postępu ... ale to działa.
3. Obsługa JavaScript
Warto wspomnieć, że każdy problem z JavaScript, na który możesz się natknąć podczas procesu tworzenia, jest trudny i unikalny. Kiedy budujesz nowy projekt z progresywnym ulepszaniem, powinieneś wymienić wszystkie wymagane funkcje oparte na JS i zastanowić się, w jaki sposób mogą działać bez JavaScript.
Będzie to wymagało wielu badań online, aby znaleźć prawidłowe rozwiązania. Aaron Gustafson napisał świetny wpis na blogu zawierający rozwiązania różnych problemów, na przykład zastąpienie Ajaksu meta odświeżaniem treści wewnątrz ramki iframe.
Ponadto, gdy tworzysz karty JavaScript, dobrze jest użyj linków kotwiczących z rzeczywistymi wartościami identyfikacyjnymi. W ten sposób, gdy JavaScript jest wyłączony, możesz nadal mieć karty widoczne i dostępne dzięki wartości kotwicy. Aaron napisał kolejny utwór na A List Apart, który zawiera bardziej ogólny przegląd tego, jak powinieneś myśleć o tych problemach.
Oto kolejny przykład. Załóżmy, że masz łącze, które dynamicznie ładuje zawartość. The href
wartość jest pusta, ponieważ wszystko ładuje się za pomocą JavaScript za pomocą metody preventDefault ().
Zamiast tego rozsądnie byłoby ustawić href
własność do wskaż inną stronę gdzie treść może ładować się naturalnie, ale odwiedzający widzi tę stronę tylko wtedy, gdy JavaScript jest wyłączony.
Udoskonalanie progresywne to coś więcej niż JavaScript, ale z rozwojem stron internetowych postępującym co roku, nie ma wątpliwości, że JavaScript odgrywa znaczącą rolę.
Działaj przy założeniu, że wszystko zostało wyłączone, i skaluj stamtąd. Może to obejmować problemy z osadzonymi widżetami, które są poza kontrolą użytkownika to realne rozwiązanie.
Pomyśl także o funkcjach JavaScript, które brak kompleksowej obsługi przeglądarki. Obejmuje to API pobierania, API push, składnię funkcji strzałek, a nawet przeglądarki bez obsługi nowoczesnych bibliotek, takich jak jQuery.
Każda funkcja wymaga indywidualne testy z indywidualnym rozwiązaniem.
Istotą stopniowo ulepszanego JavaScript jest budować zawartość, która działa bez żadnych skryptów. Może to prowadzić do szczątkowego doświadczenia użytkownika, ale jest to w porządku, o ile witryna jest użyteczna, a jej zawartość jest dostępna.
Jeśli chcesz przeprowadzać testy na żywo, zazwyczaj możesz to zrobić wyłącz CSS i JavaScript w każdej głównej przeglądarce aby zobaczyć, jak działa Twoja strona. Warto również rozważyć użycie rozszerzeń takich jak A-Tester dla zgodności z WCAG.
JavaScript z progresywnym ulepszaniem to ogromny temat. Oto kilka postów, które pomogą Ci głębiej:
- Progressive Enhancement! = “Brak JavaScript”
- Interakcja to klucz: progresywne ulepszanie i JavaScript
- Progressive Enhancement: jest o treści
- Jak zastosować progresywne ulepszanie, gdy JavaScript wydaje się wymaganiem
Gdzie Progressive Enhancement upada
Chociaż progresywne ulepszanie jest genialnym pomysłem na niemal każdy typ nowoczesnej strony internetowej, może po prostu nie dotyczy projektów, które mają na celu przesuwanie granic technologii internetowej.
Na przykład ta metodologia nie jest dobrym rozwiązaniem dla aplikacji internetowych, które działają wyłącznie na wywołaniach Ajax. Czy to dobry wybór dla dostępności? Nie, oczywiście nie. Ale gdyby tak było, większość samouczków Codrops nawet by nie istniała. Musisz pamiętaj o grupie docelowej.
Witryna biznesowa prawdopodobnie nie ma publiczności, która dba o nowe, perspektywiczne właściwości CSS3, ale programiści mogą być idealnymi odbiorcami takich zaawansowanych funkcji.
Progresywne ulepszanie nie wystarcza tylko w przypadku aplikacji internetowych po prostu nie przejmuj się cofaniem się w czasie. Zdaję sobie sprawę, że te aplikacje internetowe są nieliczne, ale programiści uwielbiają postępy, aw niektórych przypadkach rozsądne może być posunięcie naprzód nowych technologii, pozostawiając maruderów za sobą.
Jestem zwolennikiem stopniowego ulepszania (lub nawet wdzięcznej degradacji, waszego wyboru) dla ogólnych projektów internetowych. Ale zdaję sobie sprawę, że nie jest to idealne rozwiązanie na wszystko. W rzeczywistości nie ma idealnego rozwiązania. Wszystko sprowadza się do potrzeb odbiorców i celów projektu.
Dalsze czytanie
Jeśli ciągle budujesz projekty internetowe, powinieneś rozważyć zastosowanie progresywnego ulepszania swojego przepływu pracy. Jest to o wiele łatwiejsze niż się wydaje na pierwszy rzut oka i wszystko zaczyna się od podstaw. Większość tematów związanych z progresywnym ulepszaniem wymaga jedynie praktyki i testowania. Wypróbuj sugestie z tego artykułu i zobacz, co działa najlepiej dla twojego przepływu pracy.
Jeśli chcesz dowiedzieć się więcej o progresywnym ulepszaniu, sprawdź te powiązane posty:
- Zrozumienie progresywnego ulepszania
- Progressive Enhancement: Co to jest i jak z niego korzystać?
- Backlash zależny od JavaScript: ulepszanie progresywne mitów