Web Design
Web Design
Alessandro Sarzina
Obiettivi corso:
- Concetti base di linguaggio di markup
- Basi di HTML e CSS3
- Come realizzare una pagina web
HTML
- Elementi, tag
- Attributi
- Semantica degli attributi
- Immagini
- Hyperlink
CSS
- Sintassi
- Proprietà
- Selettori
- CSS Precedence
- CSS Box model
- Tabelle e contenuti embedded
- Progettare per ogni schermo
- Layout di pagina: Flexbox e Grid
- Animazioni
Esame
- Due quiz durante il corso (Google Forms)
- Un progetto in HTML e CSS (Creazione di un sito web statico)
- Discussione e domande sul progetto
Piccolo sito web da realizzare a casa. Il giorno dell'esame ci saranno alcune domande orali
inerenti al lavoro fatto e agli argomenti studiati durante il corso.
Il progetto completo va inviato almeno una settimana prima dell’orale per una
pre-valutazione. Prima è inviato meglio è, per avere aiuto e, di conseguenza, migliorare il
voto.
L’obiettivo dell’esame è sviluppare un piccolo sito web con argomento a scelta libera (blog,
sito aziendale, ecc).
Il progetto deve includere almeno 3 pagine con layout diverso. In particolare:
- home page di presentazione
- almeno altre 2 pagine con layout diversi (e diversi dalla homepage).
- unico vincolo: creare un header, una navbar e un footer replicati in ogni pagina
- prestare massima attenzione alla correttezza formale del codice (evitare errori
HTML e CSS)
- non copiare codice da temi grafici o altri siti (soprattutto non copiare codice di cui
si ignora il funzionamento, es. JavaScript)
Internet
Internet è una rete di computer che si connettono e comunicano tra loro a livello globale.
Internet funziona grazie a una serie di “linguaggi” che consentono alle informazioni di
viaggiare tra la rete di computer. Questi sono conosciuti come protocolli. Ad esempio,
alcuni protocolli comuni per il trasferimento di e-mail sono IMAP, POP3 e SMTP.
Proprio come la posta elettronica è uno strato/servizio in Internet, il World Wide Web è un
altro strato/servizio che utilizza diversi protocolli.
- Line Mode Browser - feb 1992. By Berners Lee. Il primo browser multi- piattaforma.
- Semantic Web
HTTP (Hypertext Transfer Protocol) - È stato sviluppato appositamente per il World Wide
Web.
Questo protocollo richiede il documento "HTML" dal server e lo serve al web browser.
URL (Uniform Resource Locator) - È l'indirizzo che indica dove un determinato documento
risiede sul web.
<protocollo>: // <nodo> / <posizione>
Le pagine che compongono un sito web sono fisicamente ospitate da un web server.
HTTP (Cenni)
HyperText Transfer Protocol
HTTP (Caratteristiche)
HyperText Transfer Protocol
HTTP - URL
HTTPs (Cenni)
HyperText Transfer Protocol over Secure Socket Layer
HTML
Rappresenta il contenuto, organizzato in una struttura logica: le parole, i titoli dei capitoli,
le figure, i diagrammi, ecc.
CSS
Riguarda la presentazione o lo stile della pagina.
JavaScript
È il linguaggio che permette di dar vita alle azioni che una pagina può intraprendere,
come l'interazione con l’utente, e la personalizzazione e modifica della pagina in base a
qualche parametro.
L’HyperText può contenere riferimenti a pagine, immagini o suoni che si trovano in altre
parti del documento o in documenti esterni.
● sezioni
● paragrafi
● titoli
● enfasi
● tabelle
● etc
Per riassumere…
Tag
● Utilizzati per organizzare un file di testo tale che rappresenti un albero di elementi
che compongono il documento html
● Sono frammenti di testo che informano il computer dove un elemento inizia e
finisce
● Sono quasi sempre a coppie: un tag di apertura e uno di chiusura
I tag sono case insensitive, cioè scriverli in maiuscolo o minuscolo è la stessa cosa. E’
convenzione scriverli in minuscolo. Di solito i tag rappresentano un elemento che è
completamente descritto dai suoi attributi.
Attributi
- Contengono informazioni extra di un elemento
- Servono per specificare la funzione e la tipologia di un elemento
L’attributo è utilizzato all'interno del tag di apertura a cui è applicato e deve essere
aggiunto dopo uno spazio dal nome del tag
Commenti
● I commenti aggiungono del testo rivolto principalmente alle persone
● Il browser ignora completamente il contenuto del commento
Identazione
● Per evidenziare l'annidamento degli elementi si usa “identare” il codice
● Apertura e chiusura del tag sono allo stesso livello, mentre il contenuto viene
spostato verso destra di un paio di spazi
Headings
- Sei diverse intestazioni
- I titoli sono gerarchici
- In ordine di dimensione
- Importanti per strutturare la pagina
Div
● Uno degli elementi più popolari
● Abbreviazione di "division"
● Contenitore che divide la pagina in sezioni
● Utili per raggruppare elementi nell'HTML
● Può contenere qualsiasi testo o altri elementi HTML
Paragraph & span
- I paragrafi (<p>) contengono un blocco di testo.
- <span> contiene brevi parti di testo o altro HTML. Sono usati per separare piccoli
pezzi di contenuto che sono sulla stessa linea di altri contenuti.
Styling text
● Il tag <em> generalmente viene visualizzato come enfasi in corsivo.
● Il tag <strong> generalmente renderà l'enfasi in grassetto.
● L'elemento di interruzione di riga <br> è composto solo da un tag
○ Utilizzabile all'interno nel codice HTML
○ l'interruzione di riga verrà visualizzata nel browser.
Images
● Il tag <img> consente di aggiungere un'immagine a una pagina web.
● Il tag <img> è un tag che si chiude automaticamente (la fine del tag <img> ha una
barra in avanti /).
● Il tag <img> ha un attributo obbligatorio chiamato src (source), deve essere l’URL
dell'immagine.
Per creare struttura e contenuto HTML, dobbiamo aggiungere tag di apertura e chiusura
<html> dopo aver dichiarato <!DOCTYPE html>.
Liste
● Gli elenchi (o liste) sono utili per per organizzare il testo
● Usati anche per strutturare la pagina (es. menù)
● Utili semanticamente
3 tipi di lista:
- ordinate
- non ordinate
- definizione
Liste ordinate
● Il tag ordered list <ol>
permette di creare una
lista ordinata di elementi.
● Le singole voci dell'elenco devono essere aggiunte all'elenco utilizzando il tag <li>.
Possiamo cambiare il tipo di numerazione con l’attributo type applicato al tag <ol>.
Liste di definizione
● Per associare a ogni voce un testo descrittivo
● Tag <dl>
● Gli elementi dell’elenco
sono composti da due
parti <dt> e <dd>.ù
Contenuto e stile
Quando scriviamo contenuti HTML è fondamentale separare il contenuto dalla sua
presentazione. Lo stile deve essere inserito nei fogli di stile (CSS).
Web semantico
Il termine web semantico è stato inventato da Tim Berners-Lee per indicare un’evoluzione
del Web dove i documenti sono associati a informazioni (metadati) che ne specificano il
contesto semantico in un formato adatto all’interrogazione, all'interpretazione e
all’elaborazione automatica.
Tag semantici
I tag semantici sono tag HTML che descrivono espressamente il loro significato.
HTML5 ha introdotto molti nuovi tag semantici in grado di identificare essi stessi le diverse
sezioni di una pagina web e i contenuti in esse presenti (senza dover ricorrere a specifici
attributi).
Tag di Stile vs Tag Semantici
● I tag di stile, in HTML4, si
concentravano esclusivamente
sulla presentazione e sul design
(come dovrebbe apparire il
testo sullo schermo).
<b> vs <strong>
Bold è uno stile che rende le lettere più spesse, quindi si distingue tra gli altri testi, ma non
ha alcun significato semantico (ad esempio per i browser vocali, gli screen reader e altri
tipi di modi per accedere al Web).
<i> vs <em>
Italic: corsivo, inclina il testo. Di solito in corsivo scriviamo i nomi di riviste, libri, programmi
televisivi, ecc. E’ pensato esclusivamente per scopi di presentazione, non significa niente
per chi non può leggere il testo (bot, assistenti vocali, etc).
Emphasis è usata per sottolineare l'enfasi dei suoi contenuti. La parola in una frase che
sottolinei può cambiare l'intero significato.
Elementi Semantici
I TAG che suggeriscono lo scopo del contenuto presente al loro interno si dicono
“semantici”.
Esempi:
• Per aggiungere un paragrafo, si utilizzerà il tag di paragrafo <p>.
• Per aggiungere un'intestazione, si utilizzerà i tag di intestazione <h1> - <h6>
• Per aggiungere un'immagine, dovremmo usare il tag immagine.
• Etc
<figcaption> e <figure>
● <figure> serve per raggruppare un elemento con la sua didascalia
● L'elemento <figure> può contenere un <figcaption> (uno solo come primo o ultimo
elemento, non obbligatorio), una o più immagini o altri elementi
● <figcaption> è utilizzato per fornire una didascalia o una spiegazione all'immagine
(figura).
● Mentre l'attributo alt spiega l'immagine per la tecnologia assistiva, <figcaption>
può essere usato per fornire informazioni aggiuntive per tutti gli utenti.
<cite> e <blockquote>
● Il tag <blockquote> specifica una sezione citata da un'altra fonte
● Solitamente il testo ha un’identazione (rientro a sinistra)
● <cite> è usato per descrivere un riferimento a un lavoro creativo (es. un libro, un
film o un sito web)
<address>
<picture>
● Il tag <picture> consente di specificare più sorgenti/fonti per un immagine
● Il tag <picture> contiene due tag diversi: uno o più elementi <source> e un
elemento <image>
● Il browser utilizza i valori degli attributi per caricare l'immagine più appropriata;
usa il primo elemento <source> corrispondente e ignora gli elementi <source>
successivi.
● Il tag <img> viene utilizzato per fornire la compatibilità con le versioni precedenti
se un browser non supporta l'elemento o se nessuno dei tag <source> corrisponde.
- <h1> a <h6> sono titoli. <h1> è per la voce più importante e <h6> è per la meno
importante
<section>
- L'elemento della sezione è usato per tagliare una pagina (es. i capitoli di un libro,
etc).
- Un elemento <article> può utilizzare gli elementi della sezione per suddividere i
suoi contenuti in gruppi.
<span>
- Per aggiungere uno stile a una parte di una frase (in linea)
- Manipolare parte di una frase usando JavaScript
- Quando nessun altro elemento HTML è applicabile, puoi usare <span> (e <div>) per
aggiungere attributi come class e id
div vs span
src
L'attributo src(source) del tag <img> indica dove recuperare l'immagine.
Riferimento assoluto
- Basta richiamare la risorsa col suo URL completo
- Si chiama riferimento assoluto perché è valido da qualsiasi posizione lo si richiami
Riferimento relativo
- Il percorso per raggiungere la risorsa va descritto a partire
- Non serve specificare protocollo e dominio ma solo il percorso del file
Il tipo di formato di file immagine (ad es. png, jpeg, ecc.) non dipende dall'elemento <img>
ma dal browser che esegue il rendering del contenuto.
Alcuni formati come png, jpeg, gif e bmp sono ampiamente supportati dai browser.
Procurare le immagini
- Non tutte le immagini trovate in rete si possono usare in un sito web, la maggior
parte sono protette da copyright
- Anche immagini scattate in proprio possono avere limitazioni: se è ritratta una
persona potrebbe servire la liberatoria
- Esistono siti con raccolte di immagini copyleft, cioè utilizzabili gratuitamente
- Citare sempre la fonte delle immagini usate
Formati immagine
- Le immagini JPEG (Joint Photographic Experts Group) si comprimono bene e sono
lo standard per le foto. Ma non supportano alcun tipo di animazione o trasparenza.
Compressione di tipo lossy, cioè prevede perdita di qualità
- WebP è un nuovo formato per immagini specifico per il web sviluppato da Google
(WebM è l’equivalente di audio/video)
- WebP supporta la trasparenza e può comprimere immagini in modo lossy e
lossless
- Immagini di dimensione 25/30 % inferiore di un JPEG di pari qualità
Utilizzando questo attributo, puoi fornire una breve descrizione di cosa tratta l'immagine.
Questa descrizione dovrebbe trasmettere informazioni sull'immagine o sulla sua funzione
nella pagina.
- per gli utenti che non sono in grado di vedere l’immagine utilizzando la tecnologie
assistive
Hyperlink
Il collegamento ipertestuale è qualsiasi testo o immagine che con un click / tap ci porta in
un altra “pagina”.
Tips:
- Applicare collegamenti ipertestuali a frasi brevi.
- Rendere significativa la frase di collegamento. Evitare frasi come "Clicca qui" o
"Leggi altro". Il link dà già indicazione che dovrebbe essere cliccato.
- Non utilizzare il testo troppo breve. È poco visibile il collegamento ipertestuale se
viene utilizzato su una parola o un carattere ed è difficile per gli utenti fare clic/tap
con il touchscreen.
- Aspetto: i collegamenti hanno un aspetto predefinito nella maggior parte dei
browser, blu e sottolineati.
<a>
L'elemento <a> (ancora), col suo attributo href, crea un hyperlink a pagine web, file,
indirizzi email, elementi all’interno della pagina stessa, o qualunque altra cosa indirizzabile
con un URL.
<a> vs <link>
- L'elemento <a> non deve essere confuso con<link>
- Il tag <link> è usato per definire un collegamento tra un documento e una risorsa
esterna come un foglio di stile.
Attributi dei link:
- href, target, download, rel, hreflang, accesskey
href
href punta all'URL a cui il link dovrebbe passare. Sebbene sia un attributo opzionale, senza
di esso, il tag <a> non è un collegamento ipertestuale e la formattazione è indistinguibile
dal testo normale.
L'attributo href accetta un URL. Questo URL può essere sotto forma di:
- un collegamento a un sito Web esterno noto anche come URL assoluto: <a
href="https://qwant.com"></a>
- un collegamento a un file o una pagina all'interno dello stesso sito Web, noto
anche come URL relativo: <a href="contacts.html"></a>
- un collegamento a un elemento sulla stessa pagina. L'elemento, è referenziato
usando il suo ID. Per esempio. Se vuoi collegare un div con id ='dettagli', il tag di
ancoraggio corrispondente sarà: <a href="#details"></a>
- protocolli come: mailto (per indirizzi email): <a
href="mailto:[email protected]"></a>
Target specifica la destinazione in cui deve essere aperto l'URL collegato in href. Può avere
i valori:
- _self
- _blank
download
- L'attributo download è nuovo in HTML5
- Consente a un link di scaricare un file anziché spostarsi in un'altra posizione
- Prende il nome del file come valore ma il valore è facoltativo
Moduli - Form
- I moduli (o form) permettono di raccogliere informazioni degli utenti
- Per funzionare è necessario un web server in grado di elaborare le richieste (non è
argomento di questo corso)
- I form di solito sono composti da uno o più campi (input) e un pulsante per
confermare e inviare i dati
- Il tag fondamentale per creare un form è <form>
- <form> necessita di due attributi: action e method
- L’attributo action indica l’URL a cui vanno inviati i dati. E’ un indirizzo del web
server che elabora la richiesta.
- E’ possibile inviare i dati per email (anziché a un web server) usando il proprio
client di posta. Per farlo il valore di action deve avere il prefisso mailto:
- L’attributo method indica il metodo (o verbo) HTTP con cui sono inviati i dati al web
server
- method in genere può assume due valori: GET o POST
- in GET i dati sono inviati in un solo step concatenati all’URL del web server
(limitazione sul numero caratteri)
- in POST i dati sono inviati in due step: prima è contattata la pagina del web server,
poi sono inviati i dati. Per questo motivo i dati non sono nell’URL (nessun limite
sulla lunghezza dei dati)
- Il tag <form> introduce un elemento vuoto
- Servono altri tag per popolarlo (caselle di testo, elenchi a discesa, ecc), di solito
corredati da etichette di testo per spiegare il funzionamento.
<input>
Per inserire un campo di testo si usa il tag <input> con l’attributo type che ne indica il tipo.
I valori ammessi per type sono:
e molti altri.
<textarea>
Una textarea è un controllo per inserire testo multi-linea. E’ utile quando l’utente deve
scrivere testo di una certa lunghezza.
<label>
L’etichetta di un campo del form non andrebbe inserito con semplice testo, ma con il tag
<label>. Per esplicitare a quale campo riferita si usa l’attributo for.
Usando i CSS, possiamo determinare l'aspetto visivo dei nostri elementi HTML
indipendentemente dal codice HTML stesso.
<style> e <link>
- La migliore pratica quando si lavora con i CSS è tener separato lo stile in un file
esterno usando il tag <link>
- Per posizionare i CSS direttamente in un documento HTML, usiamo il tag <style>.
Questo tag può apparire ovunque in un documento HTML, tuttavia, la pratica più
comune è quella di inserirlo in <head>
- Lo stile può essere aggiunto direttamente a un elemento tramite l’attributo
globale style
Sintassi CSS
Dichiarazione
- La dichiarazione di una regola CSS si apre e si chiude con parentesi graffe {}
- Una dichiarazione può contenere un qualsiasi numero di proprietà
Proprietà e valori
Sintatticamente ogni coppia è costituita dal nome della proprietà, seguita da due punti (:)
seguita da un valore e terminata da un punto e virgola;
Il selettore “p” applicherà la regola CSS a tutti i tag <p> nel documento.
Selettori di tipo id
Il selettore di ID è un cancelletto (#) seguito direttamente dall’ID.
I valori dell'attributo class possono essere condivisi da più tag e più classi possono essere
assegnate a un tag.
Selettori raggruppati
Ipotizziamo di avere regole CSS identiche per più selettori.
E’ una bad practice ripetere più volte le stesse regole: una eventuale modifica va applicata
n volte. Scomodo e rischioso.
Selettori specializzati
La regola di stile per una classe può anche essere definita per uno specifico tag o un
qualsiasi sotto-gruppo di selettori.
In questo modo si evita di applicarla a qualsiasi elemento avente una certa classe.
Se due selettori di tipi diversi (come tag e classe) appaiono uno accanto all'altro senza
spaziature che li separano, allora formano un selettore specializzato.
Selettori combinatori
I selettori combinatori sono selettori che stabiliscono una relazione tra due o più semplici
selettori, come “A è figlio di B” oppure "A è adiacente a B”:
- selettori discendenti
- selettori discendenti diretti
- selettori fratelli adiacenti
- selettori fratelli generici
Selettori discendenti
Una regola di stile si può applicare anche a elementi in base ai suoi elementi antenati o
genitori.
Qualsiasi tag <a> ovunque all'interno di un <blockquote> ovunque all'interno della sezione
#intro sarà in grassetto.
Permette di applicare uno stile a solo agli elementi “figli” diretti (child).
Si utilizza il simbolo > tra due selettori per limitare l'applicazione ai figli diretti del genitore.
L’attributo va scritto tra parentesi quadre [ ]. Ad esempio per selezionare tutti gli elementi
<a> che hanno l’attributo target.
Per selezionare tag aventi un attributo con un valore specifico.
Selettori di pseudo-classi
CSS permette di creare selettori sulla base delle pseudo-classi, cioè sulla base dello stato di
un elemento.
Selettori di pseudo-elementi
Questi selettori fanno riferimento a una parte di un elemento, ad esempio la prima lettera
o la prima riga di un paragrafo.
Selettori globali
L'asterisco (*) può essere utilizzato per “agganciare” qualsiasi tag. Spesso Utile se
combinato con altri selettori in un selettore discendente.
CSS III