1. 1. LEZIONE 02 HTML e CSS

  2. 2. HTML

  3. 3.  HTML è l'acronimo di HyperText Markup Language ("Linguaggio a marcatori per gli Ipertesti"). Non è un linguaggio di programmazione non ha, cioè, meccanismi che consentono di prendere delle decisioni ("in questa situazione fai questo, in quest'altra fai quest'altro"), e non è in grado di compiere delle iterazioni ("ripeti questa cosa, finché non succede questo"), né ha altri costrutti propri della programmazione. Si tratta invece di un linguaggio di contrassegno (o 'di marcatura'), che permette di articolare gli elementi di una pagina in blocchi le cui caratteristiche vengono definite attraverso degli appositi marcatori, detti "tag".
  4. 4. A C O S A S E R V E Comunica al browser di quali risorse ha bisogno per comporre la pagina web Definisce e articola il contenuto della pagina: – Struttura semantica della pagina – Elementi di formattazione – Componenti multimediali – Componenti funzionali
  5. 5. C O M E L O F A : I T A G I tag vanno inseriti tra parentesi uncinate: <TAG> La chiusura del tag viene indicata con una barra: </TAG> Il contenuto che il tag modifica va inserito tra l'apertura e la chiusura del tag medesimo: Questa <span style=“font-wieight:bold”>parola</span> è in grassetto. che nel rendering verrà reso: Questa parola è in grassetto. Alcuni tag non hanno (o possono non avere) contenuto (empty tag) . Ad esempio l’interruzione di linea la indico così: <br />
  6. 6. G L I E L E M E N T I Ogni tag definisce un elemento (element) del documento HTML Esistono vari tipi di elementi: – Elementi visibili che definiscono componenti semantiche del testo (titoli, intestazioni, piè di pagina, paragrafi, ecc.) – Elementi visibili che definiscono componenti che consentono l'interazione con l'utente (link, campi che consentono l'immissione di testo, bottoni, ecc.) – Elementi visibili che servono a formattare parti di testo (grassetto, corsivo, ecc.) – Elementi visibili e non visibili che consentono l'inserimento di risorse multimediali (immagini, audio, video, ecc.) – Elementi non visibili che servono a caricare risorse funzionali necessarie alla pagina web (script, fogli di stile) – Elementi non visibili che racchiudono codice eseguibile o istruzioni di stile.
  7. 7. G L I A T T R I B U T I Le caratteristiche di un tag vengono determinate dagli attributi del tag. Ogni tag ha per i suoi attributi dei valori predefiniti che io posso modificare: <tag attributo_1="valore1" attributo_2="valore2">contenuto</tag> Alcuni attributi sono generali, comuni a tutti i tag (id, class, ecc.), altri sono specifici: <img width="20" height="20" src="miaImmagine.gif" alt="alt“ /> Una caratteristica importante del codice HTML è che i tag possono essere annidati l'uno dentro l'altro. È quindi opportuno usare l’indentazione. Grazie ad essa il codice HTML risulta più leggibile.
  8. 8. E N T I T Y Per rappresentare i caratteri non coficabili con lo standard ASCII si è introdotta una codifica particola detta entity. Un entity è così composta: &nnnn; Quando il parser HTML incontra una parola che inizia con & legge i successivi caratteri fino ad in contrare ”;” e tenta di interpretare il tutto come un carattere secondo la tabella di codici definita dal W3C.
  9. 9. C O M M E N T I Un strategia importante, per rendere il nostro codice più leggibile è quella di inserire dei "commenti" nei punti più significativi: Un commento è un’indicazione significativa per il webmaster, ma invisibile al browser. Inserendo i commenti in punti specifici del documento ci permette di mantenere l'orientamento anche in file molto complessi e lunghi. La sintassi è la seguente: <!-- questo è un commento -->
  10. 10. I L W 3 C L'organizzazione che si occupa di standardizzare la sintassi del linguaggio HTML (il W3C: World Wide Web Consortium). Ha rilasciato diverse versioni di questo linguaggio (HTML 2.0, HTML 3.2, HTML 4.0….); Allo stato attuale abbiamo a che fare con 3 versioni: – HTML 4.01 (24/12/1999) – XHTML 1.0 (01/08/2002) – HTML 5 (Bozza di lavoro: 19/10/2010)
  11. 11. HTML 5
  12. 12. STRUTTURA DELLA PAGINA <!DOCTYPE html> <html lang="it"> <head> <script src="mioscripr.js"></script> <link rel="stylesheet" href="styles.css"> <meta charset="utf-8"> <meta name="google" value="notranslate"> </head> <body> <h1>Benvenuto!</h1> <p>Questo &egrave; il mondo di HMTL!</p> </body> </html>
  13. 13. P R OL OG O – In HTML 5 il prologo è lasemplice dichiarazione del tipo di documento come HTML <!DOCTYPE html >
  14. 14. ELEMENTO RADICE (ROOT) <HTML> è obbligatorio L'elemento <html> può assumere questi attributi: – dir Determina la direzione del testo – lang Specifica il linguaggio di base dell'elemento quando è interpretato come HTML <html lang="it" > </html>
  15. 15. H E A D La sezione <head> contiene informazioni che non vengono direttamente visualizzate nella pagina: – <link> Contiene informazioni su documenti esterni collegati: fogli di stile, favicon, ecc. – <meta> Specifica informazioni di vario tipo sul documento. – <noscript> Usato per visualizzazioni alternative nei browser che non supportano gli script. – <object> Racchiude un oggetto. – <script> Contiene script di programmazione o carica uno script di programmazione esterno . – <style> Definisce le regole di formattazione per il documento corrente – <title> Specifica il titolo del documento che compare nella barra del titolo del browser <head> <script src="mioscripr.js"></script> <link rel="stylesheet" href="styles.css"> <meta charset="utf-8"> <meta name="google" value="notranslate"> </head>
  16. 16. B ODY Il corpo del documento è la sezione in cui si sviluppa il contenuto. È racchiusa, come in HTML, tra i tag <body>...</body>. Gli elementi che possono comparire all'interno del corpo sono in genere suddivisi in due categorie: – elementi blocco ed gli elementi blocco sono quelli che definiscono la struttura del documento. Possono contenere altri elementi blocco, elementi inline o testo. Quando sono inseriti danno origine ad una nuova riga nel flusso del documento. – elementi inline: quando sono inseriti non danno origine a una nuova riga e possono contenere solo dati (essenzialmente testo) o altri elementi inline. <body> <h1>Benvenuto!</h1> <p>Questo &egrave; il mondo di XHMTL!</p> </body>
  17. 17. ELEMENTI SEMANTICI
  18. 18. E L E M E N T I S E M A N T I C I Gli elementi semantici sono quelli che ci aiutano a dare una struttura logica ad un documento Normalmente sono elementi di tipo blocco Nella maggior parte dei casi i browser non prevendono alcuna formattazione di default e vengono resi sullo schermo come testo normale
  19. 19. T I T O L I ( H E A D I N G S ) Gli heading (titoli) sono elementi blocco contrassegna dai tag h1-h6 e possono essere utilizzati per strutturare gerarchicamente un documento. Per default i browser rendono i titoli con corpi crescenti da h6 (più piccolo del testo normale) a h1.
  20. 20. D I V L’elemento <div> è un generico elemento blocco che racchiude una porzione di documento Non è prevista alcuna formattazione di default <div> Testo o qualsiasi altro elemento </div>
  21. 21. P L’elemento <p> è un elemento blocco che racchiude una paragrafo Normalmente i browser rendono l'elemento p assegnandogli un margine inferiore <p> Testo o qualsiasi altro elemento </p>
  22. 22. U L L’elemento <ul> rappresenta una lista non ordinata. Gli elementi della lista sono rappresentati da elementi <li> Per default una lista <ul> viene resa come lista puntata <ul> <li><a href="#">link</a></li> <li><a href="#">link</a></li> </ul>
  23. 23. O L L’elemento <ol> rappresenta una lista ordinata. Gli elementi della lista sono rappresentati da elementi <li> Per default una lista <ol> viene resa come lista numerata <ul> <li><a href="#">link</a></li> <li><a href="#">link</a></li> </ul>
  24. 24. H E A D E R L’elemento <header> ha come scopo quello di racchiudere una porzione di documento che avrà ruolo di testata nella pagina o in una sua parte. Non è prevista lacuna formattazione di default <header> <!-- il logo ed eventuale intestazione al sito --> </header>
  25. 25. A R T I C L E L’elemento <article> racchiude una porzione di codice semanticamente indipendente dal resto della pagina <article> <header> <h1>Titolo del sito</h1> <h2>Sottotitolo</h2> </header> </article>
  26. 26. T I M E L’elemento <time> rappresenta una data di pubblicazione <time datetime="2010-04-21" pubdate>21 Aprile 2009</time>
  27. 27. N A V L’elemento <nav> specifica una porzione di documento destinato alla navigazione per esempio la lista di un menu. <nav> <ul> <li><a href="#">link</a></li> <li><a href="#">link</a></li> </ul> </nav>
  28. 28. A S I D E L’elemento <aside> viene utilizzato per definire una porzione di codice correlata al contenuto ma separata come per esempio una sidebar.
  29. 29. F O O T E R L’elemento <footer> definisce una porzione di documento che rappresenta il piede della pagina o di una parte specifica del documento. Non è prevista lacuna formattazione di default <footer>&copy;2012 Mia Azienda Tutti i diritti riservati</footer>
  30. 30. F I G U R E Il tag <figure> specifica un contenuto indipendente dal testo, come illustrazioni, diagrammi, foto, esempi di codice, ecc Mentre il contenuto dell'elemento <figure> è in relazione al flusso principale, la sua posizione è indipendente dal flusso principale, e se rimosso non dovrebbe influenzare il flusso del documento. Di norma l’elemento figure contiene un elemento figcaption <figure> <img src="img_pulpit.jpg" alt="The Pulpit Rock" width="304" height="228"> <figcaption>Una didascalia</figcaption> </figure>
  31. 31. ELEMENTI INLINE
  32. 32. S P A N L’elemento <span> è una generico elemento inline che definisce una porzione di testo. Non è prevista lacuna formattazione di default. <p>Questa <span style=“font-wieight:bold”>parola</span> è in grassetto.</p>
  33. 33. F O R M A T T A Z I O N E Esistono una serie di elementi inline che definiscono la funzione di una porzione di testo. – <em> Testo enfatizzato – <strong> Testo importante – <dfn> Definizione – <code> Codice – <samp> Esempio di output – <kbd> Imput da tastiera – <var> Variabile In HTML5 è compito del foglio di stile definire il formato di questi elementi.
  34. 34. INTERATTIVITÀ
  35. 35. A Il tag <a> definisce un collegamento ipertestuale, che viene utilizzato per collegare una risorsa internet. L'attributo più importante dell'elemento <a> è l'attributo href, che indica la destinazione del collegamento. Per impostazione predefinita, i collegamenti verranno visualizzati come segue in tutti i browser: – Un collegamento non visitato è sottolineato e blu – Un link visitati è sottolineato e viola – Un collegamento attivo è sottolineato e rosso <a href="http://www.accademiadiurbino.it">Visita l'accademia di Belle Arti di Urbino!</a>
  36. 36. F O R M Il tag <form> viene utilizzato per creare un modulo HTML per l'input dell'utente. L'elemento <form> può contenere uno o più dei seguenti elementi del modulo: – <input> – <textarea> – <button> – <select> – <option> – <optgroup> – <fieldset> – <label> <form action="demo_form.asp" method="get"> Nome: <input type="text" name="nome"><br> Cognome: <input type="text" name="cognome"><br> <input type="submit" value="Invia"> </form>
  37. 37. I N P U T Il tag <input> specifica un campo di input in cui l'utente può inserire i dati. Gli elementi <input> vengono utilizzati all'interno di un elemento <form> La funzione di imput cambia a secondo del valore definito dall'attributo type: – button, checkbox, color, date, datetime, datetime-local, email, file, hidden, image, month, number, password, radio, range, reset, search, submit, tel, text, time, url, week <form action="demo_form.asp" method="get"> Nome: <input type="text" name="nome"><br> Cognome: <input type="text" name="cognome"><br> <input type="submit" value="Invia"> </form>
  38. 38. T E X T A R E A Il tag <textarea> definisce un controllo di input di testo multilinea. Un'area di testo può contenere un numero illimitato di caratteri. Per default il testo viene reso in un font a larghezza fissa (di solito Courier). <textarea rows="4" cols="50"> Inserisci un testo. </textarea>
  39. 39. B U T T O N Il tag <button> definisce un pulsante cliccabile. Contrariamente che per l'elemento input all'interno di un elemento <button> Posso inserire qualsiasi tipo di contenuto. Browser diversi utilizzano diversi tipi di default per l'elemento <button>. <button type="button">Cliccami!</button>
  40. 40. S E L E C T L'elemento <select> viene utilizzato per creare un elenco a discesa. I tag <option> all'interno dell'elemento <select> definiscono le opzioni disponibili nella lista. <select> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="mercedes">Mercedes</option> <option value="audi">Audi</option> </select>
  41. 41. ELEMENTI MULTIMEDIALI
  42. 42. I M G Il tag <img> definisce un'immagine in una pagina HTML. Il tag <img> ha due attributi obbligatori: src e alt. Le immagini non sono tecnicamente inserite in una pagina HTML, ma collegate. Il tag <img> crea lo spazio di per l'immagine di riferimento <img src="smiley.gif" alt="Smiley face" height="42" width="42">
  43. 43. V I D E O Il tag <video> consente di inserire un video in una pagina WEB, ad esempio un clip filmato o un video in streaming. Attualmente sono tre i formati video supportati dall'elemento <video>: MP4 (Internet Explorer, Chrome, Safari, Firefox su Windows), WebM (Chrome, Firefox, Opera) e Ogg. (Chrome, Firefox, Opera). <video width="320" height="240" controls> <source src="movie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> Il tuo browser non supporta il tag video. </video>
  44. 44. A U D I O Il tag <audio> consente di inserire una risorsa audio in una pagina WEB, ad esempio una clip audioo un audio in streaming. Attualmente sono tre i formati audio supportati dall'elemento <audio>: MP3 (Internet Explorer, Chrome, Safari, Firefox su Windows), Wav(Chrome, Firefox, Opera. Safari) e Ogg. (Chrome, Firefox, Opera). <audio controls> <source src="horse.ogg" type="audio/ogg"> <source src="horse.mp3" type="audio/mpeg"> Il tuo browser non supporta il tag audio. </audio>
  45. 45. C A N V A S Il tag HTML5 <canvas> viene usato per disegnare la grafica, al volo, tramite scripting (di solito JavaScript). L'elemento <canvas> non ha capacità di disegno proprie (è solo un contenitore per la grafica). È necessario utilizzare uno script per disegnare effettivamente la grafica.
  46. 46. V A L I DA RE L E PA GI NE L’utilizzo delle dichiarazioni doctype consente l’uso dei validatori, applicazioni web che consentono di verificare se le pagine costruite soddisfano lo standard (DTD) dichiarato. Si può usare il validatore del W3C O il validatore alternativo del sito htmlhelp.com. Una volta validati i siti possono esporre l’icona che certifica la validazione.
  47. 47. http://www.w3schools.com/html/html_intro.asp
  48. 48. CSS
  49. 49. I FOG L I DI STI L E HTML serve informare il browser di quali sono le componenti necessarie a mostrare un documento e ad articolare il documento in blocchi semantici. I fogli di stile (Cascading Style Sheets) definiscono come i vari elementi che compongono un documento verranno resi su un media specifico (schermo, stampante, dispositivo mobile).
  50. 50. INSE R IME NT O Un foglio di stile può essere esterno e interno: – È esterno un foglio di stile definito in un file separato dal documento. – Un foglio di stile si dice interno quando il suo codice è compreso in quello del documento. Un foglio esterno si carica: – Utilizzando l’elemento <LINK>. – Usando @import. Un foglio interno può essere compilato – utilizzando l’elemento <style> – Utilizzando l’attributo style di un singolo elemento
  51. 51. FOG L I C OL L E G A TI Uso dell'elemento <LINK>: – La dichiarazione va sempre collocata all'interno della sezione <HEAD> del documento (X)HTML: <html> <head> <title>Inserire i fogli di stile in un documento</title> <link rel="stylesheet" type="text/css" href="stile.css"> </head> <body> L'elemento <link> presenta una serie di attributi di cui è importante spiegare significato e funzione: Attributo Descrizione rel descrive il tipo di relazione tra il documento e il file collegato. È obbligatorio. Per i CSS due sono i valori possibili: stylesheet e alternate stylesheet. href serve a definire l'URL assoluto o relativo del foglio di stile. È obbligatorio type identifica il tipo di dati da collegare. Per i CSS l'unico valore possibile è text/css. media con questo attributo si identifica il supporto (schermo, stampa, etc) cui applicare un particolare foglio di stile. Attributo opzionale.
  52. 52. FOG L I C OL L E G A TI Un altro modo per caricare CSS esterni è usare la direttiva @import . La direttiva @import può essere usata all'interno dell'elemento <style>: <style> @import url(stile.css); </style> Oppure all’interno di un foglio di stile: @import url(stile.css); In entrambi i casi le regole contenute nel foglio di stile saranno importate, aggiunte a quelle già caricate.
  53. 53. FOG L I O I NC OR P OR A TI I fogli incorporati sono quelli inseriti direttamente nel documento (X)HTML tramite l'elemento <style>. Anche in questo caso la dichiarazione va posta all'interno della sezione <head>: <html> <head> <title>Inserire i fogli di stile in un documento</title> <style type="text/css"> body { background: #FFFFCC; } </style> </head> <body> ... <style> può avere due attributi: – type (obbligatorio) – media (opzionale)
  54. 54. STI L E IN L INE A L'ultimo modo per formattare un elemento con un foglio di stile consiste nell'uso dell'attributo 'style'. Esso fa parte della collezione di attributi (X)HTML definita Common: si tratta di quegli attributi applicabili a tutti gli elementi. La dichiarazione avviene a livello dei singoli tag contenuti nella pagina e per questo si parla di fogli di stile in linea. La sintassi generica è la seguente: <elemento style="regole_di_stile">
  55. 55. R E G OL E Un foglio di stile è costituito da una serie di regole che stabiliscono come un elemento (identificato da un selettore) viene reso su un dispositivo. Esempio: p{ font-family: Verdana, sans-serif; font-size:16px; } selettore proprietà1 valore : ; proprietà2 valore : ;
  56. 56. SI NTA SSI A B B R E VI A TA Ogni elemento presenta sui suoi quattro lati un certo margine rispetto a quelli adiacenti. – margin-top – margin-right – margin-bottom – margin-left La regola sarebbe questa: div { margin-top: 10px; margin-right: 5px; margin-bottom: 10px; margin-left: 5px; } Sintassi abbreviata: div {margin: 10px 5px 10px 5px;}
  57. 57. SELETTORI
  58. 58. E L E ME NTI È il più semplice dei selettori. È costituito da uno qualunque degli elementi di HTML. h1 {color: #000000;} p {background: white; font: 12px Verdana, arial, sans-serif;} table {width: 200px;} È possibile nei CSS raggruppare diversi elementi al fine di semplificare il codice. h1 {background: white;} h2 {background: white;} h3 {background: white;} h1, h2, h3 {background: white;} * { color: black; }
  59. 59. E L E ME NTI Elementi che nella struttura ad albero di un documento siano discendenti di un altro elemento specificato nella regola. div p {color: black;} p strong {color: red;} – Nel primo esempio verranno selezionati tutti i paragrafi (<p>) discendenti di elementi <div>. Nel secondo tutti gli elementi <strong> che si trovino all'interno di un paragrafo. Elementi che nella struttura ad albero di un documento siano i figli diretti di un elemento. body > p {color: black;} <body> <p>Primo paragrafo</p> <div> <p>Secondo paragrafo</p> </div> </body>
  60. 60. E L E ME NTI Elementi che nel codice del documento siano immediatamente vicini (adiacenti) ad un altro. h1 + p {color: red;} <h1>Titolo</h1> <p>Primo paragrafo</p> <p>Secondo paragrafo</p> – In base a questa dichiarazione solo il primo dei due paragrafi avrà il testo rosso..
  61. 61. S E L E Z I O N E D E G L I E L E M E N T I I N B A S E A I L O R O A T T R I B U T I Attributo semplice input[id] {background: red;} – applicherà uno sfondo rosso a tutti gli elementi input per cui sia stato impostato un attributo id, a prescindere dal valore di id. Attributo con valore input[id="text"] { backgorund: red; } – applicherà un sfondo rosso a tutti gli elementi input che abbiano come valore dell'attributo id "text". Attributo il cui valore contiene una stringa img[alt*="foto"] {margin: 10px;} – La regola applicherà un margine di 10px a tutte le immagini in cui l'attributo alt contiene la stringa "foto". Attributo con lista di valori separati da trattini img[ title|="figura"] {margin: 10px;} – selezionerà tutte le immagini in cui l'attributo titlecontiene una lista di valori separati da trattini tra cui figura".
  62. 62. S E L E Z I O N E D E G L I E L E M E N T I I N B A S E A I L O R O A T T R I B U T I Attributo con valore in una lista di valori separati da spazi input[title~="dolor"] { backgorund: red; } – applicherà un sfondo rosso a tutti gli elementi input in cui l'attributo title contenga una lista di parole separate da spazi e che nella lista sia presente la stringa dolor ". Attributo il cui valore contiene una stringa img[alt^="foto"] {margin: 10px;} – La regola applicherà un margine di 10px a tutte le immagini in cui l'attributo alt inizia con "foto". Attributo il cui valore inizia con una stringa img[ alt$="figura"] {margin: 10px;} – selezionerà tutte le immagini in cui l'attributo alt finisce con la stringa "figura".
  63. 63. C L A SSI E I D In questa pagina abbiamo assegnato al paragrafo l’attributo class="testorosso": <p class="testorosso">....</p> Possiamo ora creare un regola e assegnargli il nome testorosso: .testorosso { font: 12px arial, Helvetica, sans-serif; color: #FF0000; } In un documento potrò avere senza problemi questa situazione: <p class="testorosso">....</p> <div class="testorosso">....</div> <table class="testorosso">...</table> <p class="testorosso">....</p> E l’elemento seguirà la regola definita nella classe testorosso
  64. 64. C L A SSI E I D Per definire una classe si usa far precedere il nome da un semplice punto: .testorosso { font: 12px arial, Helvetica, sans-serif; color: #FF0000; } Se scriviamo: p.testorosso {color: red;} – lo stile verrà applicato solo ai paragrafi che presentino l'attributo class="testorosso". Sono possibili dichiarazioni di classi multiple: p.testorosso.grassetto {color:red; font-weight:bold;} – Questa regola applicherà gli stili impostati a tutti gli elementi in cui siano presenti (in qualunque ordine) i nomi delle classi definiti nel selettore.
  65. 65. C L A SSI E I D La sintassi di un selettore ID è semplicissima. Basta far precedere il nome dal simbolo di cancelletto #: #titolo { color: blue; } – assegniamo il colore blue all'elemento che presenti questa definizione: <h1 id="titolo">...</h1> Come per le classi è possibile usare una sintassi con elemento: p#nome_id { color: red; } – Ma non ha senso perché l’id per sua natura dovrebbe essere unico.
  66. 66. P SE U DO-C L A SSI Una pseudo-classe non definisce un elemento ma un particolare stato di quest'ultimo. In buona sostanza imposta uno stile per un elemento al verificarsi di certe condizioni. A livello sintattico le pseuso-classi non possono essere mai dichiarate da sole, ma per la loro stessa natura devono sempre appoggiarsi ad un selettore. a:link {color: blue;} – La regola vuol dire: i collegamenti ipertestuali (<a>) che non siano stati visitati (:link) avranno il colore blue.
  67. 67. P SE U DO-C L A SSI :first-child – Seleziona e formatta un elemento che si trovi ad essere il primo elemento figlio di un altro elemento. :link – Si applica solo all'elemento (X)HTML <a> che abbia anche l'attributo href. Definisce lo stile per questo elemento quando il collegamento punta ad un sito o ad una pagina non ancora visitati. :hover – Definisce lo stile per questo elemento quando il puntatore è sopra all’elemento. :visited – Si applica solo all'elemento (X)HTML <a> che abbia anche l'attributo href. Definisce lo stile per questo elemento quando il collegamento punta ad un sito o ad una pagina già visitata.
  68. 68. P SE U DO-C L A SSI :first-letter – Imposta lo stile della prima lettera di un elemento contenente del testo. :first-line – Imposta lo stile della prima riga di un elemento contenente del testo. :before blockquote:before {content:“Nota"} :after blockquote:after {content:“Nota"}
  69. 69. http://www.w3schools.com/css/default.asp