PW - 04 - CSS 01
Lecture Info
Date:
Lecturer: Pierpaolo Loreti
Slides: ()
Argomenti:
Intro al CSS
Come allegare il CSS all'HTML
Struttura regole CSS
Selettori CSS: selettore elemento, id e classe.
Proprietà dei font: font-family.
Problema fondamentale nella gestione dei font.
Web font e problemi legali nell'erogazione dei font.
Proprietà dei font: Font-size.
Unità di misura assolute e relative.
Best practises per settare font-family e font-size.
Proprietà dei font: Font-weight.
Proprietà dei font: Font-style.
Proprietà dei font: Font-variant.
Gestione dei colori: RGB e RGBa.
Proprietà del testo.
1 Why Use CSS?
CSS, che sta per Cascade Style Sheet è uno standard W3C e viene utilizzato per definire la presentazione del documento HTML (o in generale XML). CSS è un linguaggio indipendente da l'HTML e lo XML ed ha la sua sintassi.
L'utilizzo del CSS permette di avere un maggior controllo sui caratteri e sul layout degli elementi. Utilizzando CSS possiamo infatti separare il concenuto semantico (HTML) da quello di presentazione (CSS).
Oramai è supportato da tutti i browser (dalla versione 2).
Esempio di utilizzo CSS: http://www.csszengarden.com/
2 How to use CSS
Per utilizzare CSS dobbiamo:
Scrivere documento HTML
Scrivere regole CSS
Allegare le regole CSS al documento HTML
Le regole CSS scritte permettono di modificare lo stile predefinito visualizzato dal browser.
2.1 Add CSS into HTML
Abbiamo tre modi:
External style sheet: il file CSS viene collegato tramite il tag
<link>
inserito nell'head del documento HTML.<link rel="stylesheet" type="text/css" href="mystyle.css">
Internal style sheet: Regole nell'head tra i tag
<style> regole CSS </style>
Inline style: Dichiaro le regole per un particolare elemento direttamente nella dichiarazione dell'elemento stesso mediante l'attributo style nel tag di apertura.
<h1 style="color:blue:margin-left:30px;"> This is a heading. </h1>
Notiamo che l'ultimo modo, lo stile inline, non andrebbe mai usato in quanto va a mischiare la struttura del documento con la presentazione del documento. Nella realtà questo metodo viene utilizzato in casi molto particolari, ad esempio per fare override mirati di regole esterne.
2.2 CSS Rule Structure
Le regole contenute nel file CSS sono divisine in due parti: Selector e declaration.
Selector: Il selector (selettore) identifica l'elemento o gli elementi a cui applicare lo stile.
Declaration: La declaration (dichiarazione), costituita da una coppia proprietà valore separati dai :, fornisce l'istruzione di rendering. Ogni dichiarazione è limitata da un ;
Ad un selector posso associare più dichiarazioni.
3 CSS Selectors
Come abbiamo detto le regole CSS sono formate da due parti, un selettore e una dichiarazione. Il selettore può assumere vari valori, tra cui i seguenti:
elemento: Serve per selezionare tutti gli elementi di quel particolare tipo. Così facendo tutti gli elementi del tipo vengono renderizzati dal browser con le stesse regole.
p { color:red; text-align:center; }
id: Seleziono l'elemento con quel particolare id. Prima devo aver definito l'id come attributo nella definizione dell'elemento. Un id può essere utilizzato su un solo elemento. Per poter utilizzare devo come prima comsa inserire l'id nell'HTML
<p id="para1"> ... </p>
e successivamente riferirmi a quel particolare id nel CSS
#para1 {text-align: center; color: red;}
classe: Seleziono l'elemento con quella particolare classe. Prima devo aver definito la classe come attributo nella definizione dell'elemento. Una classe può essere utilizzata su più elementi. Ovvero più elementi possono avere la stessa classe. Per poter utilizzare devo come prima comsa inserire la classe nell'HTML
<p class="center">..</p>
e successivamente riferirmi a quella particolare classe nel CSS
.center{text-align: center; color:red ;}
Un elemento può appartenere a più classi, in questo caso basta separare le varie classi tramite uno spazio nella definizione dell'elemento
<h1 class = "center red">...</h1>
4 Font Properties
Le varie proprietà dei font possono essere specificate una dopo l'altra in una sola riga, nel seguente modo:
font: italic small-caps bold 34px/100px "Times New Roman", Times, serif;
Tra queste proprietà troviamo
4.1 Font-Family
Link utile: font vs typeface
Le font-family sono gruppi di font che condividono un particolare stile. Alcune tra le più importanti famiglie sono:
Serif e Sans-serif.
Monospace, caratterizzata dal fatto che ogni carattere occupa la stessa larghezza.
Proportional font, caratterizzata dal fatto che ogni carattere occupa una larghezza proporzionale al carattere utilizzato.
La proprietà font-family permette di fornire una lista di "typeface" da applicare al testo.
Tutti i font cominciano con la lettera maiuscola, tranne i font generici. I vari font sono separati da virgole. Se il loro nome contiene spazi vanno fra virgolette.
4.1.1 Stack strategies
I font sono un qualcosa che viene installato nel sistema operativo. Questo crea il problema che non tutti i font sono disponibili nei browser.
Infatti quando inseriamo una font-family nel CSS, il browser chiede al sistema operativo se il font è installato e, se è disponibile, lo utilizza. Se invece non è disponibile il browser deve necessariamente utilizzare un altro font.
Si tende quindi a specificare il font desiderato e poi delle opzioni alternative simili. Questa strategie viene chiamata strategie di stack. In particolare il browser scorre la lista dei font da sinistra verso destra e applica il primo che riesce a trovare nel sistema operativo del client.
4.1.2 Web Fonts
Link Utili:
Si possono caricare dei font esterni con la regola
@font-face
. Normalmente i giornali utilizzano questa particolare
regola. Questo metodo però non funziona allo stesso modo su tutti
i browser.
È importante notare che non si possono distribuire i font via web se non si ha il permesso dalla licenza. Quindi se devo utilizzare un font mi devo assicurare che il sistema operativo che ospiterà la pagina del sito web ha quel particolare font, oppure che la licenza del font me lo permetta. I font di google possono essere utilizzati ma in generale bisogna vedere la licenza.
4.1.3 Example
body {font-family: Arial; } tt {font-family: Courier, monospace; } p {font-family: "Duru Sans", Verdana, sans-serif; }
4.2 Font-Size
Specifica la dimensione del carattere.
I valori ammessi sono :
length unit, percentage
xx-small, x-small, small, medium, large, x-large, xx-large
smaller, larger
Nel mondo web moderno si utilizzano le misure relative e non assolute. Questo significa che quando applico una regola ad un elemento contenuto in un altro elemento, la regola fa riferimento al valore eventualmente scalato da regole applicate all'elemento contenitore.
4.2.1 Absolute measures
Non c'è certezza di rendering, non vanno usate a video.
px pixel, definito come 1/96 di un inch. Per CSS3 è una unità di misura assoluta.
pt points (1/72 inch in CSS2.1)
pc picas (1 pica = 12 points)
mm millimeters
cm centimers
in inches (2.54 cm)
4.2.2 Relative measures
Le più importanti unità di misura relative sono:
px pixel, considerata relativa in CSS2.1 perché varia a seconda della risoluzione del display.
em, unità di misura uguale a quella del font-size.
ex x-height, approssimatamente l'altezza di una lowercase "x" nel font.
vw viewport width unit, equal to 1/100 del viewport corrente. Utilizzato per sviluppare siti responsive.
4.2.3 Example
Specifico il size rispetto al valore ereditato. Ad esempio, se metto
body {font-size: 100%; }
allora sto dicendo che il font-size degli elementi del body deve
essere quello di default, che solitamente è 16
px. Successivamente
se ho un h1 all'interno del body e metto
h1 {font-size: 150%; }
allora il font-size di h1 sarà il 150%
del font-size del body, che
era 16
px. Quindi h1 avrà un font-size di 1.5 * 16 = 24
. Invece,
se p è sempre dentro al body e metto
p {font-size: 0.875 em; }
allora p
avrà un font-size di 0.875 * 16 = 14
.
4.3 Font-Weight
Utilizzata per impostare il grassetto al carattere. Il bolder di un carattere è relativo ad un altro font che si deve trovare nella macchina.
I valori possono essere:
normal, bold
bolder, igher
100, 200, 300, 400, 500, 600, 700, 800, 900
4.4 Font-Style
Imposta il carattere a italico o obliquo.
I valori sono:
normal, italic, oblique
Normalmente italic rappresenta un font separato.
4.5 Font-Variant
Cambia il carattere in maiuscoletto.
I valori sono:
normal, small-caps
5 Colors
Link utili:
Specifico il colore con la proprietà color
. Il colore è specificato
da tre byte: rosso verde e blu. Questo modo viene chiamato RGB
. C'è
un RGBa
in cui ho un canale alfa aggiunto per specificare la
trasparenza.
Posso esprimere un colore in vari modi, tra cui:
Tramite il nome. Alcuni colori hanno dei nomi.
Tramite i valori RGB (3 numeri da 0 a 255).
Tramite il valore in esadecimale.
I valori per colore possono essere in percentuale del colore oppure
con il valore numerico, che è da 0
a 255
se lo voglio esprimere in
decimale oppure da 0x00
a 0xFF
se lo voglio esprimere in
esadecimale.
Quando realizziamo un sito generalmente ci vengono dati una serie di codici. Alcuni di questi rappresentano il colore altri il font.
5.1 Example
h1 {color: rgba(0, 0, 0, .1); } h1 {color: rgba(0, 0, 0, 1); } body {background-color: rgb(0, 0, 255); } body {background-color: #FF0000; } body {background-color: Red; }
6 Text Properties
Per quanto riguarda la gestione dello stile del testo, abbiamo le seguenti proprietà utili.
6.1 line-height
Permette di impostare la spaziature delle righe. Può essere specificata o in pixel o in funzione del testo stesso.
p {line-height: 2em;} p {line-height: 2; } p {line-height: 200%; }
Il rapporto fra l'altezza del rigo e il font è importante per la leggibilità.
6.2 text-indent
Indentazione del primo rigo
I valori sono:
length measurement
percentage
p#1 {text-indent: 2em; } p#1 {text-indent: 25%; } p#1 {text-indent: -35px; }
6.3 text-align
Allineamento orizzontale del testo
I valori sono:
left, right, center, justify.
6.4 text-decoration
Decorazioni del testo.
I valori sono:
none, underline, overline, line-through, blink.
6.5 text-transform
Permette di cambiare maiuscole e minuscole. Viene utilzizato per sistemare il testo scritto dagli utenti.
I valori sono:
none, capitalize, lowercase, uppercase
6.6 letter-spacing e word-spacing
I valori sono:
length measurement, normal
p {letter-spacing: 8px; } p {word-spacing: 1.5em; }
6.7 text-shadow
Ombra sul testo.
I valori sono:
horizontal offset, vertical offset, blu radius, color
text-shadow: .2em .2em silver.