Progettazione di siti web
a.a. 2021/22

Fogli di stile: il box model e il visual model

Maria Simi
Marzo, 2022

[Manuale di riferimento del W3C, Niederst]

I modelli

Box model

Box model: la struttura

I quattro lati dei rettangoli

TRouBLe = Top Right Bottom Left    

margin-top: 8px
margin-right: 10px
margin-bottom: 12px
margin-left: 14px

margin: 8px
margin: 8px 8px 8px 8px

margin: 8px 4px 2px
margin: 8px 4px 2px 4px

margin: 8px 2px
margin: 8px 2px 8px 2px

Proviamo i bordi, i margini, i padding

<div style=" width: 80%; background-color: violet; border-width: 10px; border-color: blue; border-style: solid; margin: 20px; padding: 0px; "> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p> </div>

L’attributo width

div#box {
    width: 200px;
    padding: 4px;
    border: 2px;
    margin: 5px;
}

L’attributo box-sizing

Dimensioni e contenitore

Esempio

L'attributo height e trabocchi

Esempio

Layout fluidi

Margini

Collasso dei margini


   margin: 30px


   margin: 50px

Padding

Bordi

Bordi

Un esempio di box e l'inspector

Questo è un esempio di div che consente di analizzare la struttura di un elemento in termini del box model. Usare bottone destro e funzionalità "analizza elemento" del browser.
     width: 90%; 
     border: 10px dashed blue; 
     margin: 50px 0; padding: 40px; 
     background: yellow
   

Liste

Una lista che diventa menu

Da lista a menu: provate!

<head> <style> li {} ul {} </style> </head> <body> <ul> <li>Voce 1</li> <li>Voce 2</li> <li>Voce 3</li> <li>Voce 4</li> </ul> </body>

Tabelle

border-collapse: separateborder-collapse: collapse

Tabelle: esempio

<table>
   <tr id="riga1">
      <th>Titolo 1</th>
		<td>Cella 1</td> 
		<td>Cella 2</td>  
   </tr>
		...
</table> 

Aggiungiamo un po’ di stile con i CSS ...

Esempio tabella

Tabelle e CSS

table {border: 1px solid black;
		  border-collapse: collapse }

 td { vertical-align: middle; 
      border: 1px solid red }

 th {text-align: center; 
     font-weight: bold; font-size: x-large }
 
 tr#riga1 { text-align: left }
 tr#riga2 { text-align: center }
 tr#riga3 { text-align: right } 
 td#centro {background: #aaaaaa}

Esempio tabella

Visual model

Tipi di elementi

Elementi blocco e inline

  • Blocchi: normalmente (nel flusso normale) provocano una interruzione di linea
  • Elementi Inline: non provocano una interruzione di linea, ma tendono a riempire tutta la riga.

    Inline

div con sfondo fucsia

Paragrafo di testo messo qui per mostrare l’interruzione di linea.


Testo precedente Testo enfatizzato Testo successivo

La proprietà display

Da lista a menu orizzontale

<head> <style> li {border: 1px solid; background-color: orange; text-align: center; margin: 5px; height: 20px; vertical-align: middle; padding-top: 4px;} ul {list-style-type: none; padding: 0px; border: 1px solid; background-color: #eee; width: 100px;} </style> </head> <body> <ul> <li>Voce 1</li> <li>Voce 2</li> <li>Voce 3</li> <li>Voce 4</li> </ul> </body>

Nascondere un elemento

Posizionamento

Scatole flottanti

float: left

Questo è un paragrafo di testo che si inserisce A destra per il fatto che il div fucsia è stato dichiarato di tipo float left. Questo è un paragrafo di testo che si inserisce ...

float:right

Questo è un paragrafo di testo che si inserisce a sinistra per il fatto che il div fucsia è stato dichiarato di tipo float right. Questo è un paragrafo di testo che si inserisce ...

Esempio float

Posizionamento esplicito

Esempio di posizionamento relativo inline

<head> <style> body {font-size: 1.5em; font-family: Verdana;} .pedice { position: relative; top: 12px; left:6px; line-height: 2.4em; color: blue; font-size: smaller; </style> </head> <body> <p>Qui utilizziamo il posizionamento relativo per spostare un elemento inline che compare in un testo in una posizione leggermente spostata in <span class="pedice"> basso a destra</span>. Lo spazio che sarebbe stato occupato dall'elemento rimane vuoto ma viene mantenuto.</p> </body>

Posizionamento relativo di blocchi

<head> <style> img { width: 90px; height: 90px; position: relative;} </style> </head> <body> <img src="Esempi/quadrato.gif"> <img src="Esempi/quadrato.gif"> <img src="Esempi/quadrato.gif"> <img src="Esempi/quadrato.gif"> </body>

Posizionamento assoluto

Blocco contenitore

Esempio

Dove posizionarsi

Posizionamento fisso (fixed)

Esempio

Altri esempi

La terza dimensione

Esempio z-index (caso normale)

Esempio z-index

Strategie per il layout di pagina

Da Niederst: Learning web design

Layout fisso

Layout fisso:esempio


Layout fluido

Layout fluido:esempio


Layout elastico

Layout ibrido: esempio


Schemi di pagina

Il futuro del layout con i CSS

Risorse per CSS