I. Pozycjonowanie elementów



Podobne dokumenty
Podstawy pozycjonowania CSS

Układy witryn internetowych

Box model: Content. Content - obszar zawartości określany jest za pomocą deklaracji wysokości i szerokości.

Spis treści. Konwencje zastosowane w książce...5. Dodawanie stylów do dokumentów HTML oraz XHTML...6. Struktura reguł...9. Pierwszeństwo stylów...

Dokument hipertekstowy

I. Wstawianie rysunków

Spis treści. Wstęp 12

CSS. Witryny internetowe szyte na miarê. Autorytety informatyki. Wydanie II

Laboratorium 1: Szablon strony w HTML5

Nazwa implementacji: CSS i box model. Autor: Opis implementacji: Poznajemy podstawy CSS oraz dowiadujemy się o rozmieszczaniu elementów na stronie.

Arkusze stylów CSS Cascading Style Sheets

Rysunek otaczany przez tekst

Model blokowy. Model blokowy w CSS

Języki programowania wysokiego poziomu. CSS Wskazówki

Tabele. Przykład 15a.htm. <HTML><HEAD><TITLE> Cennik</TITLE></HEAD><BODY><H3>Cennik</H3> <TABLE BORDER="1"> <TR>

CSS - layout strony internetowej

Krótki przegląd własności języka CSS

WYKŁAD 2 KASKADOWE ARKUSZE STYLÓW CSS CZĘŚĆ 1

Wstawianie nowej strony

ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop Spis treści

2. MATERIAŁ NAUCZANIA

Tworzenie Stron Internetowych. odcinek 8

Tworzenie stron internetowych w kodzie HTML Cz 5

Projektowanie aplikacji internetowych. CSS w akcji

Danuta ROZPŁOCH-NOWAKOWSKA Strona Moduł 4. Przykład 1. Przykład 2. HTML 4.01 Transitional).

Lp. Nazwisko Wpłata (Euro)

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

Pozycjonowanie elementów

Systemy internetowe Wykład 2 CSS

I. Menu oparte o listę

Young Programmer: HTML+PHP. Dr inż. Małgorzata Janik, Zajęcia #2

KASKADOWE ARKUSZE STYLÓW CSS (ang. Cascading Style Sheets)


CSS. Kaskadowe arkusze stylów. Przewodnik encyklopedyczny. Wydanie III

Pierwsza strona internetowa

Dzięki arkuszom zewnętrznym uzyskujemy centralne sterowanie wyglądem serwisu. Zewnętrzny arkusz stylów to plik tekstowy z rozszerzeniem css.

Elementy div i style CSS w praktyce

Często używanym elementem języka HTML są tabele, które wykorzystuje się do wygodnego rozmieszczania informacji i obrazów.

Studia Podyplomowe Grafika komputerowa i Techniki Multimedialne, 2015, semestr II, dr inż. Robert Banasiak Projektowanie Stron WWW.

I. Formatowanie tekstu i wygląd strony

Krok 1: Stylizowanie plakatu

Marginesy, dopełnienia i obramowanie

Zdefiniowane style mogą określać układ treści na stronie i sposób jej formatowania np. kolor czcionki, pogrubienia, tło tabel, rysunków itp.

Za pomocą atrybutu ROWS moŝemy dokonać podziału ekranu w poziomie. Odpowiedni kod powinien wyglądać następująco:

Responsywne strony WWW

Bezbolesny wstęp do CSS

CSS. Kaskadowe Arkusze Stylów

Widżety KIWIPortal. tworzenie umieszczanie na stronach internetowych opcje zaawansowane. Autor: Damian Rebuś Data: Wersja: 1.

Tutorial. HTML Rozdział: Ramki

Techniki wstawiania tabel

Jednostki miar stosowane w CSS

Jeśli dodamy jakieś parametry stylów dla poszczególnych DIV-ów, np.: <div style="float: left">pierwsza treść, zdjęcie, tabele lub cokolwiek </div>

