Esercitazione 3 - CSS avanzati: layout
Transcript
Esercitazione 3 - CSS avanzati: layout
Marco Porta – 2011/12 CIM – Web Design & Technologies Esercitazione 3 – CSS avanzati: layout Traccia di lavoro: 1. Vogliamo realizzare una pagina con un layout come il seguente: contenitore intestazione barra di navigazione menù contenuto <html> <head> <title>Un layout coi CSS</title> </head> <body> <div id="contenitore"> <div id="intestazione"></div> <div id="contenuto"></div> <div id="barranavigazione"></div> <div id="menu"></div> <div id="footer"></div> </div> </body> </html> footer 2. Scelte da fare: (1) Layout a larghezza fissa o liquido? (2) Layout centrato o allineato a sinistra/destra? (3) Quali box saranno disposti secondo il flusso normale? Quali saranno posizionati in modo assoluto, e quali in modo relativo? Ci sono box flottanti? Possibile soluzione: a. contenitore larghezza fissa, centrato, posiz. relativo b. intestazione larghezza variabile, flusso normale c. contenuto larghezza fissa, flusso normale d. barranavigazione larghezza fissa, posiz. assoluto e. menu larghezza fissa, posiz. assoluto f. footer larghezza variabile, flusso normale 3. Definiamo lo stile per il body e il contenitore (ad esempio direttamente nel file HTML): body { margin: 0px; padding: 0px; font-size: 85%; font-family: Verdana, sans-serif; text-align: center; color: black; background-color: white; } #contenitore { padding: 0px; margin: 1em auto; position: relative; width: 630px; height: 150px; /* per vederlo… */ text-align: left; background-color: lightgrey; border: 1px solid black; } 4. Definiamo l’intestazione: Marco Porta – 2011/12 #intestazione { height: 80px; background-color: red; } 5. Definiamo il contenuto, supponendo che la barra di navigazione superiore sia alta 25 pixel (per vederlo, dobbiamo inserire qualcosa nel div con id=“contenuto”…): #contenuto { margin-top: 25px; margin-left: 129px; background-color: yellow; } 6. Inseriamo la barra di navigazione: #barranavigazione { position: absolute; top: 80px; left: 0px; height: 25px; width: 100%; background-color: lightgreen; } 7. Inseriamo il menù di navigazione a sinistra: #menu { position: absolute; top: 115px; left: 0px; width: 109px; background-color: cyan; } 8. Inseriamo il footer: #footer { height: 20px; background-color: white; } 9. Definiamo delle aree di padding per il contenuto (es. 1em) e il menù (es. 10px), uguali sui quattro lati 10. Togliamo la definizione dell’altezza nel contenitore (altrimenti Mozilla non lo espande verticalmente…) 11. Inseriamo immagini di sfondo nel body e nell’intestazione (scaricare i file back.jpg e header.jpg da http://vision.unipv.it/wdt-cim/esercitazioni/layoutcss/): usare la proprietà background-image (valore url("…")) 12. Definiamo le caratteristiche dei link. Ad esempio: a { text-decoration: none; font-weight: bold; color: #932F02; font-size: 80%; } a:hover { text-decoration: underline; } Marco Porta – 2011/12 13. Cambiamo in bianco il colore di sfondo del contenitore… 14. Riempiamo la barra di navigazione (ad esempio con i link generici Sezione 1, Sezione 2, ecc.) e la “abbelliamo” (cambiandone anche il colore di sfondo): #barranavigazione { ... border-top: solid white 1px; padding-top: 5px; background-color: #FFDF71; } #barranavigazione a { padding-left: 0.7em; padding-right: 1em; border-right: white solid 1px; } 15. Cambiamo in bianco il colore di sfondo del contenuto e lo riempiamo (creare due paragrafi, copiando il testo da http://vision.unipv.it/wdt-cim/esercitazioni/ layoutcss/contenuto.txt; scaricare anche l’immagine i4.jpg e, definendo una classe generica destra, inserirla con un posizionamento flottante a destra appena all’inizio del secondo paragrafo). Definire un font Arial (in alternativa sans-serif) per i paragrafi 16. Inseriamo prima dei paragrafi del punto precedente un titolo h1 (es. “Layout coi CSS”) e un sottotitolo h3 (es. “18 ottobre 2011”), e ne definiamo le caratteristiche; ad esempio: h1 { font-family: serif; color: red; font-size: 1.8em; font-weight: normal; } h3 { margin-top: -1.1em; font-family: serif; color: #FF6666; font-size: 1.3em; font-weight: normal; font-style: italic; } 17. Cambiamo in bianco il colore di sfondo del menù e lo riempiamo; ad esempio con il seguente contenuto: <h2>Archivio</h2> <ul> <li><a href="">Gen. <li><a href="">Mar. <li><a href="">Mag. <li><a href="">Lug. <li><a href="">Set. </ul> 2011</a></li> 2011</a></li> 2011</a></li> 2011</a></li> 2011</a></li> Definiamo anche le caratteristiche dei titoli h2 e delle liste non numerate: h2 { font-family: serif; color: red; font-size: 1.5em; font-weight: normal; } Marco Porta – 2011/12 ul { padding: 0px; margin-left: 1.5em; } 18. Inseriamo un contenuto nel footer (“Copyright (c) Il mio sito 2011”) e ne impostiamo altre caratteristiche: #footer { height: 20px; background-color: #FFDF71; border-bottom: solid white 1px; text-align: right; font-size: 75%; padding-top: 0.4em; padding-right: 1em; } 19. Definiamo una classe generica corsivo, che faccia diventare il testo in corsivo, e la applichiamo poi (ad esempio con uno <span>) al testo "Il mio sito 2010" nel footer: .corsivo { font-style: italic } 20. Il titolo h2 “Archivio” non è allineato verticalmente col testo se si usa Internet Explorer… mentre lo è con Mozilla. Bisogna caricare (dopo lo stile "ufficiale" che stiamo definendo) un CSS solo per Explorer: <!--[if IE]> <link rel="stylesheet" type="text/css" href="ie.css" > <![endif]--> Contenuto CSS: #menu { padding-top: 25px; } 21. Aggiungiamo un bordo a sinistra del contenuto: border-left: solid 1px #FFDF71; 22. Inseriamo dentro l’intestazione un elemento h1con id=“titolointestazione” contenente il testo “Un sito senza tabelle”; nel foglio di stile, specificare che l’elemento titolointestazione non deve essere visualizzato (valore none per la proprietà display… questo elemento non si vede, ma un browser vocale lo leggerà!) 23. E se si vuole un layout liquido? (1) Nel contenitore si specifica una larghezza percentuale (es. 80%) anziché fissa; (2) Nell’intestazione si usa un’immagine di sfondo che sfuma a destra con un certo colore c (scaricare l’immagine header2.jpg da http://vision.unipv.it/wdtcim/esercitazioni/layoutcss/) e si specifica che non deve essere ripetuta (valore norepeat per la proprietà background-repeat); sempre per l’intestazione si definisce un colore di sfondo uguale a c (rgb(253, 232, 141)) 24. E se vogliamo spostare il menù a destra? Bastano tre piccolissime modifiche da apportare a contenuto e menu… quali? 25. Pensare a possibili layout per la stampa e i dispositivi palmari (smartphone, ecc.)