PW - 05 - CSS 02
Lecture Info
Date:
Lecturer: Pierpaolo Loreti
Slides: ()
Argomenti:
Elementi generici div e span
Identificatori id e class
Box model: margin, border, padding, content area
Proprietà box-sizing
Proprietà overflow per controllo overflow del contenuto
Controllo del padding
Controllo del margin
Collasso dei margini
Margini degli elementi inline
Esempio "ogre.html"
Proprietà display
Margini negativi
Bordo
1 Generic Elements
In HTML sono presenti degli elementi generici. Questi elementi non
hanno una semantica ben definita ma assumono significato insieme
agli attributi id
e class
. Vengono utilizzati per motivi grafici o
per legare azioni tramite l'utilizzo di javascript.
Tra gli elementi generici troviamo anche:
<div>
block element generic. Serve per dividere il contenuto e creare layout complessi.<span>
inline element generic. Serve ad identificare all'interno di un testo un insieme di parole o frasi.
2 ID and Class
Sono attributi che possono essere applicati a ogni elemento HTML e hanno le seguenti funzioni:
id
: serve ad assegnare un identificare unico ad un elemento. Il valore assegnato va utilizzato una sola volta nel documento.class
: classifica gli elementi in gruppi concettuali. Spesso usato per assegnare stili css comuni a vari elementi.
I valori assegnati all'attributo (id o class) sono case sensitive e devono rispettare i seguenti vincoli:
Iniziare con una lettera
A-Z
oa-z
o un underscore.Non può contenere spazi.
Può contenere lettere, numeri, trattini, underscore, due punti, puni.
3 Box Model
Ogni elemento html, sia di tipo block che di tipo inline, è
contenuto in un box rettangolare. Alcune proprietà css, tra cui
troviamo width
, height
, padding
, borders
e margins
sono applicate al
box. Per visualizzare i box è possibile utilizzare la proprietà
border.
border: 1px solid black.
Il box dell'elemento definito da CSS è diviso in quattro aree logiche. Graficamente,
che sono, partendo dalla più esterna alla più interna:
Margine: Il margine rappresenta l'area più esterna che c'è tra il bordo del box e il confine esterno dell'elemento.
Bordo: Separa la padding area dalla margin area.
Padding: Il padding separata la content area dal bordo.
Content area: Lo spazio in cui è presente il contenuto da visualizzare.
Di default la proprietà width
permette di specificare la grandezza
della content area. Per specificare la grandezza totale del box
devo pure tenere conto del padding
, del bordo
, e del margin
. In
particolare l'occupazione complessiva, di default, è data da:
left-margin + border-left + padding-left + width + padding-right + border-right + margin-right
L'area visibile è l'unica parte dell'elemento che possiamo modificare con css, ed è formata dalla content area, dal padding, e dal bordo. Il margine quindi, anche se occupa spazio nella pagina, non è visibile, ovvero non lo posso gestire dal punto di vista grafico (ad esempio non lo posso colorare).
3.0.1 box-sizing
In CSS-3 è stata aggiunta la proprietà box-sizing
per risolvere
problemi relativi all'utilizzo di dimensioni in percentuali. La
proprietà box-sizing
permette di cambiare come si comportano le
proprietà width e height. Se non viene specificata, box-sizing
assume il valore default di content-box
, altrimenti può essere
imposta a border-box
.
Se box-sizing è content-box
, allora la width e la height vengono
applicate solamente alla content area (default). Se però
box-sizing è impostata a border-box, allora la width e la height
vengono applicate a tutta l'area visibile, quindi anche al
contenuto visibile, padding e border.
Questa proprietà fu aggiunta storicamente per risolvere dei problemi che venivano fuori quando definivo div con dimensioni in percentuale. Prima infatti succedeva che se avevo un div che come width aveva il 25% di un rettangolo (div) in cui era contenuto, la sua dimensione effettiva era un qualcosa del tipo 25% + 12px, in quanto si dovevano contare anche il padding e il border. In altre parole veniva difficile capire esattamente quanto spazio avevo a disposizione.
3.0.2 overflow
Quando il contenuto visibile è troppo grande rispetto alle
dimensioni specificate (width, height), può succedere un overflow
di contenuto. CSS ci permette di utilizzare la proprietà overflow
per gestire queste situazioni, andandoa definire politiche di
overflow a piacere.
I valori possibili sono:
visibile, hidden, scroll, auto, inherit
il valore di default è visible, e generalmente si tende ad utilizzare hidden in caso di overflow.
3.0.3 padding
La proprietà padding mi permette di controllare tutte e quattro le zone di padding, in modo separato oppure tutte insieme.
padding-top, padding-right, padding-bottom, padding-left. padding: <top>em <right>em <bottom>em <left>em;
3.0.4 margin
La proprietà margin mi permette di controllare lo spazio presente tra il bordo interno dell'area visibile e il bordo esterno. Viene dunque utilizzato per spaziare l'elemento dagli altri elementi della pagina.
Analogamente alla proprietà padding, la proprietà margin può essere definita come segue:
margin-top, margin-right, margin-bottom, margin-left margin: <top>em <right>em <bottom>em <left>em;
Normalmente siamo in grado di definire, per un dato elemento, tutti e quattro i margini (top, right, bottom, left).
Quando due elementi di tipo blocco sono posti uno sopra l'altro, il margine tra di loro non è pari alla somma dei margini ma è pari al massimo margine tra i due. Quindi un margine viene collassato e si mantiene il margine più grande. Questo fenomeno viene chiamato collasso dei margini.
Per gli elementi inline è possibile applicare solamente i margini left e right. I margini top e bottom vengono quindi non applicati, anche se gli andiamo a definire.
3.0.5 negative margins
Formalmente i margini servono per spostare l'elemento.
Questo vuol dire che posso utilizzare margini negativi. Con i margini negativi l'elemento viene spostato, rispetto alla sua posizione naturale, di un certo numero di pixel.
Questa tecnicha può essere utilizzata per sovrapporre elementi oppure per nasconderli e in particolare viene utilizzata nei layout a colonna.
3.0.6 border
Posso modificare il bordo con le seguenti proprietà:
border-style: Posso modificare lo stile sempre utilizzando le proprietà separate oppure la proprietà singola:
border-top-style, border-right-style, border-bottom-style, border-left-style. border-style
Le varie proprietà possono assumere i seguenti valori:
none, dotted, dashed, solid, double, groove, ridge, inset, outset, inherit
border-width: Mi permette di specificare la grandezza del bordo.
border-top-width, border-right-width, border-bottom-width, border-left-width.
Le varie proprietà possono assumere i seguenti valori:
length units, thin, medium, thick, inherit
border-color: Mi permette di specificare il colore del bordo.
border-top-color, border-right-color, border-bottom-color, border-left-color. border-color
Le varie proprietà possono assumere i seguenti valori:
color name or RGB value, transparent, inherit
4 Example
Esempio modifica file "The Ogre Courting.html". Esempio di border, padding e margin. Esempio di margin collision
5 Display
In HTML abbiamo una svariata tipologia di elementi. Noi, approssimando, consideriamo solo due elementi: gli elementi inline e quelli in blocco. La proprietà display ci permette di modificare il "tipo" di appartenenza di un elemento.
Quando definisco un elemento HTML, a questo elemento viene assegnato un tipo di display di default. Ad esempio,
All'elemento
<strong></strong>
viene assegnato il valore inline alla proprietà display.All'elemento
<div></div>
viene assegnato il valore block alla proprietà display.
Notiamo che si può cambiare la proprietà display degli elementi. Posso quindi prendere un elemento inline e trasformalo in un elemento block, e viceversa. Questa proprietà è molto importante e ci permette di sviluppare menu e altri oggetti grafici complessi.