Programowanie WEB PODSTAWY HTML

Języki programowania wysokiego poziomu. HTML cz.2.

Tworzenie Stron Internetowych. odcinek 8

Original edition copyright 2011 by Michael Bowers, Dionysios Synodinos, and Victor Sumner. All rights reserved.

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2016 CZĘŚĆ PRAKTYCZNA

Zadanie 3. Praca z tabelami

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

Fragment tekstu zakończony twardym enterem, traktowany przez edytor tekstu jako jedna nierozerwalna całość.

Uwaga w niektórych przeglądarkach różnice mogą być niewidoczne zależy to od przeglądarki i ew. od jej ustawień.

Odsyłacze. Style nagłówkowe

Adobe InDesign lab. 2 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Dokument wielostronicowy Książka Eksport do PDF... 7.

Technika pracy nad układem strony

Technika pracy nad układem strony

Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85

Jeżeli pole Krawędź będzie zaznaczone uzyskamy obramowanie w całej wstawianej tabeli

Blok dokumentu. <div> </div>

Znaczniki języka HTML

Ćwiczenie 4 - Tabele

Zbuduj robota. Wprowadzenie HTML & CSS. W tym projekcie nauczysz się, jak wstawiać obrazki, by stworzyć własnego robota! Zadania do wykonania

Edytor tekstu MS Word 2010 PL. Edytor tekstu MS Word 2010 PL umożliwia wstawianie i formatowanie tabel.

HTML (HyperText Markup Language) hipertekstowy język znaczników

Zadanie 1. Stosowanie stylów

Tworzenie szablonów użytkownika

Tworzenie infografik za pomocą narzędzia Canva

Powtórzenie materiału: CSS3 Spis treści

Rozdział VI. Tabele i ich możliwości

Po naciśnięciu przycisku Dalej pojawi się okienko jak poniżej,

Dodawanie grafiki i obiektów

Tło CSS 3. Gabriela Panuś

A P L I K A C J E I N T E R N E T O W E KONSPEKT nr 3 (DIV, galeria, formularze)

HTML. HTML(ang. HyperTextMarkupLanguage, pol. hipertekstowy język znaczników) język wykorzystywany do tworzenia stron internetowych

LEGISLATOR. Data dokumentu:17 września 2012 Wersja: 1.3 Autor: Paweł Jankowski

Tworzenie stron internetowych w kodzie HTML Cz 7

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.

p { color: yellow; font-weight:bold; }

SterBox. Przygotowanie Strony Użytkownika

Jak posługiwać się edytorem treści

Zaznaczanie komórek. Zaznaczenie pojedynczej komórki polega na kliknięciu na niej LPM

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2016 CZĘŚĆ PRAKTYCZNA

Zaawansowane projektowanie stron w CSS

Tworzenie Stron Internetowych. odcinek 6

Formatowanie komórek

CSS jest is an skrótem od Cascading Style Sheets (Kaskadowe Arkusze Stylów).

Podstawy HTML i styli CSS. selektor {właściwość1: wartość1; właściwość2: wartość2}

Dokumentacja WebMaster ver 1.0

P S E U D O K L A S Y I P S E U D O E L E M E N T Y

Transkrypt:

Wykład 4 - część I. I. Pozycjonowanie elementów 1

I. Pozycjonowanie elementów Model blokowy Każdy element użyty w kodzie XHTML tworzy na stronie blok. W związku z tym strona XHTML w rzeczywistości składa się z pewnej liczby wzajemnie ułożonych bloków. 2

I. Pozycjonowanie elementów Model blokowy Za pomocą CSS można zmienić trzy cechy bloku: Obramowanie: można ustawić grubość, styl oraz kolor ramki. Margines: można ustawić odstęp oddzielający blok od innych sąsiadujących z nim elementów. Dopełnienie (margines wewnętrzny): można ustawić odległość między treścią bloku a jego krawędziami. 3

