Progettazione di siti web
a.a. 2021/22

Una doverosa premessa sulla compatibilità
La bellezza dei CSS3

Maria Simi
Aprile, 2022

[W3Schools, CSS3 files]

Dal vecchio HTML agli standard

DOCTYPE switch

Quali browser hanno l'interruttore?


Quindi?

Tabelle di compatibilità per i CSS

Reset CSS e normalize CSS

Famiglie di browser

Ma come testare la compatibilità?

Lo sviluppo dei CSS3

recommendation stages
CSS chart

Supporto da parte dei browser dei CSS3

div {
-webkit-border-image:url(../images/border.png) 30 30 round; /* Safari */
-moz-border-image:url(../images/border.png) 30 30 round; /* Mozilla */
-o-border-image:url(border.png) 30 30 round; /* Opera */
border-image:url(border.png) 30 30 round;
}

Avvertenza: gli esempi sono stati testati su Chrome e Firefox!

I moduli dei CSS3

Bordi stondati: le dimensioni

Ogni angolo viene trattato come un quarto di una ellissi, le cui dimensioni sono specificate da x e y

Se x=y abbiamo una stondatura regolare (un quarto di cerchio).

Bordi stondati: proprietà border-radius

Un piccolo segreto sui bordi ...

Assi e coordinate cartesiane

Box-shadow

Effetti sul testo

Border-image

W3Schools

Background-size

Sfondi multipli

Gradienti lineari

Gradienti radiali

CSS3 transform: 2D

div {
-ms-transform: rotate(30deg); /* IE 9 */
-webkit-transform: rotate(30deg); /* Chrome, Safari, Opera */
transform: rotate(30deg);
} 

Traslazioni

Rotazioni

Scalature

Inclinazioni (skew)

CSS3 transition

div {
-webkit-transition: width 2s; /* For Safari 3.1 to 6.0 */
transition: width 2s;
} 

Esempio di transizione CSS3

Animazioni CSS3

div {
-webkit-animation: myfirst 5s; /* Chrome, Safari, Opera */
animation: myfirst 5s; /* Standard syntax */
}
@-webkit-keyframes myfirst { /* Chrome, Safari, Opera */
from {background: red;} to {background: yellow;}
}
@keyframes myfirst { /* Standard syntax */
from {background: red;} to {background: yellow;}
} 

Esempio 1 di animazione CSS3

Esempio 2 di animazione CSS3

Esempio 3 di animazione CSS3

Esempio 4 di animazione CSS3

Importanti novità per il layout

Tra le caratteristiche più avanzate dei CSS ce ne sono alcune che semplificheranno il layout di pagina e lo renderanno molto più semplice.

Testo su più colonne

Contenitori flex (flexbox)


Da: CSS-tricks

Regole per il contenitore: flex-direction

Regole per il contenitore: flex-wrap

Regole per il contenitore: justify-content

Regole per il contenitore: align-items

display: flex (allineamento orizzontale)

display: flex (allineamento verticale)

Contenitori flex: Esempio 1

<ul class="flex-container">
  <li class="flex-item">1</li>
  <li class="flex-item">2</li>
  <li class="flex-item">3</li>
  ...
</ul>
  

Esempio 1

Vediamo il comportamento responsive

.flex-container {
  padding: 0;
  margin: 0;
  list-style: none;
  display: flex;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-around;
}

Contenitori flex: Esempio 2

<ul class="flex-container">
  <ul class="navigation">
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#">Contact</a></li>
  </ul>

Esempio 2

Vediamo come si può combinare con media-queries

.navigation {
  list-style: none;
  margin: 0; 
  background: deepskyblue;
  display: flex;
  flex-flow: row wrap;
  justify-content: flex-end;
}
.navigation a {
  text-decoration: none;
  display: block;
  padding: 1em;
  color: white;
}
.navigation a:hover {
  background: #1690d6;
}

Regole per gli elementi dentro un flex

Le proprietà dei flex

  • Proprietà del contenitore
    • display: flex | inline-flex
    • flex-direction: row | column
    • flex-wrap: wrap | nowrap
    • justify-content:
      flex-start | flex-end |
      center | space-between | space-around
    • align-items:
      stretch | flex-start | flex-end |
      center | baseline
  • Proprietà degli elementi contenuti
    • order: n
    • flex-grow: n
    • flex-shrink: n
    • align-self: auto | flex-start |
      flex-end | center | baseline | stretch

Conclusione