Home Stampante Corso HTML e Css

Lezione 2 - Il modello a box di CSS

Il modello a box; per ogni elemento di un documento HTML, CSS definisce un'area rettangolare destinata ai contenuti che può essere corredata di padding, border e margin.

1 - Modello di contenimento.

Nella lezione precedente abbiamo mostrato come gli elementi di HTML costituiscono una struttura ad albero dalla cui radice, l'elemento html, dipartono due rami principali, head e body, su cui possono innestarsi altri rami.

Da un altro punto di vista possimo considerare l'elemento html come il contenitore degli elementi head e body.

L'elemento head è il contenitore dei metaelementi, fra i quali, al momento, possiamo elencare title, meta e link.

L'elemento body è il contenitore degli elementi testuali e multimediali del documento. Sino ad ora abbiamo visto gli elementi div, h1, h2, p, a e abbiamo potuto constatare come ognuno di essi possa fungere da contenitore per qualche altro elemento.

Ecco come può essere rappresento graficamente il modello di contenimento degli elementi di Esempio_1.html, presentato nella Lezione 1, dopo aver eseguito gli esercizi proposti.

Mentre gli elementi di head sono sostanzialmente invisibile per l'utente, fermo restando che se omessi o se usati in maniera errata possono causare il malfunzionamento dei browser, sino ad impedire completamente la restituzione del documento, gli elementi del body hanno tutti aspetti visuali, nel senso che possono essere tutti visualizzati sullo schermo in una propria area di visualizzazione definita tramite i CSS.

L'argomento di questa lezione è sulla visulizzazione dei singoli elementi e su alcune cose che succedono quando due o più elementi sono adiacenti.

L'altro argomento fondamentale, che vedremo in una prossima lezione, è su come i diversi elementi possono essere disposti all'interno dei propri contenitori.

Quando si padroneggierando questi due aspetti il più sarà fatto. Occorrerà imparare ad utilizzare un insieme minimo di elementi, il loro numero crescerà in base alle nostre esigenze, ma l'importante è che riusciremo a progettare pagine web secondo i lay-out da noi preferiti e che si comporteranno esattamente secondo i nostri desideri.

Fra i due, il modello a box è più facile da capire e inoltre la sua comprensione è propedeutica alla comprensione dell'altro. Vale la pena studiarlo.

1.1 - Rappresentazione grafica del modello di contenimento del file Esempio_1.html

images/ModelloContenimento.svg
Figura 1 - Modello di contenimento di un documento HTML

2 - Modello a box.

BoxModel
Figura 1 - Box Model

Tutti gli elementi di un documento HTML sono racchiusi in aree rettangolare, chiamate box

  • ogni box è formato da area concentriche: un area del contenuto, content area, circondata da "cuscinetti" paddings che a loro volta sono delimitati da bordi, borders. Il tutto circondato da margini, margin.
  • le proprietà width e height di un elemento riguardano la sua content area.
  • I box relativi ad elementi figli di quello di cui stiamo parlando vanno ad occupare la conten area del padre ma, vedremo in seguito, che non necessariamente saranno vincolati a rimanere entro i suoi limiti. Questo è un aspetto che riguarda l'argomento successivo sopra accennato.
  • le dimensioni di un box sono date dalla somma delle dimensioni della content area, con quelle dei paddings, dei borders e dei margins.
  • paddings, borders e margins sono tutti definiti da quattro aree, top, right, bottom e left sempre referenziate in questo ordine.
    • l'oggetto padding comprende padding-top, padding-right, padding-botton, padding-left. Ognuno di essi può avere uno spessore, width, distinto da altri, ma un unico colore di background, lo stesso della content area
    • l'oggetto border comprende: border-top, border-right, border-bottom, border-left. Ognuno di essi può avere spessori, width, colori, color, e stili, style, distinti.
    • l'oggetto margin comprende: margin-top, margin-right, margin-bottom, margin-left. Ognuno di essi può avere spessori, width, distinti, ma tutti sono trasparenti.
  • le dimensioni complessive di due box adiacenti, normalmente, si sommano, ad eccezione dei margini verticali il più piccolo dei quali collassa (sparisce). Significa che se ho due box, uno sotto l'altro, dotati di due margini di dimensioni non nulle, rimane solo il margine più grande.
  • i bordi normalmente non collassano ma possono essere resi collassabili nelle tabelle con la proprietà border-collapse
  • nessuna delle proprietà di padding, border e margin è ereditaria
  • lo spessore iniziale di padding e margin cioè padding-widht e margin-widht è 0.