I. Pozycjonowanie elementów Marginesy Marginesy są nieco bardziej skomplikowane niż obramowanie i dopełnienie - większość elementów blokowych (akapity, nagłówki, listy itp.) mają domyślne marginesy Rysunek poniżej przedstawia trzy zestawy złożone z nagłówka i dwóch akapitów. Pierwszy z nich pokazuje domyślne formatowanie przeglądarki. W drugim przypadku zastosowano marginesy i pokolorowano tło, dzięki czemu widać, jak marginesy tworzą pustą przestrzeń. Trzeci przykład pokazuje, co się dzieje, kiedy marginesy zostaną ustawione na zero elementy się stykają. 4

I. Pozycjonowanie elementów Marginesy Do dobrych zwyczajów należy umieszczenie poniższej deklaracji n początku każdego arkusza stylów: * {margin:0; padding:0;} Reguła ta ustawia marginesy i dopełnienie wszystkich elementów na zero. Dzięki temu nie trzeba pamiętać, które elementy mają te własności ustawione domyślnie, a które nie. Po wstawieniu tej reguły do arkusza stylów wszystkie domyślne marginesy i dopełnienia znikną. Teraz można niniejsze własności określić osobno, tylko dla wybranych elementów. 5

I. Pozycjonowanie elementów Marginesy Często w ustawieniach marginesów dla elementów tekstowych stosuje się mieszane jednostki miary. Na przykład lewy i prawy margines akapitu można zdefiniować w pikselach, aby tekst zawsze znajdował się w tej samej odległości od bocznego menu. Natomiast marginesy górny i dolny można ustawić w jednostkach em, dzięki czemu odległość między akapitami w pionie będzie zależała od rozmiaru tekstu,. Na przykład: p {font-size:lem; margin:.75em 30px;} W tym przypadku odległość między akapitami będzie zawsze równa trzem czwartym wysokości pisma. 6

