Cascading Style Sheets (CSS) - Autore slide: Stefano Marchetti

Pagina creata da Aurora Liguori
 
CONTINUA A LEGGERE
Cascading Style Sheets (CSS)

Autore slide: Stefano Marchetti

                                  1
Introduzione

Oggi esaminiamo in breve:
  – Principi di CSS
  – Meccanismi per definire CSS

                                  2
HTML + CSS = Presentazione

   CSS

            presentation

  HTML

                             3
HTML + CSS = Presentazione

    CSS per
documenti generici

    CSS per
documenti specifici   presentation

     HTML

                                     4
CSS come stadard
CSS level 1 (W3C Rec. dic. 1996) è un linguaggio di
formattazione visiva. Permette di specificare caratteristiche
tipografiche e di presentazione per gli elementi di un
documento HTML destinato ad essere visualizzato.
CSS level 2 (W3C Rec. Mag. 1998), invece, introduce il
supporto per media multipli (es. aural), e un linguaggio di
layout sofisticato e complesso.
Il supporto dei vari browser a CSS è complesso e difficile.
Infatti, tutti hanno supportato aspetti diverse ed incompatibili
delle caratteristiche di CSS.
In particolare, ancora oggi i browser non supportano per
intero level 2, e d'altra parte nessuno ha mai supportato
soltanto level 1 (i primi browser che supportavano CSS già
avevano meccanismi per il posizionamento assoluto, che fa
parte di level 2).
                                                              5
CSS nelle pagine HTML
Esistono 4 meccanismi per utilizzare i fogli di stile in una pagina HTML:
•    Usare l’elemento STYLE; non esiste una separazione fisica tra
    contenuto del documento e presentazione
     
      H1 { color: green }
     
•   Uso dell'attributo STYLE
     Il paragrafo è verde
•   Usare l’elemento LINK; il documento contiene solo il riferimento al
    foglio di stile. Il foglio di stile può essere usato per più documenti
     