3 - Esempi.

Esaminiamo alcuni esempi di applicazione di proprietà del modello a box.

L'oggetto a cui applicheremo le proprietà del box model è un elemento div largo 100 pixel, di colore verde, posto all'interno di una div più grande di colore grigio. All'interno della div verde ho posto un elemento p con bordi neri.

3.1 - paddings, borders e margins uniformi.

box1

Il box di cui parlo è l'area verde interna al contenitore grigio.

La content area è quella delimitata dal bordo nero intorno alla scritta "box1".

I padding, top, right, bottom e left, hanno tutti le stesse dimensioni e sono le aree verdi fra la content area e i border rossi.

I border li ho fatti tutti della stessa dimensione e colore.

Anche i margin sono tutti della stessa dimensione e sono le aree grigie intorno al bordo rosso.

Ecco le regole di stile che definiscono box1:

	#box1{
		width:100px;
		background-color:lime;
		padding:15px;
		border-style:solid;
		border-width:5px;
		border-color:red;
		margin:10px;
	}						
						

3.2 - paddings, borders e margins con dimensioni e colori diversi.

box2

In questo esempio ho assegnato dimensioni diverse ai padding ai bordi e ai margini.

Ecco le regole di stile che definiscono box2:

	#box2{
		width:100px;
		background-color:lime;
		padding:15px 5px 10px 20px;
		border-style:solid;
		border-width:10px 8px 6px 4px ;
		border-color:red blue green black;
		margin:20px 10px 40px 30px;
	}
						

La dichiarazione di stile:

		{ margin:20px 10px 40px 30px;} 	

è equivalente a:

		{ 
		  margin-top:20px; 
		  margin-right:10px;
		  margin-bottom:40px;
		  margin-left:30px;
		} 		  
				

3.3 - proprietà border-style e border-width

box3

In questo esempio vediamo alcuni possibili valori di border style.

Ecco le regole di stile che definiscono box3:

	#box3{
		width:100px;
		background-color:white;
		padding:15px;
		border-style:dotted dashed double none;
		border-width:2px 2px 4px;
		border-color:black;
		margin:10px;
	}
						

3.4 - altri valori per border-width.

box4

In questo esempio vediamo altri possibili valori per border-width.

Ecco le regole di stile che definiscono box3:

	#box4{
		width:100px;
		background-color:lime;
		padding:15px;
		border-style:dotted dashed double none;
		border-width:thick thin medium;
		border-color:black;
		margin:10px;
	}
						

3.5 - collassamento dei margini verticali.

box1

box2

Il collassamento dei margini verticali

3.6 - somma dei margini laterali

box1

box2

I margini orizzontali non collassano.

3.7 - la proprietà height.

box11 - La content box si adatta al contenuto.

box12 - Avendo impostato la proprietà height, l'altezza della content area rimane fissa e il contenuto deborda.

La proprietà height.

Quando questa proprietà non è impostata,
l'altezza del box si adatta automaticamente alle dimensioni del contenuto.
Se la impostiamo la rendiamo fissa. Così il contenuto può trabordare dal box.

I box 11 e 12 mostrano questo comportamento.

La proprietà height va usata con cautela.

4 - Esercizi.

Per prima cosa scarica il file HTML_02.rar nella cartella CorsoHTML che avrai creato in precedenza.

Estrai la cartella HTML_02 e apri in Notepad++ i file HTML_02.html e HTML_02.css.

Esegui gli esercizi proposti.

Se vuoi vedere il file dell'esempio prima di scaricarlo clicca qui.

Nota.

Il lettore potrà ora fare altre prove ed eventualmente annotare propri appunti nella sezione dedicata.

Un ultima raccomandazione:durante gli esercizi tenere aperti di due strumenti di validazione del codice: W3C Markup Validation Service e W3C CSS Validation Service e verificare i file su cui si è lavorato dopo aver eseguito le modifiche. I browser sono molto tolleranti, e visulizzano bene le pagine anche in presenza di errori, ma gli errori è meglio evitarli.

5 - Per approfondire.

Nelle specifiche ufficiali del w3 consortium puoi consultare:

Nel sito developer mozilla puoi consultare:

In questo sito puoi vedere: