CSS: Cascading Style Sheet

Transcript

CSS: Cascading Style Sheet
CSS
Dott. Nicole NOVIELLI
[email protected]
http://www.di.uniba.it/intint/people/nicole.html
CSS:
Cascading Style Sheet
!  Tecnologia W3C per la definizione dello stile di una
pagina web
!  Contenuto e presentazione sono separati
Vantaggi:
!  chi sviluppa il contenuto di un documento .html può
ignorare la definizione degli elementi di stile
!  È possibile modificare completamente lo stile di un
documento web senza modificarne il contenuto,
semplicemente facendo riferimento ad un diverso
CSS
!  Regola generale: è sempre consigliabile separare lo
la definizione dei contenuti e la definizione dello
stile di una pagina web
CSS validator
!  Cosi come per l’XHTML anche per i CSS è possibile
fare riferimento a servizi di validazione
!  È buona norma validare un CSS prima di utilizzarlo
per essere sicuri che sia correttamente eseguito
dalla maggior parte dei browser esistenti
jigsaw.w3.org/css-validator/
Come dichiarare lo stile di
un documento
!  Inline styles: non è il modo migliore perché non
separa davvero la presentazione dal contenuto
!  Embedded style sheets: consentono di incluedere
un intero CSS in un documento XHTML
!  External style sheets: documenti esterni che
contengono esclusivamente regole CSS di
definizione dello stile
!  Vantaggioso se si vuole uniformare lo stile di diverse
pagine web (ad es.: definizione dello stile di un intero
sito)
!  Attua effettivamente la separazione tra stile e
contenuto: per modificare lo stile di tutte le pagine
del sito è sufficiente modificare l’unico CSS esterno
Inline styles
Nell’esempio, l’attributo ‘style’
ridefinisce, nell’ambito del tag
<p>, lo stile del testo, come
mostrato nell’immagine
c
Embedded Style Sheets <style>
<style>
viene incluso nell’head del
documento e ne definisce
lo stile
L’attributo ‘type’ definisce
il tipo di dati MIME
I CSS usano il tipo ‘text/
css’
‘em’, ‘h1’, ‘p’, ‘.special’
sono gli elementi per cui si
vuole definire lo stile
Embedded Style Sheets <style>
Embedded Style Sheets <style>
Definizione di style class
External Style Sheets
styles.css
/* External stylesheet */
body
{ font-family: arial, helvetica, sans-serif }
a.nodec { text-decoration: none }
a:hover { text-decoration: underline }
li em { font-weight: bold }
h1, em { text-decoration: underline }
ul
{ margin-left: 20px }
ul ul { font-size: .8em; }
I CSS esterni sono riusabili: questo riduce l’entità di lavoro del
programmatore di pagine web
La separazione tra contenuto e stile è una buona pratica da applicare
nello sviluppo di pagine web
Collegare un CSS esterno
Come per gli Embedded CSS, il collegamento va specificato nell’head del
documento .html
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Fig. 5.5: external.html -->
<!-- Linking an external style sheet. -->
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>Linking External Style Sheets</title>
<link rel = "stylesheet" type = "text/css” href = "styles.css" />
</head>
<body>
...
</body>
</html>
Uso degli stili definiti dal CSS esterno
Avviene come per gli embedded
Posizionare elementi: posizionamento assoluto
Per controllare l’effettiva posizione (absolute positioning) degli oggetti in un
documento XHTML è possibile utilizzare la proprietà position degli oggetti nella
definizione di un foglio di stile
Definire la posizione assoluta di un oggetto significa impostarne la distanza dai
margini superiore (top), inferiore (bottom), sinistro (left) o destro (right)
Es.:
(1) definisco uno stile chiamato ‘bgimg’
.bgimg { position: absolute;
top: 0px;
left: 0px;
z-index: 1 }
L’immagine sarà posizionata a
partire dall’angolo in alto a
sinistra del documento (a zero
pixel di distanza)
(2) Lo richiamo nel <body> per impostare la posizione dell’immagine ‘bgimg.gif’>
<body>
…
<img src = "bgimg.gif" class = "bgimg" alt = "First positioned image" />
…
</body>
Posizionare gli elementi
Per controllare l’effettiva posizione (absolute positioning) degli oggetti in un
documento XHTML è possibile utilizzare la proprietà position degli oggetti nella
definizione di un foglio di stile
Definire la posizione assoluta di un oggetto significa impostarne la distanza dai
margini superiore (top), inferiore (bottom), sinistro (left) o destro (right)
Es.:
(1) definisco uno stile chiamato ‘bgimg’
.bgimg { position: absolute;
top: 0px;
left: 0px;
z-index: 1 }
La proprietà ‘z-index’ definisce un
indice di sovrapposizione degli
elementi: elementi con z-index
superiore risultano sovrapposti ad
elementi con z-index superiore
(2) Lo richiamo nel <body> per impostare la posizione dell’immagine ‘bgimg.gif’>
<body>
…
<img src = "bgimg.gif" class = "bgimg" alt = "First positioned image" />
…
</body>
Effetto di z-index
L’immagine blu risulta in
background (z-index:1)
L’immagine arancio le si sovrappone
nel livello immediatamente
superiore
(z-index:2)
Il testo è in foreground rispetto ad
entrambe (z-index:3)
z-index:1
z-index:2
z-index:3
Posizionamento relativo
Posizionamento di un elemento rispetto ad un altro elemento del documento
Il posizionamento rispetta l’ordine di collocazione degli elementi nella pagina:
attenzione ad evitare la sovrapposizione tra elementi!
Esempio
Il posizionamento del testo nell’esempio avviene rispetto all’altezza del
font (la x-height del font) -> vediamo come…
Posizionamento relativo
L’uso di ‘ex’ effettua il
posizionamento di un oggetto
rispetto all’altezza del font
minuscolo
<span>
!  Non effettua cambi visuali nelle proprietà di un testo
così com’è ma effettua il ‘raggruppamento’ degli
elementi di testo contenuti nel suo scope
!  un testo racchiuso tra <span></span> può essere
oggetto di definizione di proprietà di stile con i CSS
!  È utilizzato per raggruppare elementi ‘inline’ in un
documento
!  É un modo per individuare un frammento di testo o
parte di un documento
!  Una volta che il testo è racchiuso in un tag <span> è
possibile modificarne proprietà di stile o manipolarlo
con script (ad es. con JavaScript)
<div>
!  Anche il tag <div> consente di definire dei
raggruppamenti
!  A differenza di <spam> raggruppa elementi a livello
di ‘blocco’ (block-level element)
Es.:
<div style="color:green">
! <h3>This is a header</h3>
! <p>This is a paragraph.</p>
</div>
Definire il background
!  CSS consente di definire il background di blocchi di
elementi
!  Nell’esempio in figura, l’aspetto del background
rimane invariato anche se si scorre la pagina
Definire il background
Per definire la posizione di
un oggetto posso combinare
le keyword ‘top’, ‘left’,
‘bottom’, ‘right’
Definisco l’inclusione di un’immagine (background-image: logo.gif) nel
background, la posizione (background-position: bottom right) l’eventuale
ripetizione del background, che in questo caso non è impostata
(background-repeat: no-repeat) e il colore (background-color: #eeeeee)
Definire il background
Definisce l’impostazione del
rientro del paragrafo
Definisco l’inclusione di un’immagine (background-image: logo.gif) nel
background, la posizione (background-position: bottom right) l’eventuale
ripetizione del background, che in questo caso non è impostata
(background-repeat: no-repeat) e il colore (background-color: #eeeeee)
Dimensione degli elementi
!  È possibile definire, oltre al posizionamento, anche le dimensioni
effettive degli elementi inclusi nella pagina
<div style = "width: 20%">
Here is some text that goes in a box
which is set to stretch across twenty
percent of the width of the screen.
</div>
<div "width: 80%; text-align:
center”> Here is some CENTERED
text that goes in a box which is set to
stretch across eighty percent of
the width of the screen.
</div>
<div style = "width: 20%; height: 150px; overflow: scroll">
This box is only twenty percent ofthe width and has a fixed
height. What do we do if it overflows? Set theoverflow property
to scroll!
</div>
Dimensione degli elementi
!  È possibile definire la dimensione degli elementi sia rispetto alla
percentuale di schermo occupata
style = "width: 20%"
!  Sia rispetto alla sua larghezza o altezza assoluta (ad esempio rispetto
alla larghezza della dimensione del font). Se voglio definire un blocco
che è largo dieci volte la larghezza di un font minuscolo scriverò
style = "width: 10em"
Box model e text flow
!  Box model: un ‘contenitore’ virtuale nel cui scope
ricadono tutti gli elementi definiti a livello di blocco
(raggruppamenti di tipo ‘block-level’)
CONTENUTO
Padding
Border
s
Border
Border-width, border-color e border-style consentono dimodificare i bordi
Posso anche definire lo stile di parte dei
bordi di un blocco (es. boder-top-color,
border-left-color…)
Border
Border-width, border-color e border-style consentono dimodificare i bordi
La linea tra i blocchi è dovuta all’uso del
<div>
Elementi ‘floating’
!  float è una proprietà che consente di rimuovere un elemento dal normale
flusso del docuemento e spostarlo su uno dei lati (destro o sinistro) del blocco
a cui appartien.
!  Il contenuto che circonda l'elemento scorrerà intorno ad esso sul lato opposto
rispetto a quello indicato come valore di float.
Elementi ‘floating’
Elementi ‘floating’
<head>
<style type = "text/css">
…
div.floated { …
float: right;
…}
…
</style>
</head>
Definisco lo stile…
<body>
<div class = "section">
<div class = "floated">Corporate
Training and Publishing</div>
<p> Deitel Associates, Inc. is an
… Object Technology.</p>
</
div>
…</body>
… lo uso nel body
Margini
!  La proprietà ‘margin’ consente di settare lo spazio tra l’interno del
bordo di un blocco e il resto del contenuto della pagina
p {…
margin: .5em
…}
Padding
!  La proprietà ‘padding’ determina la distanza tra l’interno del bordo
e il contenuto del blocco. margin-top, margin-right, margin-left e
margin-bottom. Nell’esempio seguente la distanza è impostata pari
a .2em per tutti i margini interni
p {…
padding: .2em
…}
Eredità e conflitti
!  Per la definizione degli stili è valido il concetto di
ereditarietà
!  È possibile definire stili a partire da stili esistenti
!  In questo caso, il nuovo stile eredità tutte le
proprietà dello stile ‘padre’
!  In caso i conflitti la direttiva valida è quella più
specifica ed a livello gerarchico più basso
(ridefinizione degli attributi nello stile ‘figlio’)
Riferimenti
!  Harvey M. Deitel and Paul J. Deitel, Internet & World
Wide Web: How to Program, Ed. Pearson International
Edition
!  http://www.w3.org/
!  www.deitel.com/books/iw3htp4 (per il codice di
esempio degli esercizi)