Jak prosto zmienić rozmiar zawartości strony z użyciem JavaScript i CSS?
Coraz bardziej powszechną metodą, ułatwiającą przeglądanie stron internetowych osobom niedowidzącym, staje się wprowadzanie możliwości zmiany rozmiaru ich zawartości. Ponadto, sposób ten ułatwia dostosowanie wielkości treści do preferencji potencjalnego klienta. W tej poradzie pokażemw prosty sposób, jak uzyskać tytułowy efekt.
Zdefiniowanie problemu
Najczęściej realizowany jest on poprzez utworzenie kilku przycisków, dzięki którym cała strona lub poszczególna treść zmienia rozmiar, krój lub wygląd czcionek, czy innych, możliwych do skalowania elementów. Często spotykanym rozwiązaniem jest wyświetlenie użytkownikowi kilku, różnej wielkości, liter A.
Darmowym skryptem obsługującym ww. efekt jest trzecia wersja phpBB.
Rysunek 1: przykładowa nawigacja.
Teoria implementacji
Nasz sposób będzie bazował na dwóch elementach: utworzeniu arkuszy stylów definujących wygląd poszczególnych stopni wielkości oraz napisanie funkcji „aktywującej" jeden z nich, w zależności od intencji użytkownika.
Załóżmy więc, że w naszym przykładzie będziemy chcieli wyświetlać treść w czterech różnych trybach (jak na rysunku 1). Możemy stworzyć więc pięć kaskadowych arkuszy stylów, gdyż główny a zarazem bazowy będzie odpowiadał właściwościom zgodnym dla każdej metody wyświetlania. Znacznikom link, załączającym zewnętrzny CSS, nadamy także specjalne tytuły, dzięki którym będziemy w stanie rozpoznać je w niżej opisywanym skrypcie JavaScript.
<link rel="stylesheet" type="text/css" href="styles.css" /> <!-- styl bazowy -->
<link rel="stylesheet" type="text/css" href="styles-normal.css" title="normal_size" /> <!-- styl normalnej wielkości, ładowany domyślnie -->
<!-- alternatywne arkusze -->
<link rel="alternate stylesheet" type="text/css" href="styles-verysmall.css" title="verysmall_size" />
<link rel="alternate stylesheet" type="text/css" href="styles-small.css" title="small_size" />
<link rel="alternate stylesheet" type="text/css" href="styles-large.css" title="large_size" />
Zwróćmy uwagę także na zawartość atrybutów rel trzech ostatnich linijek. Zawierają one frazy alternate wskazujące na alternatywne użycie tychże plików.
Przechodząc do kwestii dynamicznej zmiany wyglądu, tworzymy funkcję JS, która w zależności od przekazanego identyfikatora będzie wymuszać korzystanie z odpowiedniego arkusza. Przekazywane ID jest, co do zawartości, jedną z ww. wartości atrybutu title tagu link.
Rysunek 2: zasada działania.
Tak oto, w specjalnie przygotowanej pętli, przechodzącej przez wszystkie alternatywne znaczniki link posiadające atrybut title, sprawdzamy, czy któryś z tych tytułów jest tym, który przekazujemy w parametrze naszej funkcji.
function changeContentSize(title) {
var handler, i = 0;
while( handler = document.getElementsByTagName('link')[i++] ) // sprawdzenie wszystkich tagów <link ...>
{
if( handler.getAttribute('title') && handler.getAttribute('rel').indexOf('stylesheet') != -1 ) // testowanie tylko alternatywnych i posiadających atrybut tytuł
{
if( handler.getAttribute('title') == title ) // jeżeli użytkownik wywołał istniejący arkusz stylów aktywujemy go i skaczemy do kolejnej iteracji
{
handler.disabled = false;
continue;
}
handler.disabled = true; // w przeciwnym razie
}
}
}
Na koniec, pozostaje podpiąć powyższy skrypt.
<script type="text/javascript" src="skrypt.js"></script>
«poprzednia 1 2 następna »
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
11
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
gonzales Javowcy pozdrawiają dotnetowców xD
kaziks Galaxy S II - u mnie po aktualizacji Firefox działa strasznie zacina się...
Doniek Szkoda że strona z demo nie działa - non stop się przeładowuje
bartez Niech zaczną jeszcze bardziej ograniczać programistów, to zdziwią się ilu...
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
marcusm Fajna reklama produktu za 500 zł
rza a to starsze aplikacje nie będą działać i kompilacja pod Windows SDK 7.1...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |










