Cascading Stile Sheets Introduzione ai CSS
Transcript
Cascading Stile Sheets Introduzione ai CSS
Cascading Stile Sheets Introduzione ai CSS Cascading Style Sheets | Introduzione ai CSS 2/21 I fogli di stile consentono di migliorare la presentazione delle pagine web evitando di usare in modo inappropriato le istruzioni HTML che originariamente avevano una funzione di definizione esclusivamente semantica del contenuto della pagina. In questo modo: 1) si semplifica il codice delle pagine, si riduce la banda utilizzata, si produce un html di alto valore semantico. 2) si dispone di migliori strumenti di presentazione (rientri, interlinea, ecc.) e si semplifica il lavoro di definizione/ mantenimento del layout del sito intero (fogli di stile esterni) Cascading Style Sheets | Introduzione ai CSS 3/21 Nell’HTML standard (senza CSS) 1) le istruzioni di formattazione del testo devono essere inserite direttamente nel tag <body> in prossimità del testo da formattare; 2) devono essere ripetute ad ogni variazione della formattazione e contenere il testo da formattare ad esempio: <p><font color=”#FF0000” size=”4”><b> tutto questo testo deve essere corpo 4, colore rosso e grassetto</b></font></p> Cascading Style Sheets | Introduzione ai CSS 4/21 Con i CSS, invece: 1) si definisce la regola di formattazione una sola volta, lo si memorizza nel tag <head> o in un file esterno con estensione .css 2) La regola CSS può essere imposta ad un dato tag, oppure può essere impostata con un nome univoco che consente di applicarla tramite un attributo (class o id) di uno specifico tag. Per esempio, nell <head> .red_b {font-size: 15px; font-weight: bold; color: #FF0000;} nel <body> <p class=”red_b”> tutto questo testo deve essere in corpo 15 pixel, colore rosso, grassetto </p> Cascading Style Sheets | Introduzione ai CSS 5/21 I CSS possono essere di tre tipi: 1) CSS in linea (inline): quando lo stile viene specificato in prossimità del testo da formattare (nel tag body); 2) CSS interni (embedded): quando gli stili vengono definiti all’interno della pagina html nel tag <head> e possono essere richiamati solo nel tag <body> della pagina stessa; 3) CSS esterni (external): quando gli stili sono definiti in un file esterno e possono essere condivisi da diverse pagine del sito. In questa modalità, i CSS sono un potente strumento di gestione dell’aspetto testuale di un’intero sito: un singolo foglio stile contenente le regole di formattazione viene applicato a più pagine. Cascading Style Sheets | Introduzione ai CSS 6/21 I CSS in sostanza sono delle regole di formattazione definite in forma testuale che possono essere scritte all’interno dalla pagina html o in un file esterno di testo con estensione .css, collegato alla pagina html. La sintassi di una regola impostata con i fogli stile è: selettore { proprietà:valore; } La struttura per dichiarare una regola è 1) selettore 2) parentesi graffa aperta 3) proprietà - due punti - valore - punto e virgola 4) parentesi graffa chiusa Cascading Style Sheets | Introduzione ai CSS 7/21 All’interno della regola CSS possono essere dichiarate più coppie proprietà/valore, separate da punto e virgola ( ; ) selettore { proprietà:valore; altraproprietà:valore; } Un selettore può identificare un tag HTML generico (p, h1, h2, ecc.) che si vuole modificare, oppure può indicare una classe (attributo assegnabile a diversi tag) o un id (attributo assegnabile ad un unico elemento di una determinata pagina). Le proprietà definiscono quale caratteristica (colore, sfondo, interlinea, dim. txt, ecc.) di quell’elemento si vuole definire. Il valore indica come quella proprietà deve essere modificata. [ ! ] Se il valore prevede un’unità di misura, tra valore e unità non ci devono essere spazi (10px è ok, 10 px è sbagliato) Cascading Style Sheets | Introduzione ai CSS 8/21 Una regola può essere associata ad generico tag html, per es.: p {font-size:10px; color: #FFFF00} La regola viene applicata a tutti i tag indicati nel selettore (nell’esempio a tutti i <p> della pagina) Oppure una regola può essere associata ad altri due tipi di selettori: CLASS (applicabile a più elementi) e ID (applicabile ad un solo elemento). In questo caso le regole vengono associate solo ai tag che hanno lo specifico attributo. Ad esempio: <p class=”mia_classe”> testo del paragrafo </p> <p id=”mio_id”> testo del paragrafo </p> Cascading Style Sheets | Introduzione ai CSS 9/21 CLASS (applicabile a più tag di una pagina) Si definisce impostando un nome preceduto dal punto ( . ) .miaclasse { color:#ffffff; size:13px} si applica assegnando l’attributo class a tutti gli elementi html che si vogliono formattare <h1 class=”miaclasse”>titolo formattato</h1> <p>testo non formattato</p> <p class=”miaclasse”>altro testo formattato</p> <h1> e <p> ereditano le caratteristiche assegnate dai selettori generici, ma a quelli con l’attributo class vengono aggiunte le caratteristiche specifiche della classe Cascading Style Sheets | Introduzione ai CSS 10/21 CLASS + <SPAN>...</SPAN> (tag senza valore semantico) Il tag <span>...</span> può essere usato per definire porzioni di testo da presentare secondo un certo stile CSS, senza attribuire a quella porzione di testo un valore semantico. Definita una classe nell<head> o in un file .css esterno, .miaclasse { color:#ffffff; size:13px} nella pagina è sufficiente racchiudere una o più porzioni di testo nel tag <span>...</span>, assegnandogli l’attributo class=”...” che richiama la classe CSS <p>testo base <span class=”miaclasse”> testo formattato da .miaclasse </span> altro testo non formattato</p> Cascading Style Sheets | Introduzione ai CSS 11/21 ID (applicabile ad un solo elemento per pagina) Si definisce impostando un nome preceduto da # #mioid { color:#ffffff; size:13px} si applica assegnando l’attributo id ad un solo elemento html di ogni pagina <h1 id=”mioid”>testo del tag h1 formattato</h1> <p>testo non formattato</p> <p id=”mioid”>altro testo non formattato</p> * * ERRORE! Il <p> con attributo id=”mioid” non viene formattato: l’ID è già stato usato nella pagina dall’<h1> precedente Cascading Style Sheets | Introduzione ai CSS 12/21 Altri selettori o metodi di raggruppamento: Selettore universale (assegna regola a tutti i tag) * {color:#ffffff;} Raggruppamento (assegna la regola a più selettori): h1,h2,p {color:#ffffff;} Child selector (assegna ai selettori contenuti in un dato selettore): div#header p {color:#ffffff;} Pseudoclassi (assegna regola ad uno stato del selettore): a:link {color:#ffffff;} /* link a riposo */ a:hover {color:#ff0000;} /* link quando passa cursore */ Cascading Style Sheets | Introduzione ai CSS 13/21 Alcune proprietà definibili con i CSS (per elementi testo): font-family: Arial, Helvetica, sans-serif; (specifica famiglia font) font-size: 10px; (unità di misura px o em *) color: #ffffff; (specifica colore testo) line height: 25px; (specifica altezza interlinea) text decoration: none; | underline; | ... (decorazione testo) text-align: right; | left; | center; | justify; (giustificazione testo) * 10px è CORRETTO | 10 px (valore-spazio-u.misura) è SBAGLIATO Cascading Style Sheets | Introduzione ai CSS 14/21 Unità di misura: px vs. em Normalmente con i CSS si definiscono le misure adottando l’unità di misura px (unità di misura assoluta. 1 pixel = unità base della rappresentazione a schermo = 1 “punto luminoso”). Per una progettazione più fluida, almeno per i testi, è possibile adottare l’unità di misura em (unità di misura relativa. Per esempio 1.5em = 1.5*misura font ereditata) Se definisco a 10px la misura dei testi del tag <body> posso definire la misura del testo di un paragrafo in 1.5em (il testo risulterà alto 10px*1.5 = 15px) e quella di un <h1> in 2em (20px). In questo modo, modificando la dimensione del testo del <body> posso modificare tutti gli altri testi in modo proporzionale. Cascading Style Sheets | Introduzione ai CSS 15/21 Proprietà BoxModel definibili con i CSS (per elementi blocco): width: ... / height: ... (larghezza | altezza) margin: ... (spazio da elementi esterni) border: ... (bordo del blocco) padding: ... (spazio tra bordo ed elementi interni) border (spessore del bordo) padding (distanza tra bordo e contenuti) Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue eum iriure dolor. height margin (distanza tra blocco e altri blocchi) width Cascading Style Sheets | Introduzione ai CSS 16/21 margin / border / padding possono essere impostati con valori diversi per ognuno dei quattro lati di un blocco (top, right, bottom e left) margin-top margin-left border-left padding-left border-top padding-top Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue eum iriure dolor. (...)-bottom (...)-right Cascading Style Sheets | Introduzione ai CSS 17/21 Per impostare margin / border / padding con valori diversi per ognuno dei quattro lati è possibile scrivere le regole separatamente: p { margin-top:10px; margin-right:5px; margin-bottom:1px; margin-left:7px; } Oppure (meglio) accorpando tutto in un unica regola: p { margin:10px 5px 1px 7px; } top | right | bottom | left (da top in senso orario) E’ possibile anche accorpare sopra+sotto e destra+sinistra: p { margin:10px 5px; } top + bottom | right + left Cascading Style Sheets | Introduzione ai CSS 18/21 Per impostare border si devono dichiarare oltre allo spessore (-width) anche lo stile (-style) ed il colore (-color) p { border-width: 2px; border-style: solid; border-color: #3399FF; } Oppure (meglio) accorpando tutto in un unica regola: p { border:#3399FF 2px solid; } -color | -width | -style Lo stesso si può fare per bordi specifici: p { border-top:#3399FF 1px solid; border-bottom:#FF6633 2px dotted;} Cascading Style Sheets | Introduzione ai CSS 19/21 Anomalia di Internet Explorer 5.0: interpreta border e padding inclusi in width. width per IE 5.0 margin (distanza tra blocco e altri blocchi) border (spessore del bordo) padding (distanza tra bordo e contenuti) Soluzione: Non dichiarare mai insiema width, border e padding. Impostarli separatamente per elementi nidificati Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue eum iriure dolor. width per altri browser Cascading Style Sheets | Introduzione ai CSS 20/21 Altre proprietà definibili con i CSS (per elementi blocco): background-color: imposta colore di sfondo (tipo #3399FF); background-image: assegna immagine di sfondo; background-repeat: imposta la ripetizione dell’immagine di sfondo (no-repeat = non si ripete; repeat-x = ripetizione orizzontale; repeat-y = ripetizione verticale); background-position: posizione dell’immagine di sfondo (bottom, top, center, left, right, o valore in pixel); display: block (attribuisce forma retangolare a elementi . normalmente inline, in questo modo è possibile controllare Larg. e Alt. ); display: none (nasconde l’elemanto associato ). Cascading Style Sheets | Introduzione ai CSS 21/21 CSS / concetti chiave: Ereditarietà: le regole imposte ad un elemento (ad es. <body>) ricadono anche sui suoi discendenti (ad es. <p>). Peso: la regola imposta da un ID (#mioid) è prevalente su quella imposta da una CLASS (.miaclass) che a sua volta è prevalente sulla regola imposta da un semplice selettore. Compatibilità: in linea generale, senza adottare particolari strategie, i CSS non sono supportati dai browser versione 4.0 o precedenti. Diversità di rendering: i browser interpretano i css in modo (più o meno) diverso. Bisogna testare il lavoro fatto sui browser più diffusi per essere certi della stabilità della visualizzazione.