62
1 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD I. Pozycjonowanie elementów Wykład 4 - część I.

I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

1 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

I. Pozycjonowanie

elementów

Wykład 4 - część I.

Page 2: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

2 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

I. Pozycjonowanie elementów

Page 3: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

3 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

I. Pozycjonowanie elementów

Page 4: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

4 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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ą.

I. Pozycjonowanie elementów

Page 5: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

5 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Marginesy

Do dobrych zwyczajów należy umieszczenie poniższej deklaracji n początku

każdego arkusza stylów:

* {margin:0; padding:0;}

I. Pozycjonowanie elementów

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.

Page 6: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

6 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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;}

I. Pozycjonowanie elementów

W tym przypadku odległość

między akapitami będzie zawsze

równa trzem czwartym wysokości

pisma.

Page 7: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

7 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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;}

I. Pozycjonowanie elementów

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).

Page 8: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

8 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

I. Pozycjonowanie elementów

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;}

Page 9: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

9 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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

I. Pozycjonowanie elementów

Page 10: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

10 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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).

I. Pozycjonowanie elementów

Page 11: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

11 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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;}

I. Pozycjonowanie elementów

Page 12: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

12 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

I. Pozycjonowanie elementów

Page 13: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

13 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

II. Elementy pływające i

ich czyszczenie

Wykład 4 - część II.

Page 14: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

14 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Elementy pływające i ich czyszczenie

Page 15: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

15 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Elementy pływające i ich czyszczenie

Aby własność float zadziałała poprawnie, kod XHTML

musi wyglądać następująco:

<img .../>

<p>...tekst akapitu...</p>

Page 16: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

16 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Elementy pływające i ich czyszczenie

Page 17: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

17 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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;}

II. Elementy pływające i ich czyszczenie

Page 18: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

18 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Elementy pływające i ich czyszczenie

Page 19: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

19 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Elementy pływające i ich czyszczenie

Page 20: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

20 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Elementy pływające i ich czyszczenie

Page 21: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

21 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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

II. Elementy pływające i ich czyszczenie

Page 22: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

22 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Elementy pływające i ich czyszczenie

Należy pamiętać, że przesuwając element

w ten sposób, trzeba wcześniej

wygospodarować dla niego miejsce.

Page 23: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

23 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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:

II. Elementy pływające i ich czyszczenie

Page 24: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

24 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Pozycjonowanie bezwzględne

II. Elementy pływające i ich czyszczenie

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.

Page 25: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

25 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Pozycjonowanie bezwzględne

II. Elementy pływające i ich czyszczenie

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

Page 26: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

26 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Pozycjonowanie stałe

II. Elementy pływające i ich czyszczenie

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.

Page 27: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

27 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Kontekst pozycjonowania

II. Elementy pływające i ich czyszczenie

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.

Page 28: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

28 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Kontekst pozycjonowania

II. Elementy pływające i ich czyszczenie

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.

Page 29: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

29 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Kontekst pozycjonowania

II. Elementy pływające i ich czyszczenie

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;}

Page 30: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

30 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Kontekst pozycjonowania

II. Elementy pływające i ich czyszczenie

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

Page 31: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

31 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Kontekst pozycjonowania

II. Elementy pływające i ich czyszczenie

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

Page 32: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

32 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Kontekst display

II. Elementy pływające i ich czyszczenie

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.

Page 33: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

33 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Kontekst display

II. Elementy pływające i ich czyszczenie

Możliwość zamiany elementów blokowych w liniowe i odwrotnie, jak poniżej:

Page 34: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

34 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Kontekst display

II. Elementy pływające i ich czyszczenie

Możliwość zamiany elementów blokowych w liniowe i odwrotnie, jak poniżej:

Page 35: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

35 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Kontekst display

II. Elementy pływające i ich czyszczenie

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).

Page 36: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

36 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

II. Menu rozwijane

Wykład 4 - część II.

Page 37: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

37 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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)

II. Menu rozwijane

Page 38: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

38 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

1. Tworzenie menu pierwszego poziomu

II. Menu rozwijane

Page 39: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

39 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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>

II. Menu rozwijane

Page 40: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

40 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Menu rozwijane

Page 41: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

41 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Menu rozwijane

Page 42: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

42 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Menu rozwijane

Page 43: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

43 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Menu rozwijane

Page 44: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

44 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Menu rozwijane

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ć?

Page 45: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

45 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

CSS

Prostym rozwiązaniem, problemu z poprzedniego slajdu jest zdefiniowanie również

elementów ul i div jako pływających

II. Menu rozwijane

Page 46: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

46 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

CSS

Prostym rozwiązaniem, problemu z poprzedniego slajdu jest zdefiniowanie również

elementów ul i div jako pływających

II. Menu rozwijane

Page 47: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

47 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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).

II. Menu rozwijane

Page 48: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

48 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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:

II. Menu rozwijane

Page 49: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

49 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

CSS

Następny krok to utworzenie wizualnej odpowiedzi na najechanie kursorem na odnośnik .

II. Menu rozwijane

Page 50: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

50 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

2. Tworzenie menu drugiego poziomu

II. Menu rozwijane

Page 51: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

51 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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>

II. Menu rozwijane

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.

Page 52: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

52 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Budowa dokumentu HTML

II. Menu rozwijane

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.

Page 53: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

53 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Menu rozwijane

Page 54: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

54 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

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.

II. Menu rozwijane

Page 55: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

55 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

CSS

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

II. Menu rozwijane

Page 56: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

56 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

CSS

II. Menu rozwijane

Page 57: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

57 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

CSS

II. Menu rozwijane

Page 58: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

58 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

CSS

II. Menu rozwijane

Page 59: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

59 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

3. Wersja pionowa menu

II. Menu rozwijane

#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;

}

Krokiem pierwszym jest usunięcie parametru float z listy pierwszego

poziomu.

Page 60: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

60 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

3. Wersja pionowa menu

II. Menu rozwijane

#multi_drop_menus li ul {

position: absolute;

width: 7em;

display: none;

left: 100px;

top: 0px;

}

Kolejnym etapem jest ustalenie pozycji elementów listy zagnieżdżonej.

Inaczej menu rozwijane pojawi się bezpośrednio pod elementem

nadrzędnym.

Page 61: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

61 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

4. Umieszczenie rozwijanego menu w dokumencie

II. Menu rozwijane

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.

Page 62: I. Pozycjonowanie elementó#CCC;} I. Pozycjonowanie elementów Ponieważdolny margines pierwszego akapitu styka sięz górnymmarginesem drugiego akapitu, można by sięspodziewać,żeodstępmiędzynimi

62 dr Artur Bartoszewski - Nowoczesne technologie informatyczne - WYKŁAD

Literatura:

W prezentacji wykorzystano fragmenty i przykłady z książki:

• Wyke-Smitch Ch.; CSS Witryny szyte na miarę. Helion, Gliwice

2008.