Podręcznik
6. Responsive Web Design
6.1. Stopniowe ulepszanie strony
Koncepcja stopniowego ulepszania strony (ang. Progressive Enhancement) dotyczy projektowania i tworzenia stron internetowych w sposób, który zapewnia ich podstawową funkcjonalność i dostępność dla wszystkich użytkowników, niezależnie od wykorzystywanego urządzenia czy przeglądarki, z jednoczesnym rozbudowywaniem interfejsu użytkownika i udostępnianiem bardziej zaawansowanych funkcji dla nowoczesnych przeglądarek i urządzeń.
Stopniowe ulepszanie często jest praktykowane w połączeniu z Responsive Web Design (RWD). Okazuje się, że zdecydowanie łatwiej jest zapewnić responsywność interfejsu użytkownika przy takim sposobie myślenia i projektowania UI, niż przy podejściu odwrotnym, czyli takim, w którym najpierw projektuje się interfejs zawierający wszystkie funkcjonalności a następnie próbuje się go upraszczać w celu dostosowania do możliwości prostszych urządzeń.
Praktyczny przykład budowy fragmentu prostego interfejsu aplikacji zgodnie z koncepcją stopniowego ulepszania
1. Stwórz solidny fundament w języku HTML
<nav>
<ul>
<li><a href="#home">Strona główna</a></li>
<li><a href="#about">O nas</a></li>
<li><a href="#contact">Kontakt</a></li>
</ul>
</nav>
Nawet bez CSS i JavaScript menu nawigacyjne jest dostępne i funkcjonalne.
nav ul {
list-style: none;
display: flex;
gap: 10px;
}
nav ul li a {
text-decoration: none;
color: #007bff;
}
@media (max-width: 768px) {
nav ul {
flex-direction: column;
}
}
Nawigacja zmieni układ z poziomego na pionowy, jeśli szerokość ekranu wynosi 768px lub mniej.
Pamiętaj, aby JavaScript był opcjonalny – strona powinna działać nawet bez niego.
document.querySelector('.menu-toggle').addEventListener('click', function() {
document.querySelector('nav ul').classList.toggle('show');
});
if ('IntersectionObserver' in window) {
// Dodaj zaawansowaną funkcjonalność np. lazy loading obrazków
console.log('IntersectionObserver jest obsługiwany');
} else {
console.log('Brak wsparcia dla IntersectionObserver');
}
Czym jest Intersection Observer API przeczytasz tutaj.