Brevi cenni sui Cascading Style Sheets

logo CSS Oreste Signore, <oreste@w3.org>
Responsabile Ufficio Italiano W3C
Area della Ricerca CNR - via Moruzzi, 1 - 56124 Pisa


Master in Comunicazione e New Media
Ateneo Pontificio Regina Apostolorum
Corso: Architettura del Web


Presentazione: http://www.w3c.it/education/2012/upra/css/
Versione pdf: http://www.w3c.it/education/2012/upra/css.pdf

Formato XHTML realizzato usando il tool Slidy di Dave Raggett.
Slidy dovrebbe funzionare in tutti i browser moderni con Javascript abilitato. Usare freccia destra/sinistra per muoversi da una slide all' altra.
Vedi la pagina di aiuto di Slidy per ulteriori informazioni.

Cover page W3C Office Logo Cover page Weblab Logo Valid XHTML 1.0! Valid CSS!

CSS

Cascading Style Sheets
Fogli di Stile in Cascata

Contenuto e stile

Versioni di CSS

Le regole

 elemento1, elemento2 { proprietà:valore; proprietà:valore; }

Le regole: alcuni esempi

Esempio 1
  • p {color: red;}
  • il selettore p indica che la regola va applicata a tutti gli elementi p del documento
  • la proprietà modificata è color
  • il valore che assume la proprietà è red
