Ćwiczenie 3 xhtml

Transkrypt

Ćwiczenie 3 xhtml
XHTML – elastyczny układ strony
1
Wprowadzenie
Typowa struktura strony (układ dwukolumnowy) przedstawiona jest na rysunku:
Nagłówek
Pasek
Treść
Stopka
Do odwzorowania powyŜszej struktury stosowano zwykle tabele postaci:
<table width="100%">
<tr> <td colspan="2"> Nagłówek </td> </tr>
<tr> <td width="75%"> Treść </td>
<td width="25%"> Pasek </td>
</tr>
<tr colspan="2"> Stopka </td></tr>
</table>
Po zbudowaniu podstawowego szkieletu zwykle pojawiają się dodatkowe tabele w kaŜdej
komórce. W rezultacie powstaje ogromna ilość kodu.
Tego typu układ moŜe płynnie zmieniać się w zaleŜności od rozmiaru okna przeglądarki.
Jednak podstawową wadą takiego rozwiązania jest fakt, Ŝe treść strony jest pomieszana
z projektem graficznym. Ramki i obrazki gif słuŜące do tworzenia odstępów oraz grafika są
umieszczane w kodzie wraz z treścią strony. Oznacza to, Ŝe uŜytkownicy korzystający
z przeglądarek tekstowych lub urządzeń o małych ekranach będą mieli trudności
z odczytaniem treści dokumentu.
Przeplatanie treści z warstwą prezentacyjną skutkuje obfitością kodu co bardzo utrudnia
aktualizację i utrzymanie witryny. Zmiana projektu bazującego na tabelach wymaga
ogromnego wysiłku.
Następną wadą jest kolejność w jakiej dane są prezentowane w przeglądarkach tekstowych.
Istnieje tylko jedna kolejność wyświetlana zgodna z kolejnością elementów w kodzie
a kolumny tabeli są wyświetlane zawsze od lewej do prawej. Powoduje to, Ŝe przeglądarki
tekstowe muszą przebrnąć przez mniej istotne informacje zanim dojdą do najwaŜniejszych
elementów.
Rozmieszczając elementy na stronie przy uŜyciu CSS a nie tabel mozna zmienić kolejność ich
wystepowania w kodzie a w efekcie porządek wyświetlania treści w przeglądarkach
tekstowych. Takie projekty tworzy się z wykorzystaniem duŜo mniejszej ilości kodu
a warstwa prezentacyjna jest zupełnie oddzielona od treści strony.
Przy uŜyciu CSS moŜna zbudować płynny, wielokolumnowy układ strony.
Zamiast stosować komórki tabel do rozdzielania treści strony na kolumny, nagłówek i stopkę
moŜna posłuŜyć się elementami <div>.
Ćw.1. Projekt dwukolumnowy z elementami div
a) Utworzyć dokument xhtml o nazwie index.html z zawartością:
<div id="kontener">
<div id="nag"><h1>Nagłówek</h1> </div>
<div id="tresc">Treść</div>
<div id="pasek">Pasek boczny</div>
<div id="stopka">Stopka</div>
</div>
Uwaga - cała struktura projektu umieszczona jest w dodatkowym pojemniku-kontenerze:
<div id="kontener":>
XHTML – elastyczny układ strony
2
Porządek wyświetlania elementów w przeglądarce tekstowej (bez CSS) będzie następujący:
nagłówek, treść, pasek, stopka.
b) Dołączyć plik z regułami CSS ustalającymi tła poszczególnych elementów, szerokość
kolumny treści (np. na 70%) z wyrównaniem do lewej strony i szerokość paska bocznego (np. 30%)
z wyrównaniem do prawej strony (właściwość float tworzy tzw. elementy pływające):
#nag
{background:#369; }
#tresc
{float:left;width:70%; }
#pasek
{float:right;width:30%;background:#9c3; }
#stopka
{background:#cc9; height:10%}
Układ elementów przed pozycjonowaniem
Efekt działania modyfikacji CSS
(stopka miesza się z pływającymi
elementami)
Stopka miesza się z elementami pływającymi, ponadto nie ma określonej szerokości i jej pole
przejmuje szerokość całego kontenera. Aby zawartość stopki nie oblewała poprzedzających ją
elementów (z Ŝadnej strony) a była umieszczona pod obydwiema kolumnami (niezaleŜnie od
ich długości) naleŜy ustawić dla elementu stopka w CSS właściwość:clear:both;
Po dołączeniu tej reguły układ strony jest postaci:
Dodatkowo w celu polepszenia wyglądu projektu w arkuszu CSS moŜna ustalić marginesy
(własność margin) stosowane do ustawienia odstępów między kolumnami tekstu),
dopełnienia elementów (padding), ograniczenie maksymalnej i minimalnej szerokości
kolumny (max-width, min-width). Niestety te ostatnie nie są obsługiwane w IE.
XHTML – elastyczny układ strony
Ćw.2.
Na podstawie ćw 1. i elementów z poprzednich zajęć zbudować stronę postaci:
Poszczególne elementy strony z ćw.1 wypełnione zostały właściwą treścią.
Pasek boczny został zbudowany na bazie elementów <h3>, <p> i listy <ul>, jak pokazano
poniŜej:
<div id="pasek">
<div class="box">
<h3> Promocje</h3>
<p>Na wiosnę wszystkie kursy o 20% taniej. Wybierz kurs dla siebie.</p>
</div>
<div class="box">
<h3>Walidatory</h3>
<ul>
<li><a href="http://validator.w3.org/">CSS</a></li>
<li><a href="http://jigsaw.w3.org/css-validator">XHTML</a></li>
</ul>
</div>
</div>
Do reguł CSS dołączono definicję klasy box i format elementu <h3> zagnieŜdŜonego
w elemencie klasy box:
.box { background:#fff;
padding:5px;
margin:5px;
font-size:90%;
}
.box h3 {margin:0px;
padding:2px;
font-size:120%;
}
Wyświetlić stronę bez arkusza CSS.
3