I. Pozycjonowanie elementów Scalanie marginesów Marginesy sąsiadujące w pionie są scalane Wyobraźmy sobie, że mamy trzy akapity, jeden pod drugim. Każdy z nich formatuje reguła: p {width:400px; height:50px; border: 1px solid #000; margin-top: 50px; margin-bottom: 30px; background-color: #CCC;} Ponieważ dolny margines pierwszego akapitu styka się z górnym marginesem drugiego akapitu, można by się spodziewać, że odstęp między nimi wyniesie 80 pikseli (50+30). Nie jest to jednak prawda. Kiedy górny i dolny margines stykają się, nachodzą na siebie, aż jeden z nich sięgnie krawędzi drugiego elementu. W tym przypadku większy jest margines górny drugiego elementu, dzięki czemu właśnie on określa odstęp między elementami 50 pikseli. Efekt ten nazywa się scalaniem marginesów (ang. margin collapsing). 7

I. Pozycjonowanie elementów Rozmiary bloku Zasada działania modelu blokowego należy do najtrudniejszych aspektów CSS zarówno dla początkujących jak i zaawansowanych użytkowników. Należy pamiętać, że poniższe informacje dotyczą elementów blokowych, takich jak nagłówki, akapity czy listy. Elementy liniowe zachowują się nieco inaczej. Szerokość elementu blokowego (dalej zwanego blokiem) ustawia własność width: p {width:400px;} Aby zobaczyć blok, można pokolorować jego tło: p {width:400px; background-color: #80ff80;} 8

I. Pozycjonowanie elementów Scalanie marginesów Ponieważ nie ustawiono dopełnienia, treść niniejszego elementu również ma szerokość 400 pikseli i styka się z krawędziami swojego kontenera. Jest to jak najbardziej zrozumiałe, ale po zastosowaniu dopełnienia i obramowania coś zaczyna szwankować. Po lewej i prawej stronie elementu ustawimy 20- pikselowe dopełnienie: p {width:400px; background-color: #80ff80; padding:0 20px;} Można by się spodziewać, że po zastosowaniu 40 pikselowego dopełnienia w bloku o szerokości 400 pikseli na treść pozostanie 360 pikseli. Jest jednak inaczej. W zamian cały blok zostaje powiększony o 40 pikseli 9

I. Pozycjonowanie elementów Scalanie marginesów Jeśli po lewej i prawej stronie elementu ustawimy obramowanie o grubości 6 pikseli: p {width:400px; padding: 0 20px; border:#000 solid; border-width: 0 6px 0 6px; background-color:#ccc;} Blok poszerzy się o kolejne 12 pikseli (rysunek 4.10). Teraz całkowitaszerokość bloku wynosi 452 piksele (6+20+400+20+6). 10

I. Pozycjonowanie elementów Scalanie marginesów Dodamy jeszcze lewy i prawy margines, aby utworzyć pustą przestrzeń wokół elementu p {width:400px; margin: 0 30px; padding: 0 20px; border:#000 solid; border-width: 0 6px 0 6px; background-color:#80ff80;} 11

I. Pozycjonowanie elementów Scalanie marginesów Dodanie marginesów, w tym przypadku po 30 pikseli z lewej i prawej strony, zwiększa zajmowaną przez element powierzchnię, ponieważ znajdują się one na zewnątrz bloku. Mimo, że można by oczekiwać, że obramowanie i dopełnienie, które znajdują się wewnątrz bloku, nie zwiększają jego szerokości, prawda jest inna. Może to mieć duże znaczenie w przypadku układów kolumnowych, w których kolumny muszą mieć określoną szerokość. Układ złożony z elementów pływających (sposoby tworzenia takich układów omówiony będzie na następnym wykładzie) może zostać zburzony, jeśli szerokość kolumny zostanie nieuważnie zmieniona przez zmianę szerokości dopełnienia, marginesu lub obramowania. 12

Wykład 4 - część II. II. Elementy pływające i ich czyszczenie 13

II. Elementy pływające i ich czyszczenie Elementy pływające Kolejną niezwykle przydatną techniką pomagającą w organizacji układu strony jest użycie elementów pływających w połączeniu z własnością clear. Element pływający pozostaje poza standardowym układem elementów na stronie. Elementy znajdujące się za elementem pływającym przesuwają się do góry, układając się obok niego, jeśli jest tam wystarczająco dużo miejsca. Własność elear pozwala określić, czy elementy znajdujące się za elementem pływającym mają przesuwać się do góry czy nie. Jeśli na przykład mamy dwa akapity i chcemy, aby tylko pierwszy z nich pojawił się obok elementu pływającego, możemy ten drugi zatrzymać pod elementem I pływającym za pomocą własności elear. 14

II. Elementy pływające i ich czyszczenie Własność float Jednym z zastosowań własności float jest otaczanie obrazów tekstem. Należy ona jednak także do fundamentów układów wielokolumnowych. Zaczniemy od przypomnienia zasad otaczania obrazów tekstem. img {float:left; margin:0 4px 4px 0;} Powyższa reguła spycha obraz na lewa dzięki czemu tekst będzie znajdował się z jego prawej strony. Aby własność float zadziałała poprawnie, kod XHTML musi wyglądać następująco: <img.../> <p>...tekst akapitu...</p> 15

II. Elementy pływające i ich czyszczenie Własność float Innymi słowy, używając własności float, żądamy, aby element został przesunięty jak najdalej w lewo (lub prawo w przypadku deklaracji float: right) w obrębie zawierającego go elementu w tym przypadku body. Akapit (z przykładu na poprzednim slajdzie)nie traktuje elementu pływającego jako bloku znajdującego się przed nim i dlatego również przesuwa się do lewego górnego rogu swojego rodzica. Jednak jego treść (tekst) zawija się wokół pływającego obrazu. 16

II. Elementy pływające i ich czyszczenie Własność float Zastosowanie własności float zarówno do obrazu, jak i akapitu (o ustalonych szerokościach) powoduje, że tekst przestaje owijać się wokół obrazu. Jest to jedna z głównych zasad tworzenia układów kolumnowych przy użyciu elementów pływających. Elementy ustawiają się obok siebie jak kolumny, jeśli mają ustaloną szerokość i jest dla nich wystarczająco miejsca img {float:left; margin:0 4px 4px 0;} 17

II. Elementy pływające i ich czyszczenie Własność clear Z własnością float zazwyczaj współwystępuje własność clear. Jeżeli jeden element jest pływający, inny jeśli starczy dla niego miejsca ustawi się obok niego. Czasami jednak nie chcemy, aby tak się stało. Wolimy, aby ten drugi element pozostał pod elementem pływającym. Rozwiązaniem w tym przypadku jest dodanie niepływającego elementu do kodu XHTML i ustawienie jego własności clear w celu zatrzymania ostatniego elementu na dole. 18

II. Elementy pływające i ich czyszczenie Własność position Sercem układu kolumnowego w CSS jest własność position. Pozwala ona zdefiniować punkt odniesienia, względem którego element ma być pozycjonowany na stronie. Własność position może przyjmować jedną z czterech wartości: static, absolute, fixed, relative. Domyślna jest pierwsza z wymienionych. 19

II. Elementy pływające i ich czyszczenie Pozycjonowanie statyczne Pozycjonowanie statyczne polega na ułożeniu elementów jeden pod drugim. Odległość między nimi jest równa ich domyślnym marginesom. 20

II. Elementy pływające i ich czyszczenie Pozycjonowanie względne Ustawiamy własność pozition wyróżnionego kolorem akapitu na wartość relative. Dzięki temu możemy przesuwać ten element względem jego domyślnego położenia za pomocą własności top, right, bottom i left. Zazwyczaj wystarczą tylko wartości top i left. Poniższa reguła stylistyczna: p.poz {position:relative; top:30px; left:20px;} wywoła efekt widoczny na rysunku 21

II. Elementy pływające i ich czyszczenie Pozycjonowanie względne Lewy górny róg akapitu został przesunięty o 30 pikseli w dół i 20 pikseli w prawo. Jak widać, mimo że trzeci akapit został przesunięty, nic więcej na stronie się nie zmieniło. Miejsce zajmowane przez ten akapit, kiedy był pozycjonowany statycznie, nie zostało zwolnione. Podobnie pozostałe elementy nadal są na swoich pierwotnych miejscach. Należy pamiętać, że przesuwając element w ten sposób, trzeba wcześniej wygospodarować dla niego miejsce. 22

II. Elementy pływające i ich czyszczenie Pozycjonowanie bezwzględne Pozycjonowanie bezwzględne pozwala całkowicie wytrącić element z normalnego układu dokumentu. Zmodyfikujemy kod z poprzedniego przykładu, zmieniając tylko wartość własności position z relative na absolute. p.poz {position:absolute; top:30px; left:40px;} Rezultat tego działania przedstawia rysunek: 23

II. Elementy pływające i ich czyszczenie Pozycjonowanie bezwzględne Jak widać na rysunku, miejsce wcześniej zajmowane przez drugi akapit zostało zajęte przez kolejny. Element pozycjonowany bezwzględnie jest całkowicie niezależny od innych otaczających go w kodzie XHTML elementów. Jego położenie jest obliczane względem elementu najwyższego poziomu, czyli body. 24

II. Elementy pływające i ich czyszczenie Pozycjonowanie bezwzględne W tym miejscu musimy zapoznać się z pojęciem kontekstu pozycjonowania. Domyślnym kontekstem pozycjonowania elementu pozycjonowanego bezwzględnie jest element body Jak widać na rysunku z poprzedniego slajdu, własności top i left przesunęły akapit względem elementu body elementu najwyższego poziomu w naszym dokumencie, zamiast względem jego domyślnej pozycji w dokumencie. Ponieważ kontekstem pozycjonowania elementu pozycjonowanego bezwzględnie jest element body, pozycjonowany element przesuwa się w miarę przewijania strony, aby cały czas pozostać w tym samym miejscu. Element body także przesuwa się w miarę przewijania strony 25

II. Elementy pływające i ich czyszczenie Pozycjonowanie stałe Pozycjonowanie stałe (fixed) jest podobne do bezwzględnego. Różnica polega na tym, że element jest pozycjonowany w odniesieniu do okna przeglądarki. Dzięki temu dany element nie przesuwa się w miarę przewijania strony. 26

II. Elementy pływające i ich czyszczenie Kontekst pozycjonowania Pozycjonowanie kontekstowe polega na przesuwaniu danego elementu względem innego za pomocą własności top, right, left i bottom. Ten drugi element jest właśnie kontekstem pozycjonowania. 27

II. Elementy pływające i ich czyszczenie Kontekst pozycjonowania Kontekstem pozycjonowania elementów pozycjonowanych bezwzględnie jest element body body zawiera wszystkie inne elementy strony. Kontekstem pozycjonowania może być jednak dowolny element będący przodkiem innego elementu, jeśli jego własności position nada się wartość relative. 28

II. Elementy pływające i ich czyszczenie Kontekst pozycjonowania Przyjrzyjmy się poniższemu kodowi: XHTML: <div id="zewnetrzny"> <div id="wewnetrzny">lorem ipsum... </div> </div> CSS: #zewnetrzny { width:250px; margin:50px 40px; border-top: 10px solid red;} #wewnetrzny { top:10px; left:20px; background:#0ff;} 29

II. Elementy pływające i ich czyszczenie Kontekst pozycjonowania Nasuwa się pytanie: dlaczego wewnętrzny element div nie jest odsunięty o 10 pikseli w dół i 20 pikseli w lewo względem zewnętrznego elementu div? Zamiast tego górne lewe rogi obu tych elementów znajdują się w tym samym punkcie. Powodem jest pozycjonowanie statyczne obu elementów. Oznacza to że elementy te wpasowują się w domyślny rozkład elementów na stronie. Ponieważ zewnętrzny element nie ma żadnej treści, element wewnętrzny zaczyna się w tym samym miejscu. Własności top, right, bottom i left działają tylko jeśli element jest pozycjonowany względnie, bezwzględnie lub w sposób stały 30

II. Elementy pływające i ich czyszczenie Kontekst pozycjonowania Aby zewnętrzny kontener div stał się kontekstem pozycjonowania dla kontenera wewnętrznego należy: 1. Ustawić position: absolute dla kontenera wewnętrznego 2. Ustawić position: relative dla kontenera zewnętrznego 31

II. Elementy pływające i ich czyszczenie Kontekst display Poza własnością position każdy element ma także własność display. Mimo iż własność ta może przyjmować kilka wartości, najczęściej używane są dwie: block i inline. Tym, którzy przespali poprzednie wykłady, przypominam różnicę między elementami blokowymi (block) a liniowymi (inline): Elementy blokowe, na przykład akapity, nagłówki czy listy, układają się jeden nad drugim w oknie przeglądarki. Elementy liniowe, na przykład a oraz span, układają się jeden obok drugiego w oknie przeglądarki. Przechodzą do nowej linii dopiero wówczas, gdy w aktualnej nie ma dla nich wystarczająco dużo miejsca. 32

II. Elementy pływające i ich czyszczenie Kontekst display Możliwość zamiany elementów blokowych w liniowe i odwrotnie, jak poniżej: 33

II. Elementy pływające i ich czyszczenie Kontekst display Możliwość zamiany elementów blokowych w liniowe i odwrotnie, jak poniżej: 34

II. Elementy pływające i ich czyszczenie Kontekst display Jeszcze jedną wartością własności display, o której warto wspomnieć, jest none. Powoduje ona, że element i wszystkie zagnieżdżone w nim elementy stają się niewidoczne na stronie. Miejsce normalnie zajmowane przez ten element nie jest wtedy przez niego zajmowane. Wygląda to tak, jakby kod XHTML tego elementu w ogóle nie istniał (jest jeszcze własność visibility, której wartość hidden powoduje, że element jest niewidoczny, ale nadal zajmuje przeznaczone dla niego miejsce). 35

Wykład 4 - część II. II. Menu rozwijane 36

II. Menu rozwijane Przykład: Za pomocą CSS stworzyć można skomplikowane systemy menu. Przedstawimy tu przykład wykonania menu rozwijanego, jednopoziomowego (w dwu wersjach, poziomej i pionowej) 37

II. Menu rozwijane 1. Tworzenie menu pierwszego poziomu 38

II. Menu rozwijane Budowa dokumentu HTML Pracę zaczynamy od stworzenia jednopoziomowej listy, która będzie naszym menu. <div id="multi_drop_menus"> <ul> <li><a href="#">element 1</a></li> <li><a href="#">element 2</a></li> </ul> </div> 39

II. Menu rozwijane CSS Definiujemy tymczasowe obramowania i tła dla każdego z czterech elementów (di v, ul, 1 i, a). Dzięki temu będziemy mogli łatwo je odróżnić w trakcie pracy. 40

II. Menu rozwijane CSS Na początku usunąłem domyślne marginesy i dopełnienie za pomocą selektora uniwersalnego *. Następnie ustawiłem kolory ramek elementów: zielony dla elementu div, czerwony dla ul, niebieski dla 1. Na końcu ustawiłem kolor tła najgłębiej zagnieżdżonego elementu (a) na bladoszary. Będzie to teraz kolor tła opcji menu. 41

II. Menu rozwijane CSS Na początku usunąłem domyślne marginesy i dopełnienie za pomocą selektora uniwersalnego *. Następnie ustawiłem kolory ramek elementów: zielony dla elementu div, czerwony dla ul, niebieski dla 1. Na końcu ustawiłem kolor tła najgłębiej zagnieżdżonego elementu (a) na bladoszary. Będzie to teraz kolor tła opcji menu. 42

II. Menu rozwijane CSS Aby utworzyć menu poziome, elementy ul muszą leżeć obok siebie, w jednej linii. Do takiego ich rozlokowania użyjemy własności float. 43

II. Menu rozwijane CSS Aby utworzyć menu poziome, elementy ul muszą leżeć obok siebie, w jednej linii. Do takiego ich rozlokowania użyjemy własności float. Kiedy zdefiniowaliśmy elementy li jako pływające w elemencie ul (a dzięki temu także w div), nie pozostała żadna niepływająca treść. Przez to bloki złożyły się, a elementy listy wydają się zawieszone. Chcemy jednak, aby te elementy otaczały elementy listy Co możemy zrobić? 44

II. Menu rozwijane CSS Prostym rozwiązaniem, problemu z poprzedniego slajdu jest zdefiniowanie również elementów ul i div jako pływających 45

II. Menu rozwijane CSS Prostym rozwiązaniem, problemu z poprzedniego slajdu jest zdefiniowanie również elementów ul i div jako pływających 46

II. Menu rozwijane CSS Teraz utworzymy nieco wolnego miejsca (dopełnienie) wokół tekstu, który w tej chwili jest upchany i dotyka krawędzi otaczającego go elementu. Aby lepiej zobrazować kluczowy aspekt, mający wpływ na poprawne działanie tego menu, chwilowo ustawiam nieco za duże dopełnienie pionowe ( 1 em). 47

II. Menu rozwijane CSS Jak widać na poprzednim slajdzie, coś jest nie tak. Tło odnośnika powiększyło się, ale zamiast rozciągnąć zawierający łącze element, wyszło poza jego krawędzie. Jest to spowodowane tym, że elementy liniowe z ustawionym dopełnieniem i marginesami nie oddziałują z otaczającymi je elementami blokowymi w taki sposób, jak się spodziewaliśmy. Informacje na temat pionowego dopełnienia elementów liniowych nie są przekazywane w górę po drzewie hierarchii, do elementów wyższego rzędu, w przeciwieństwie do elementów blokowych, przez co elementy te nie wiedzą, że powinny się powiększyć, aby pomieścić zajmujący teraz większa powierzchnię odnośnik. Problem ten łatwo rozwiążemy, definiując a jako element blokowy: 48

II. Menu rozwijane CSS Następny krok to utworzenie wizualnej odpowiedzi na najechanie kursorem na odnośnik. 49

II. Menu rozwijane 2. Tworzenie menu drugiego poziomu 50

II. Menu rozwijane Budowa dokumentu HTML Kolejne poziomy menu tworzy się, zagnieżdżając listy wewnątrz list. Przyjrzyjmy się uważnie poniższemu kodowi XHTML: <div id="multi_drop_menus"> <ul> <li><a href="#">element 1</a> <ul> <li><a href="#">element 1a</a></li> <li><a href="#">element 2a</a></li> </ul> </li> <li><a href="#">element 2</a></li> </ul> </div> W pierwszym elemencie listy zagnieździłem drugą listę (kod wyróżniony na niebiesko). Będzie ona naszym wysuwanym menu. Należy zauważyć, że lista ta znajduje się bezpośrednio przed znacznikiem zamykającym zawierającego ją elementu listy pierwszego poziomu. 51

II. Menu rozwijane Budowa dokumentu HTML Ponieważ nie zdefiniowaliśmy jeszcze żadnych stylów dla drugiego poziomu menu, dziedziczy on style po pierwszym poziomie, przez co jego elementy ustawiają się w jednej linii. 52

II. Menu rozwijane CSS Oczywiście, aby tę zagnieżdżoną listę zamienić w rozwijalne menu, jej elementy muszą układać się jeden pod drugim. Osiągniemy ta tworząc relację typu bezwzględny - względny między dwoma poziomami menu. 53

II. Menu rozwijane CSS Doszliśmy do najciekawszego etapu, czyli ożywiania naszego menu. Po najechaniu kursorem na odpowiedni element najwyższego poziomu, będzie pojawiać się związane z nim menu. 54

II. Menu rozwijane CSS Pozostało tylko usunąć kolorowe ramki, które byty dla nas bardzo pomocne w trakcie pracy, i zastąpić je bardziej atrakcyjnymi stylami. 55

II. Menu rozwijane CSS 56

II. Menu rozwijane CSS 57

II. Menu rozwijane CSS 58

II. Menu rozwijane 3. Wersja pionowa menu Krokiem pierwszym jest usunięcie parametru float z listy pierwszego poziomu. #multi_drop_menus li{ border-left: 2px solid #ACA; border-top: 1px solid #686; background-color: #DED; list-style-type: none; position: relative; width: 100px; float: left; } 59

II. Menu rozwijane 3. Wersja pionowa menu Kolejnym etapem jest ustalenie pozycji elementów listy zagnieżdżonej. Inaczej menu rozwijane pojawi się bezpośrednio pod elementem nadrzędnym. #multi_drop_menus li ul { } position: absolute; width: 7em; display: none; left: 100px; top: 0px; 60

II. Menu rozwijane 4. Umieszczenie rozwijanego menu w dokumencie Kolejnym problemem jest pozycjonowanie tak stworzonego menu. Tym zajmiemy się na kolejnym wykładzie poświęconym tworzeniu pływających układów strony. 61

Literatura: W prezentacji wykorzystano fragmenty i przykłady z książki: Wyke-Smitch Ch.; CSS Witryny szyte na miarę. Helion, Gliwice 2008. 62