Indice

Logo CNR

Logo ISTI

 

 

 

 

 

  Valid XHTML 1.1! Valid CSS!

CSS

Massimo Martinelli
massimo AT isti DOT cnr [DOT it

CNR-ISTI

Area della Ricerca CNR

via Moruzzi, 1

56124 Pisa


Pisa, 18 Giugno 2019

CSS

Cascading Style Sheets
Fogli di Stile in Cascata

Contenuto e stile

Perché usare CSS è un vantaggo anche per l'accessibilità

Un esempio di impaginazione

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 embedded

Dove definire gli stili

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

stile inline

stile embedded

stile external

Tipi di Selettori

Semplici
I selettori possono specificare un elemento
Raggruppamenti
più elementi
Classi
elementi con uno specifico attributo class o id
Pseudo classi
elementi in uno specifico stato o posizione
Pseudo elementi
parte del contenuto di un elemento
Contestuali
elementi che appaiono in contesto relativo ad altri elementi

Selettore Semplice

Raggruppamento di Selettori

Classi

Pseudo Classi

Pseudo Elementi

Selettori Contestuali

Altri selettori

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

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>

<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

Il testo

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

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

NomeValore
displaynone
font-styleitalic
margin-top0.5in
font-size12pt
border-stylesolid
color#CC0033
background-colorwhite
background-imageurl(http://www.isti.cnr.it/immagini/sfondoblu.gif)
list-style-imageurl(/immagini/pallinorosso.png)
line-height120%

Unità di misura

Unità di misura relative

Unità di misura in percentuale

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

Valori URL

Escape

Parentesi, virgole, spazi, apici singoli (') e doppi (") .negli URI devono essere precedute da un carattere backslash:
'\(', '\)', '\,' (escaped)

oppure sostituite dall'entità corrispondente:

spazio %20
, %2C
' %27
" %22
( %2B
) %2C

Valori di Color

Forme abbreviate


          p { font: bold italic large Palatino, serif }
          body { margin: 1em 2em 3em 4em; }
          body {  margin-top: 1em;
                  margin-right: 2em;
                  margin-bottom: 3em;
                  margin-left: 4em;
               }
          body { padding: 2em; }
          body { padding-top: 2em;
                 padding-right: 2em;
                 padding-bottom: 2em;
                 padding-left: 2em;
               }
      

Ereditarietà

Valori ereditati

La dichiarazione !important

Ordine della cascata

Ordine della cascata (3.2 Raccomandazione)

  1. Cercare tutte le dichiarazioni che si applicano all'elemento/proprietà in questione. Le dichiarazioni si applicano se il selettore si abbina con l'elemento in questione. Se non si applicano dichiarazioni, viene usato il valore ereditato. Se non viene ereditato il valore (questo è il caso per l'elemento "html"e per le proprietà che non eredita), viene usato il valore iniziale
  2. Ordinare le dichiarazioni per peso esplicito: le dichiarazioni marcate '!important' pesano di più delle dichiarazioni non marcate (normali)
  3. Ordinare per origine: i fogli di stile dell'autore superano quelli del lettore che superano i valori di default dello UA (user agent). Un foglio di stile importato ha la stessa origine del foglio di stile da cui è importato
  4. Ordinare per specificità del selettore: selettori più specifici supereranno regole più generali. Per cercare la specificità, contare il numero di attributi ID nel selettore (a), il numero degli attributi CLASS nel selettore (b), e il numero di nomi di tag nel selettore (c). La concatenazione dei tre numeri (in un sistema numerico con base larga) da la specificità. Esempi :
     
    		LI {...} /* a=0 b=0 c=1 -> specificity = 1 */
    		UL LI {...} /* a=0 b=0 c=2 -> specificity = 2 */
    		UL OL LI {...} /* a=0 b=0 c=3 -> specificity = 3 */
    		LI.red {...} /* a=0 b=1 c=1 -> specificity = 11 */
    		UL OL LI.red {...} /* a=0 b=1 c=3 -> specificity = 13 */
    		#x34y {...} /* a=1 b=0 c=0 -> specificity = 100 */
    
    Pseudo-elementi e pseudo-classi sono contate come normali elementi e classi rispettivamente
  5. Ordinare per l'ordine specificato: se due regole hanno lo stesso peso quella specificata per ultima vince. Le regole negli style sheet importati sono considerate prima di quelle nello stesso foglio di stile

Ordine della cascata

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
...

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

Commenti in CSS

i fogli di stile CSS possono includere commenti..I commenti CSS sono come quelli del C /* */, .non<!-- --> come quelli di XML e HTML

/* commento */
cite { display:block; }

/* commento */
pre { display: block; font-size: 16pt; font-weight: bold; }
p { display: block; margin-bottom: 10; }

/* commento
Commento */
h1 { display: block; margin-bottom: 10; }
			

Colori

Colore RGB Decimale RGB Esadecimale Percentuale RGB
red rgb(255,0,0) #FF0000 rgb(100%, 0%, 0%)
blue rgb(0,0,255) #0000FF rgb(0%, 0%, 0%)
green rgb(0,255,0) #00FF00 rgb(0%, 100%, 0%)
white rgb(255,255,255) #FFFFFF rgb(100%, 100%, 100%)
black rgb(0,0,0) #000000 rgb(0%, 0%, 0%)
brown rgb(153,102,51) #996633 rgb(60%, 40%, 20%)
pink rgb(255,204,204) #FFCCCC rgb(100%, 80%, 80%)
orange rgb(255,204,204) #FFCC00 rgb(100%, 80%, 80%)

p { color: black }
em { color: blue}

Keyword - Parole chiave

Esempio:

Elementi Block, Inline e List Item

Elementi Block, Inline e List Item

List Items (LI)

list-style-type

li.i1 { display: list-item; list-style-type: none }
li.i2 { display: list-item; list-style-type: square }
      

list-style-image

li.i1 { display: list-item; list-style-type: none; }
        li.i2 { display: list-item;
        list-style-image: url(pallinopiubellino.gif); 
        list-style-type: none; 
      }
      

Tabelle

Il foglio di stile di default per le tabelle

Tabelle: selettori di colonna

Proprietà che si applicano a colonne e gruppi di colonne

whitespace

p { display: block; white-space: pre; font-family: monospace; }
      

font

font-family

Famiglie di tipi di carattere

font-style

font-variant

Prova  Prova

font-weight

font-size

font-size

Esercizio

Realizzare una pagina XHTML 1.1 con un form impaginato senza tabelle

Una soluzione utilizzate con varie tecniche WCAG 2.0

background

background-image

background-repeat

background-attachment

background-position

Unità di misura assolute

p { background-image: url(immagine.gif);
    background-repeat: no-repeat;
    background-position: 2cm 1cm; }

Parole chiave - keywords

background-position

p	{ background-image: url(immagine.gif);
	  background-repeat: no-repeat;
	  background-position: center center; }

background - forma abbreviata

Overflow (CSS2)

p { overflow: scroll }

Clip (CSS2)

p {  clip: rect(5px, 5px, 5px, 5px);
     overflow: auto }

Visibility (CSS2)

Regole @

Esempio: specifica di regole diverse a seconda del media:


	  @media print {
	      body { font-size: 10pt }
	  }
	  @media screen {
	      body { font-size: 12pt }
	  }
	  @media screen, print {
	      body  { line-height: 1.2 }
	  }

Proprietà aurali

@media aural { voice-family: attore1;
               stress: 20;
               richness: 90;
               cue-before: url("beep.au")
             }

Tipi di regole del css

Come individuare gli elementi su cui agisce il css

Le regole di ereditarietà

inheritanceTree (14K)

Le regole di ereditarietà (2)

Alcune buone prassi

(rif. cap. 3 Wium Lee & Boss)

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"]

Selettore Universale

La regola si applica a:
tutti gli elementi nel documento

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


Esempio

Selettore Element Type

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

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

Esempio

Selettore Class

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; 
           }

Selettore ID

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

esempio

Selettore Pseudo-Elemento

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

esempio

Selettore Pseudo Classe

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

esempio

CSS2 definisce queste pseudo classi:

Selettore Discendenti (Descendant)

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

Selettore Genitore-Figlio (Parent-Child)

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

Selettore Adiacente (Adjacent)

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

Selettore Attributo

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

esempio

Raggruppamento dei selettori

Esempi di barre di navigazione

Esempi di Eric A. Meyer

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):

 

 

CSS3, non solo nuovi effetti

CSS3 non aggiunge solo nuovi effetti, estende in molti punti i precedenti livelli di CSS, ad esempio troviamo nuovi selettori

Strumenti e stato implementazione

Esercizio

Riprendere l'esercizio finale di XHTML

aggiungere stile CSS, (utilizzare elementi div e span)

validare xhtml e css

Grazie per l'attenzione

Domande?