Esempio 2
  • h1, h2 {color: #00ff00; font-size: 24px; }
  • tutti gli elementi h1 e h2 saranno in verde
  • tutti gli elementi h1 e h2 saranno con caratteri di dimensione 24px
  • esempio di pagina con stile CSS internal

“One size fits all?”

Definire sempre un CSS per la stampa!

 @media print 
   {
       body {
       margin-left: 3cm;
       margin-right: 3cm;
       margin-top: 3cm;
       margin-bottom: 3cm;
       background-color: #ffffff;
       color: #000000;
       font-size: 10.5pt;
       font-family: Arial, Helvetica, sans-serif;
       }
       h1, h2, h3 { 
         color: #0000ff;
       }
       h1.title { 
         font-size: 18pt; 
         font-family: Arial, Helvetica, sans-serif; 
         font-weight: bold
       }
       …
       .leftMenu {display: none;}
       …
   }

Dove definire gli stili

inline o embedded
All'interno del tag di riferimento
internal
All'interno del tag style
external
Importandolo con il tag style o indicandolo nel tag link

Stile inline (o embedded)

Stile internal

Stile external

Tipi di regole del css

Come individuare gli elementi su cui agisce il css

Le regole di inheritance (ereditarietà)

inheritanceTree (14K)

Ereditarietà

Valori ereditati

La dichiarazione !important

Ordine della cascata

Valori di proprietà in CSS

Le proprietà CSS possono essere nomi o valori - I nomi sono tutte parole chiave CSS

Esempi: nomi di proprietà e valori

Nome Valore
display none
font-style italic
margin-top 0.5in
font-size 12pt
border-style solid
color #CC0033
background-color white
background-image url(http://www.isti.cnr.it/immagini/sfondoblu.gif)
list-style-image url(/immagini/pallinorosso.png)
line-height 120%

Unità di misura

(vedi: http://www.w3.org/TR/CSS2/syndata.html#length-units)

Unità di misura relative

Unità di misura in percentuale

Il testo

Del testo è possibile controllare sia gli aspetti relativi al font che quelli relativi all'organizzazione del testo nella scatola di riferimento:

Modello di formattazione

Box

Le scatole hanno delle proprietà che permettono di definire

La larghezza della scatola è data dalla somma della larghezza del contenuto (ovvero dell'elemento testo o immagine) + quella delle aree dei padding, bordi e margini.

Box

Tipi di elementi

<div> e <span>

<div class="nomeclasse">
<p>
In una div possono comparire elementi inline, e anche
<span class="specificaSpan"> parole che assumono le caratteristiche</span>
assegnate alla classe "specificaSpan".<br />
La div può avere caratteristiche di visualizzazione particolari.
</p>
</div>

html5 introduce delle specializzazioni di div: nav, footer, … sono elementi strutturali che potranno essere usati per specificare parti strutturali della pagina

elementi strutturali in html5

Posizionamento

Come si inseriscono le scatole nello spazio di visualizzazione:

Modello visuale di CSS

Proprietà che controllano il tipo di posizionamento e quello di scatola:

Un esempio di posizionamento

un blocco
allineato
a destra
un blocco
allineato a sinistra

un paragrafo che si estende su alcune righeper mostrare come sono posizionati vari elementi all'interno della pagina XHTML

ancora un paragrafo con elementi inline grassetto e italic

div in posizione assoluta

Un esempio di posizionamento

<div>
<div style="display:block; float:right;background:#ffeeee;border-style: solid; border-width: 1px;">un blocco <br/> allineato<br/> a destra</div>
<div style="display:block; float:left;background:#ffeeee;border-style: solid; border-width: 1px;">un blocco <br/> allineato a sinistra </div>
<p style="display:block; border-style: solid; border-width: 1px;">un paragrafo che si estende su alcune <span style="display:inline; border-style: solid; border-width: 1px; font-size: 200%;">righe</span>per mostrare come sono posizionati vari elementi all'interno della pagina XHTML</p>
<p style="display:block; border-style: solid; border-width: 1px;">ancora un paragrafo con elementi inline <span style="display:inline; font-weight:bold; border-style: solid; border-width: 1px;">grassetto</span> e <span style="display:inline; font-style:italic; border-style: solid; border-width: 1px;">italic</span>
<div style="display:block; position:absolute; top:180px; left: 280px; width: 150px; background:#eeeeff;border-style: solid; border-width: 1px;">div in posizione assoluta</div>
</p>
</div>

Il layout “fluido”

Raggruppamento di Selettori

I selettori (quadro sinottico)

Tipo Significato (la regola si applica a ...) Esempio
selettore universale tutti gli elementi nel documento *
element type tutti gli HTML elements del tipo del selettore h1
p
class selector tutti gli elementi HTML che precedono il punto (o tutti, se non è specificato nulla) la cui definizione li rende elementi della classe il cui nome segue il punto .articletitle h1.important
ID selector l' unico elemento nel documento il cui attributo coincide con la stringa che segue il simbolo # #special3
p#special52
pseudo-element selector (CSS2) le istanze dello pseudo-element p:first-letter
p:first-line
h1:first-child
pseudo-class selector (CSS2) istanze della pseudo-classs, la cui presentazione può variare a seguito dell' interazione dell' utente con la pagina a:hover
a:active
a:focus
a:link
a:visited
body:lang(d)
descendant selector tutti gli elementi del tipo più a destra di una lista (separata da spazi), solo quando l' element type discende dal tipo alla sua sinistra p em
p.wide em
parent-child selector (CSS2) tutti gli elementi del tipo specificato a destra del simbolo ">", che sono figli degli elementi a sinistra del simbolo ">" (è una forma più specifica del descendant selector) body > p
adjacent selectors (CSS2) tutti gli elementi del tipo specificato a destra del segno "+", adiacenti (nel codice HTML) agli elementi a sinistra del segno "+" h1+h2
p+h3
attribute selectors (CSS2) attributi che corrispondono al profilo specificato nelle parentesi quadre p[align]
input[type="text"]
img[alt~="none"]
body[lang|="en"]

Universal Selector

La regola si applica a:
tutti gli elementi nel documento

        * { 
            color: red;
            font-style: ; 
          }


Esempio

Element Type Selector

La regola si applica a:
tutti gli HTML elements del tipo del selettore

body {
      color: white;
      background-color: black;
     }

Esempio

Class Selector

La regola si applica a:
tutti gli elementi HTML che precedono il punto (o tutti, se non è specificato nulla) la cui definizione li rende elementi della classe il cui nome segue il punto

.blue {
       font-family: verdana, arial, sans-serif;
       color: #0000ff;
       }

Saranno in blu tutti gli elementi per i quali si specifica
class="blue" (esempio)

Si possono definire gli elementi che possono appartenere a una classe (esempio):

h1,h2.blue { 
            font-family: verdana, arial, sans-serif; 
            color:#0000ff; 
           }

ID Selector

La regola si applica a:
l' unico elemento nel documento il cui attributo coincide con la stringa che segue il simbolo #

esempio

Pseudo-Element Selector

La regola si applica a:
le istanze dello pseudo-element
(è una proprietà CSS2)

Pseudo-elementi
  • La prima lettera di un paragrafo
              p:first-letter { font-size: 300%; }
              
    
  • La prima linea di un paragrafo
               p:first-line { font-variant: small-caps; }
               
    
  • before, after: si applica prima / dopo il contenuto dell'elemento.

esempio

Pseudo Class Selector

La regola si applica a:
istanze della pseudo-class, la cui presentazione può variare a seguito dell' interazione dell' utente con la pagina
(è una proprietà CSS2)

esempio

Selettori Contestuali

Altri selettori

Descendant Selector

La regola si applica a:
tutti gli elementi del tipo più a destra di una lista (separata da spazi), solo quando l' element type discende dal tipo alla sua sinistra

esempio

Parent-Child Selector

La regola si applica a:
tutti gli elementi del tipo specificato a destra del simbolo ">", che sono figli degli elementi a sinistra del simbolo ">" (è una forma più specifica del descendant selector)
(è una proprietà CSS2)

esempio

Adjacent Selector

La regola si applica a:
tutti gli elementi del tipo specificato a destra del segno "+", adiacenti (nel codice HTML) agli elementi a sinistra del segno "+"
(è una proprietà CSS2)

esempio

Attribute Selector

La regola si applica a:
attributi che corrispondono al profilo specificato nelle parentesi quadre
(è una proprietà CSS2)

esempio

Liste e sottoliste numerate (CSS2)

   ul, ol { counter-reset: item }
   li { display: block; }
   li:before { content: counters(item, "."); counter-increment: item }
   

numera liste e sottoliste nel formato
1
1.1
1.1.1
...

Cambio dinamico dello stile CSS

Tecniche di accessibilità WCAG 2.0

Esempio modifica dinamica di parti del documento

Esempio cambio del file CSS

Gli standard non limitano la creatività

Inoltre: alcuni cenni di CSS3

molte sono le nuove funzionalità che aggiunge CSS3, alcuni esempi di effetti che in genere troviamo in programmi di grafica professionali (provati solo con firefox 3.5):

logo ufficio italiano w3c

Strumenti e stato implementazione

Alcune buone prassi

(rif. cap. 3 Wium Lee & Boss)

Esercizi

Esercizio

Realizzare una pagina XHTML 1.1 con tre blocchi di testo
senza tabelle (a meno che non contengano dati e siano all'interno di un blocco)
senza posizionamenti assoluti

3 blocchi di testo senza tabelle

Una soluzione

Esercizio

Collegarsi al sito http://jigsaw.w3.org/css-validator/ e validare lo stile di una pagina del proprio ente

Eliminare tutti gli elementi e gli attributi di presentazione della pagina e realizzare un foglio di stile

validare il foglio di stile (http://validator.w3.org)

Trasformare la pagina (con un editor testi) in XHTML1 1.1

Avvalersi di Tidy per correggere il codice

Esercizio

Realizzare una pagina XHTML 1.1 con un form impaginato senza tabelle

Una soluzione realizzata utilizzando varie tecniche WCAG 2.0

Esercizio (svolto)

Esercizio per "casa" (mandatemelo via email o ne discutiamo la prossima volta)

Preparare un mini sito Web costituito da tre documenti XHTML1.1 collegati tra loro:

Grazie per l' attenzione

Domande?

... e risposte


Se non è sul Web non esiste ...

... troverete sul sito dell' Ufficio (http://www.w3c.it/)
le slide (http://www.w3c.it/education/2012/upra/css)

Queste slide fanno parte del materiale predisposto per il corso Architettura del Web