•   Importare il foglio di stile usando la notazione @import
     
         @import url(http://style.com/basic);
     
                                                                             6
Cascading Style Sheets level 1
                 (CSS1)
Un foglio di stile è composto da una serie di regole.
Ogni regola ha la forma:

selettore dichiarazione

Dove dichiarazione ha la forma:

{ proprietà:valore }

Esempio:

P {color:green}

                            Si veda 1.html
                                                        7
Ereditarietà
Un documento HTML può essere visto come un albero:
                  Color:green
                                         green

                                       green
           Color:blue
                   blue        green            green
                                                                            Color:red
   blue         blue      green            green            red

                                                                        Color:yellow
                                 green                green    yellow
                   Color:white
                        white        green           green       yellow

                                                                                        8
Selettori (1)

Il selettore è utilizzato per limitare lo scope di una
dichiarazione (che contiene informazioni su come
formattare un elemento)

                                                         9
Selettori – type selector (2)
Type selectors
Un type selector seleziona un elemento in accordo con il suo tipo
P {color:green}
Il selettore P indica che la dichiarazione deve essere applicata ad
ogni istanza di P

H1 { color: blue }
H2 { color: blue }
H3 { color: blue }

H1,H2,H3 { color: blue }

                            Si veda 2.html
                                                                      10
Selettori – attributo CLASS (3)
CLASS
L’attributo CLASS può essere usato per assegnare una “classe” ad
un elemento (possono essere specificate più classi, separate da
spazi, per un elemento).

Contenuto del paragrafo …

HTML non assegna nessuna semantica alla classe. Se ci sono molti
documenti è meglio scegliere le classi da usare.

.IMPORTANTE { color : red }

Notare le differenze rispetto ai selettori type selector.

                             Si veda 3.html
                                                               11
Selettori – attributo ID (4)
ID
L’attributo ID può essere usato per assegnare un identificatore
unico ad un elemento.

Contenuto del paragrafo …

L’elemento ID può essere usato come destinazione di un link p.e.
 … .

#IMPORTANTE { color : red }

Notare le differenze rispetto ai selettori type selector.

                                                                   12
Selettori – attributo STYLE (5)
STYLE
Non è un selettore quindi non dovrebbe essere nella spiegazione
dei selettori. E’ qui perché è un meccanismo per specificare lo stile
di un elemento. A differenza di CLASS e ID l’attributo STYLE è
usato per dichiarare direttamente la formattazione di un elemento.

Contenuto del paragrafo …

Con questo approccio non c’è una separazione netta tra contenuto
e presentazione. E’ meglio l’elemento STYLE (non l’attributo)
all’inizio del documento (quindi in un unico punto) o un foglio di
stile esterno.

                                                                   13
Selettori – selettori contestuali (6)

Quello visto fino ad adesso sono selettori semplici: si specifica
un elemento per i type selector o il valore di un attributo.
Un meccanismo più sofisticato è dato dai selettori contestuali.
I selettori contestuali usano selettori semplici per specificare
relazioni di contesto.
Esempi di selettore contestuale:

LI P { color : red } uso 2 type-selector

TABLE .IMPORTANTE P { color : red } uso di type selector e
attribute selector

                           Si veda 4.html
                                                                    14
Selettori – selettori esterni (7)
In alcuni casi la selezione del contenuto deve essere basata su
informazioni esterne cioè su informazioni che non fanno parte della
pagina HTML.
CSS1 definisce 2 tipi di informazioni esterne:
• Pseudo-classes:è una proprietà di un elemento che è
  determinato da informazioni esterne per esempio lo stato di un
  link.
CSS1 definisce 3 stati per l’elemento A.
    –  link: link non ancora visitato
    – visited: link già visitato
    – active: link attivo, in corso di attraversamento
    Esempio:
    A:LINK { color : green }
    A:ACTIVE { color : red }
    A:VISITED { color : blue }

• Pseudo-elements: CONTINUA -->
                                                                 15
Selettori – selettori esterni (8)
Pseudo-elements: è contenuto che è identificato da informazioni
esterne e che non è esplicitamente definito da un elemento HTML
come per esempio il primo carattere di un paragrafo. Per esempio
la prima riga di un paragrafo cambia quando la larghezza della
finestra del browser cambia.

CSS1 definisce 2 pseudo-elements, entrambi applicabili
all’elemento P.

first-letter
first-line

Esempio
P.IMPORTANTE:FIRST-LETTER { font-size: 200%; float:left }
P.IMPORTANTE:FIRST-LETTER { text-trasformation:uppercase }
Type selector + Attribute selector + Pseudo element

                                 Si veda 5.html
                                                              16
Selettori – nuovi elementi (9)
L’elemento CLASS viene usato per definire la formattazione di elementi
che hanno già un certo tipo di semantica per la formattazione.
Per evitare questo HTML definisce 2 elementi: DIV e SPAN

DIV
È un element block-level usato per evidenziare un blocco di testo.
Usato senza fogli di stile non cambia la formattazione del contenuto.
Usato con CLASS o ID consente di specificare la formattazione di un
blocco di contenuto.

SPAN
E’ un elemento inline e come per l’elemento DIV se usato senza stili
non cambia la formattazione del testo.

                                                                        17
Selettori – combinare diversi tipi di
             selettori (10)

E’ possibile combinare diversi tipi di selettori.

TABLE P.INITIAL:FIRST-LETTER { font-weight: bold }

                                                     18
Unità - colori
• E’ possibile specificare il nome scegliendo tra 16 nomi
  (come in HTML)
• E’ possibile specificare una tripla RGB p.e. #FF0000
• E’ possibile specificare il valore in forma percentuale
  p.e. rgb(100%,0%,0%)
• E’ possibile specificare il valore con un numero
  decimale p.e. rgb(255,0,0)

                                                        19
Unità - lunghezze
Esistono 2 tipi di lunghezze:
•    Lunghezze misurate in relazione a qualcosa d’altro (per
    esempio rispetto al font o al display)
     – em: specifica per il font, larghezza della lettera ‘M’
     – ex: specifica per il font, altezza della lettera ‘x’
     – px: specifica del display, dimensione di un pixel
•   Lunghezze assolute; non dipendono dalla presentazione
     –   in – inches (2,54cm)
     –   cm – centimetri
     –   mm – millimetri
     –   pt – points (1pt = 1/72 in)
     –   pc – picas (1pc = 12 pt)

Per mantenere la scalabilità del documento è preferibile usare
lunghezze relative.
E’ possibile usare anche valori in percentuale p.e. font-size:200%; 20
Dichiarazioni

L’uso dei selettori è solo il prerequisito per il vero lavoro
da fare e cioè la definizione delle istruzioni per la
formattazione.

                                                           21
Dichiarazioni - font
font-family
si può indicare il nome specifico della famiglia del font p.e. Times o usare il
nome generico della famiglia del font p.e. serif, sans-serif,
monospace, cursive e fantasy. Si usa una lista e viene usato il primo
font disponibile sul browser. E’ buona norma indicare più valori.

font-style
Per alcune famiglie di font esistono diverse stili del font. I valori possibili sono
normal, oblique (o italic)

font-variant
Valori possibili normal o small-caps
small-caps: simile a font-style assegna tutte maiuscole grandi per le
lettere maiuscole e maiuscole piccole per le lettere minuscole. normal per
rimuovere il tutto.

font-weight
Accetta valori compresi tra 100 e 900 a passi di 100. E’ possibile usare
normal e bold come valori; essi corrispondono rispettivamente a 400 e 700.
E’ possibile anche usare lighter e bolder.
                                                                                 22
                                    Si veda 6.html
Dichiarazioni - font
font-size
•    dimensione assoluta: xx-small, x-small, small, medium,
    large, x-large, xx-large
•   dimensione relativa: smaller e larger
•   lunghezza: in genere si usa il punto (pt)
•    percentuale: è una percentuale riferita alla dimensione del
    genitore dell’elemento che si sta considerando

text-decoration
Valori possibili: none, underline, overline, line-through,
blink

text-transform
Valori possibili: capitalize (solo la prima lettera di ogni parola),
uppercase, lowercase, none
                                                                       23
Good usage of CSS's font properties
...
    * Do not specify the font-size in pt, or other
absolute length units. They render inconsistently
across platforms and can't be resized by the User
Agent (e.g browser).
    * Use relative length units such as percent or
(better) em, or, even better, set a base font-size
for the document and use absolute size ([ xx-small
| x-small | small | medium | large | x-large | xx-
large ]) or relative size ([ larger | smaller ])
when defining the font size for a particular
element within the document.
...

 Care With Font Size: http://www.w3.org/QA/Tips/font-size   24
Dichiarazioni – spazi (1)

                            margine

                       bordo
                      padding
Contenuto

                                 25
Dichiarazioni – spazi (2)

margin-left
margin-right
margin-top
margin-bottom
margin
   1   valore: si applica a tutti e 4 i margini
   2   valori: top & bottom, left & right
   3   valori: top, left & right, bottom,
   4   valori: top, right, bottom, left

Esempio
margin: 10px 5px 10px 5px

                                Si veda 7.html
                                                  26
Dichiarazioni – spazi (3)

padding-left
padding-right
padding-top
padding-bottom
padding
   1   valore: si applica a tutti e 4 i padding
   2   valori: top & bottom, left & right
   3   valori: top, left & right, bottom,
   4   valori: top, right, bottom, left

                                                  27
Dichiarazioni – spazi (4)

border-style
    Valori possibili
    – none
    – dotted, dashed, solid, double per definire lo stile della linea
    – groove, ridge, inset, outset per definire lo stile 3D

E’ possibile specificare le caratteristiche dei 4 bordi
    1   valore: si applica a tutti e 4 i bordi
    2   valori: top & bottom, left & right
    3   valori: top, left & right, bottom,
    4   valori: top, right, bottom, left

                                                                    28
Dichiarazioni – spazi (5)

border-width
    Valori possibili
    – none
    – thin, medium, thick per definire lo spessore
    – una lunghezza

E’ possibile specificare lo spessore dei 4 bordi
    1   valore: si applica a tutti e 4 i bordi
    2   valori: top & bottom, left & right
    3   valori: top, left & right, bottom,
    4   valori: top, right, bottom, left

                                                     29
Dichiarazioni – spazi (6)

border-color

E’ possibile specificare il colore dei 4 bordi
    1   valore: si applica a tutti e 4 i bordi
    2   valori: top & bottom, left & right
    3   valori: top, left & right, bottom,
    4   valori: top, right, bottom, left

                                                 30
Dichiarazioni – spazi (7)

border

Se tutti e 4 i bordi sono uguali è possibile specificare style, width e
color

E’ possibile specificare il colore dei 4 bordi
    1   valore: si applica a tutti e 4 i bordi
    2   valori: top & bottom, left & right
    3   valori: top, left & right, bottom,
    4   valori: top, right, bottom, left

                                                                     31
Dichiarazioni – spazi (8)

text-align

Valori possibili:
    left
    right
    centered
    justified

                                         32
Dichiarazioni – spazi (9)

text-indent

Per impostare l’indentazione della prima riga
E’ possibile usare una lunghezza o una percentuale

line-height

Specifica la distanza tra le righe del testo
E’ possibile usare una lunghezza, una percentuale o numero

                                                             33
Dichiarazioni – spazi (10)

word-spacing

Per impostare la distanza tra le parole
E’ possibile usare normal o una lunghezza (la lunghezza viene
aggiunta alla spazio normale tra le parole). E’ possibile specificare
valori negativi.

letter- spacing

Specifica la distanza tra le lettere
E’ possibile usare i valori come con word-spacing

                            Si veda 8.html
                                                                    34
Dichiarazioni – spazi (11)
vertical-align

Per alzare o abbassare lettere o immagini sopra o sotto la baseline

Valori possibili:
baseline
sub
super
top
text-top
middle
text-bottom
bottom
Valore percentuale

                                                                      35
Dichiarazioni - immagini
Le proprietà legate alle immagini valgono anche per gli elementi
INPUT, SELECT, TEXTAREA, OBJECT.

Principali proprietà:

width può avere valori di tipo lunghezza o percentuale

height può avere valori di tipo lunghezza

width e height valgono per gli elementi di tipo “block”

                           Si veda 9.html
                                                                   36
Nota proprietà “float” dei Box
'float'

Value: left | right | none
Initial: none
Applies to: all elements
Inherited: no
Percentage values: N/A

With the value 'none', the element will be displayed where it appears in the text. With
a value of 'left' ('right') the element will be moved to the left (right) and the text will
wrap on the right (left) side of the element. With a value of 'left' or 'right', the element
is treated as block-level (i.e. the 'display' property is ignored). See section 4.1.4 for a
full specification.

IMG.icon {
  float: left;
  margin-left: 0;
}

The above example will place all IMG elements with 'CLASS=icon' along the left side of
the parent element.

This property is most often used with inline images, but also applies to text elements.
                                                                                   37
Dichiarazioni – colori e sfondi

Proprietà:
color: per impostare il foreground
background-color: per impostare il colore di background
background-image: per impostare l’immagine di sfondo
background-repeat valori possibili:
    repeat
    repeat-x
    repeat-y
    ro-repeat
background-attachment: per gestire lo scrolling (scroll, fixed)
background-position:percentuale, lunghezza, top, center, bottom,
left, right, center
background: per impostare tutti i valori per il background

                           Si veda 10.html
                                                              38
Dichiarazioni – proprietà di
              classificazione (1)
E’ possibile cambiare la classificazione di un elemento e cioè farlo
passare da inline a blocco e viceversa.

display: valori possibili block, inline, list-item, none

Se si specifica un elemento di tipo list-item è possibile indicarne il
tipo con la proprietà
list-style-type
    Valori possibili:
    disc (cerchio pieno)
    circle (cerchio vuoto)
    square
    decimal (p.e. 1,2,3, ecc.)
    lower-roman e upper-roman (i,ii, iii e I, II, III ecc.)
    lower-alpha e upper-alpha (a,b,c e A,B,C ecc.)
    none
                                                                       39
                            Si veda 11.html
Dichiarazioni – proprietà di
                classificazione (1)
• Oltre al tipo di simbolo che è possibile utilizzare si può usare la
  proprietà list-style-image (per un list-item) per specificare un
  URL di una immagine.
 ● list-style-position: proprietà usata per impostare la posizione

   della lista: valori possibili inside e outside
 ● list-style: per impostare list-style-type, list-style-image

 ●

 ●
     white-space per gestire gli spazi, tab e newline
     ●
       normal: è il default. Il browser ignora e compatta spazi, tab e
       newline
     ●
       pre: il browser mantiene gli spazi e i tab e trasforma i newline in
       ritorni a capo
     ●
       nowrap: come normal ma il browser va a capo solo in presenza di
       .

                                                                   40
Usare più fogli di stile

L’idea base di CSS è quella di combinare più fogli di stile
(cascading).
Anche quando sembra ci sia un solo foglio di stile ce ne
sono almeno 2 in quanto il browser usa regole di stile
predefinite e interne e quindi è come se usasse un
foglio di stile.

                                                         41
Usare più fogli di stile – conflitti (1)
Poiché diversi fogli di stile possono contenere regole per la stessa
istanza di un elemento possono sorgere dei conflitti.

• Conflitti in seguito alla definizione all’interno di uno stesso foglio di
  stile. Per esempio un type selector per un paragrafo e un selettore
  contestuale che seleziona solo paragrafi all’interno di una tabella
•   Conflitti che nascono dall’uso di più fogli di stile

      browser                    user                   designer

                                                                           inheritance
     style sheet              style sheet              style sheet
                                           
                               cascading                              42
Usare più fogli di stile – conflitti (2)
Il processo di risoluzione dei conflitti individua le regole che creano
conflitti e si applica fino a quando terminano i conflitti.
Il processo di risoluzione dei conflitti è basato su 5 passi:

  •
      Trovare tutte le regole che è possibile applicare all’elemento in
      questione. Per fare questo si usano i selettori che sono stati
      definiti.
  •
      Si cercano eventuali regole segnate come !important
      •
        Es. H1 { color: black ! important; background: white !
        important }
  •
      Ordine by origin. PAG. 311 e 316. Si veda schema slide
      precedente
  •
      Ordinamento per specificità p.e. una regola definita per P è più
      generale che una regola definita per LI P. Vedi SLIDE
      successiva.
  •
      Si ordinano le regole in base all’ordine in cui sono specificate. Le
      regole specificate più avanti hanno una precedenza maggiore.

                                                                      43
                             Si veda 12.html
Usare più fogli di stile – conflitti (3)
NOTA PER LA REGOLA 4 – ordinamento per specificita'

Sort by specificity of selector: more specific selectors will override more
general ones. To find the specificity,
count the number of ID attributes in the selector (a),
the number of CLASS attributes in the selector (b),
and the number of tag names in the selector (c).
Concatenating the three numbers (in a number system with a large base)
gives the specificity.

Some examples:
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 */

                                                                         44
Cascading Style Sheets level 2
                   (CSS2)
•    In CSS1 non c’è il concetto di media. In CSS2 c’è. (per esempio il
    volume per il suono).
•   CSS2 ha il concetto di paged-media
•    CSS1 non ha proprietà per formattare tabelle ma solo testo e
    immagini dentro le tabelle.
•   CSS2 introduce il concetto di posizionamento assoluto.
•    CSS2 aggiunge altri selettori p.e. child selector e attribute
    selector
•    CSS2 introduce la numerazione automatica p.e. per capitoli,
    intestazioni ecc.
•    CSS2 definisce nuove pseudo classi p.e. per attivazione di un
    elemento alla pressione del mouse ecc.

                                                                     45
I selettori in CSS2: child selectors

•   A child selector matches when an element is the child of some element.
    A child selector is made up of two or more selectors separated by ">".
•   The following rule sets the style of all P elements that are children of
    BODY:
     BODY > P { line-height: 1.3 }
Example(s):
•   The following example combines descendant selectors and child
    selectors:
     DIV OL>LI P
•   It matches a P element that is a descendant of an LI; the LI element
    must be the child of an OL element; the OL element must be a
    descendant of a DIV. Notice that the optional whitespace around the ">"
    combinator has been left out.

                                                                               46
I selettori in CSS2: adjacent sibling
                   selectors
•   Adjacent sibling selectors have the following syntax:
     E1 + E2
•   where E2 is the subject of the selector. The selector matches if E1
    and E2 share the same parent in the document tree and E1 immediately
    precedes E2.
•   The next example reduces the vertical space separating an H1 and an H2
    that immediately follows it:

     H1 + H2 { margin-top: -5mm }

                                                                      47
I selettori in CSS2: attribute selectors
        - matching attributes and attribute
                       values
Attribute selectors may match in four ways:
•   [att]
    Match when the element sets the "att" attribute, whatever the value of
    the attribute.
•   [att=val]
    Match when the element's "att" attribute value is exactly "val".
•   [att~=val]
    Match when the element's "att" attribute value is a space-separated list of
    "words", one of which is exactly "val". If this selector is used, the words
    in the value must not contain spaces (since they are separated by
    spaces).
•   [att|=val]
    Match when the element's "att" attribute value is a hyphen-separated list
    of "words", beginning with "val". The match always starts at the
    beginning of the attribute value. This is primarily intended to allow
                                                                                  48
    language subcode matches (e.g., the "lang" attribute in HTML) as
I selettori in CSS2: attribute selectors
  - matching attributes and attribute
                 values
Example(s):
For example, the following attribute selector matches all H1 elements that
   specify the "title" attribute, whatever its value:
H1[title] { color: blue; }

In the following example, the selector matches all SPAN elements whose
    "class" attribute has exactly the value "example":
SPAN[class=example] { color: blue; }

                                                                         49
I selettori in CSS2: attribute selectors
  - matching attributes and attribute
                 values
The following selectors illustrate the differences between "=" and "~=". The
   first selector will match, for example, the value "copyright copyleft
   copyeditor" for the "rel" attribute. The second selector will only match
   when the "href" attribute has the value "http://www.w3.org/".

A[rel~="copyright"]
A[href="http://www.w3.org/"]

The following rule will match for values of the "lang" attribute that begin
   with "en", including "en", "en-US", and "en-cockney":

*[LANG|="en"] { color : red }

                                                                              50
I selettori in CSS2: pseudo-classes
The :first-child pseudo-class matches an element that is the first child of some other
   element.
Example(s):
In the following example, the selector matches any P element that is the first child of
    a DIV element. The rule suppresses indentation for the first paragraph of a DIV:
DIV > P:first-child { text-indent: 0 }
This selector would match the P inside the DIV of the following fragment:
      The last P before the note.
     
        The first P inside the note.
     
but would not match the second P in the following fragment:
      The last P before the note.
     
       Note
        The first P inside the note.
                                                                              51
I selettori in CSS2: pseudo-classes
Interactive user agents sometimes change the rendering in response to user actions.
    CSS provides three pseudo-classes for common cases:

  * The :hover pseudo-class applies while the user designates an element (with
   some pointing device), but does not activate it. For example, a visual user agent
   could apply this pseudo-class when the cursor (mouse pointer) hovers over a box
   generated by the element. User agents not supporting interactive media do not
   have to support this pseudo-class. Some conforming user agents supporting
   interactive media may not be able to support this pseudo-class (e.g., a pen
   device).
  * The :active pseudo-class applies while an element is being activated by the user.
   For example, between the times the user presses the mouse button and releases
   it.
  * The :focus pseudo-class applies while an element has the focus (accepts
   keyboard events or other forms of text input).
   While :hover applies when a visitor mouses over a link, :focus applies when the
   visitor does something to indicate her attention to a web page element, usually by
   clicking or tabbing into it.

                                                                                 52
I selettori in CSS2: pseudo-classes
The pseudo-class ':lang(C)' matches if the element is in language C. Here C is a
   language code as specified in HTML 4.0 [HTML40] and RFC 1766 [RFC1766].

Example

HTML:lang(fr) {font-family: "Times New Roman", serif;}

                                                                                   53
I selettori in CSS2: pseudo-elements

The ':before' and ':after' pseudo-elements can be used to insert
  generated content before or after an element's content.

http://www.w3schools.com/css/tryit.asp?filename=trycss_before

                                                                   54
Tabelle
CSS permette di definire proprietà sofisticate per gli
  elementi di una tabella, in termini di scatole per
  gruppi di colonne, colonne, gruppi di righe, righe, e
  singole celle.

                                                          55
Font
Elaborazioni tipografiche sofisticate possono richiedere l'uso di font che
   forse sono e forse NON sono disponibili sul computer dell'utente.
CSS permette di specificare font anche non disponibili, fornendo un
   meccanismo per scaricarlo dal server…
       @font-face {
         font-family: "Robson Celtic";
         src: url("http://site/fonts/rob-celt")
              format("truetype");
       }

                                                                             56
I media
In CSS è possibile specificare regole di stile specifiche per il tipo di media
   utilizzato.
Attualmente CSS permette di specificare i seguenti tipi di media: aural
   (sintetizzatore di voce), braille (terminale braille elettronico),
   embossed (pagina in braille a rilievo), handheld (agenda elettronica
   dallo schermo piccolo), print (carta stampata), projection (proiettore
   da presentazioni), screen (schermo di computer grafico e a colori), tty
   (terminale a carattere), tv (schermo televisivo, di dimensioni anche
   grandi ma con risoluzione pessima).
Attraverso @media è possibile specificare regole diverse per ogni media:
  @media   print {
    BODY   { font-size: 10pt }
  }
  @media   screen {
    BODY   { font-size: 12pt }
  }
  @media   screen, print {
    BODY   { line-height: 1.2 }
  }
                                                                        57
Aural style sheets
•   When using aural properties, the canvas consists of a three-dimensional
    physical space (sound surrounds) and a temporal space (one may
    specify sounds before, during, and after other sounds). The CSS
    properties also allow authors to vary the quality of synthesized
    speech (voice type, frequency, inflection, etc.).

Example(s):

     H1, H2, H3, H4, H5, H6 {
         voice-family: paul;
         stress: 20;
         richness: 90;
         cue-before: url("ping.au")
     }
     P.heidi { azimuth: center-left }
     P.peter { azimuth: right }
                                                                         58
     P.goat { volume: x-soft }
Quirks mode e strict mode (1)
• All’inizio, pochi browser supportavano correttamente il
  CSS, e molte pagine sono state fatte usando un
  modello CSS scorretto e locale ad uno specifico
  browser.
• Queste stesse pagine poi non funzionavano con i
  browser che implementavano correttamente le
  specifiche CSS.
• Per questo motivo tutti i browser moderni hanno
  implementato due modelli di interpretazione del CSS,
  uno compatibile con il passato (quirks mode) e uno
  compatibile con le specifiche ufficiali (strict mode).
• Se la pagina non riporta niente, il browser usa il modo
  compatibile, altrimenti se l’autore lo richiede usa il
  modo corretto                                          59
Quirks mode e strict mode (1)
Si introduce allora il discorso dei
Commenti

• CSS vuole risolvere la separazione tra contenuto e
  presentazione in HTML (e in XML)
• Usa una sintassi tutta sua, priva di riferimenti con altri
  linguaggi, usabile sia all'interno del documento che in un
  documento autonomo.
• Le implementazioni di CSS sono quanto di più variabile si
  possa trovare. Non esiste un browser che implementi tutto
  CSS esattamente, e ci sono variazioni tra S.O. e S.O.,
  versione e versione, browser e browser.
• In definitiva, è un livello ulteriore di complessità nella
  progettazione delle pagine, a cui corrisponde una notevole
  quantità di lavoro per ottenere risultati prevedibili su tutti i
  browser.
                                                                61
Conclusioni

Abbiamo parlato di
  – Principi di CSS
  – Meccanismi per definire CSS

                                  62
Riferimenti
Wilde’s WWW, capitolo 6

Altri riferimenti:
• Cascading Style Sheets, level 1
http://www.w3.org/TR/REC-CSS1

•Cascading Style Sheets, level 2
CSS2 Specification http://www.w3.org/TR/REC-CSS2

•CSS Tutorial
http://www.w3schools.com/css/default.asp

•CSS Reference
http://www.w3schools.com/css/css_reference.asp

•CSS - The missing manual
David McFarland - Pongue Press – O'Reilly          63
ISBN 0596526873
Puoi anche leggere