Corso HTML Css PPT
Corso HTML Css PPT
corso base
<a href="Esempio.htm">Esempio</a>
Pedici:
Questo testo viene visualizzato in <sub>pedice</sub>
I tag inline sono tutti quelli che non interrompono il flusso di pagina.
Tra quelli che abbiamo visto finora sono tag inline i tag <b>, <strong>,
<i>, <em>, <u>.
I tag block-level sono tutti quelli che interrompono il flusso della
pagina. Tra quelli che abbiamo visto finora sono tag block i tag
<h1>..<h6>, <p>.
Un tag inline può contenere solo altri tag inline.
Tra i tag block l’unico tag che non può contenere altri tag block al suo
interno è il tag <p>.
Il tag <div>
• Il tag <div> è un generico tag di tipo block
• Dal punto di vista semantico il tag <div> non
ha alcun significato.
• Il tag <div> può contenere altri tag di tipo
block o inline, tra cui lo stesso tag <div>.
• Vedremo in seguito che utilizzando gli stili si
potrà cambiare il modo con cui questo tag
viene renderizzato nel browser.
Il tag <span>
• Il tag <span> è un generico tag di tipo inline
• Come per il tag <div>, il tag <span> non ha
alcun significato dal punto di vista semantico
• Il tag <span> può contenere altri tag di tipo
inline ma nessun tag di tipo block, tra cui lo
stesso tag <span>.
• Vedremo in seguito che utilizzando gli stili si
potrà cambiare il modo con cui questo tag
viene renderizzato nel browser.
Gli elenchi ordinati (1)
Gli elenchi ordinati sono una serie progressiva ed ordinata di elementi. Ogni
elemento ha come prefisso un numero o una lettera. Per creare un elenco
ordinato è necessario l’uso contestuale di due diversi tag: un tag <ol>
(ordered list) che identifica l’inizio della serie di elementi, una serie di tag <li>
(list item) che identificano l’inizio e la fine del singolo elemento. Esempio:
<ol>
<li>Primo elemento</li>
<li>Secondo elemento</li>
<li>Terzo elemento</li>
</ol>
1. Primo elemento
2. Secondo elemento
3. Terzo elemento
Gli elenchi ordinati (2)
Per impostazione predefinita gli elenchi ordinati utilizzano come
stile di enumerazione i numeri, ma è possibile modificare questo
comportamento attraverso l’uso dell’attributo type. Ad esempio
utilizzando: <ol type="a"> verrà visualizzato un elenco ordinato
mediante lettere dell’alfabeto minuscolo.
Valore dell’attributo type Risultato
type="1" Numeri arabi (predefinito)
type="a" Alfabeto minuscolo
type="A" Alfabeto maiuscolo
type="i" Numeri romani minuscoli
type="I" Numeri romani maiuscoli
Gli elenchi non ordinati (1)
Gli elenchi non ordinati vengono identificati dal tag <ul> (unordered
list). Gli elementi dell’elenco sono individuati, come nel caso delle liste
ordinate, da tag <li> (list item). Esempio:
<ul>
<li>Primo elemento</li>
<li>Secondo elemento</li>
<li>Terzo elemento</li>
</ul>
• Primo elemento
• Secondo elemento
• Terzo elemento
Gli elenchi non ordinati (2)
Per impostazione predefinita gli elenchi non ordinati utilizzano
come stile di enumerazione un pallino, ma è possibile modificare
questo comportamento attraverso l’uso dell’attributo type.
Valore dell’attributo type Risultato
type="disc" Pallino pieno (predefinito)
type="circle" Cerchio vuoto
type="square" Quadrato pieno
Gli elenchi ordinati e non possono essere annidati tra di loro. Nel
caso di elenchi non ordinati lo stile di enumerazione cambia in
funzione del livello di annidamento.
Liste di definizione
Vengono individuate dal tag <dl>. Gli elementi
dell’elenco vengono individuati da due differenti
tag: <dt> (definition term), <dd> (definition
description). Esempio:
<dl>
<dt>A</dt>
<dd>è la prima lettera dell’alfabeto</dd>
<dt>Z</dt>
<dd>è l’ultima lettera dell’alfabeto</dd>
</dl>
Il tag <a> (hyperlink)
Un ipertesto è un insieme di documenti (pagine) messi in relazione tra loro.
La caratteristica principale di un ipertesto è che la lettura può avvenire anche
in modo non lineare. Solitamente si clicca su alcune parole per accedere ad
un nuovo documento. Il tag che permette di associare una porzione di
documento (una o più parole, un’immagine, etc) con un altro documento è il
tag <a>. Il collegamento creato tramite tag <a> è definito collegamento
ipertestuale. Esempio di utilizzo del tag <a>:
...
<h1>Questo è il <a name="Cap1">Capitolo 1</a></h1>
<p>Testo del capitolo 1...</>
L’attributo target (1)
L’attributo target del tag <a> permette di
definire la finestra di destinazione del
caricamento del documento. Ad esempio:
\index.html
\cartella1\paginaA.html
\cartella2\paginaB.html
Se vogliamo aggiungere un collegamento dalla pagina index.html alla pagina paginaA.html, il valore da
impostare sull’attributo href deve essere:
<a href="cartella1\paginaA.html">Vai a Pagina A</a>
Per un collegamento dalla pagina paginaA.html alla pagina paginaB.html si dovrà invece tornare indietro
di una cartella (..):
<a href="../cartella2/paginaB.html">Vai a Pagina B</a>
Questi collegamenti contengono tutti percorsi relativi, perché non partono dalla radice del sito web (il
primo carattere del collegamento è diverso da /).
Percorsi assoluti (1)
Un percorso assoluto sarà del tipo:
<tr>
Permette di definire l’inizio della riga
<td>
Permette di definire l’inizio della colonna
Le tabelle (3)
Esempio:
<table>
<tr>
<td>Riga 1, Colonna 1</td>
<td>Riga 1, Colonna 2</td>
</tr>
<tr>
<td>Riga 2, Colonna 1</td>
<td>Riga 2, Colonna 2</td>
</tr>
</table>
Le tabelle (4)
Possiamo aggiungere ulteriori tag per specificare
quali porzioni delle tabelle rappresentano la
testata <thead>, il corpo della tabella <tbody> e
il footer: <tfoot>.
Vedremo in seguito che questi elementi possono
essere stilizzati in modo differente grazie agli
stili.
Le tabelle (5)
<table>
<caption>Tabella 1</caption>
<thead>
<tr>
<th>Testata, Colonna 1</th>
<th>Testata, Colonna 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Riga 1, Colonna 1</td>
<td>Riga 1, Colonna 2</td>
</tr>
<tr>
<td>Riga 2, Colonna 1</td>
<td>Riga 2, Colonna 2</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>Footer, Colonna 1</td>
<td>Footer, Colonna 2</td>
</tr>
</tfoot>
</table>
DOCTYPE HTML (1)
• Permette di specificare la versione del linguaggio HTML
utilizzato nella stesura della pagina.
• Non è indispensabile ma i browser lo utilizzano per capire
come renderizzare il codice html della pagina, se manca può
determinare effetti indesiderati.
• Il linguaggio HTML si è evoluto nel tempo ed esistono diverse
versioni, ogni versione viene identificata da una diversa
DOCTYPE.
• Ad oggi la versione di HTML maggiormente utilizzata per lo
sviluppo di nuovi siti è la 5. Standardizzata ad ottobre 2014 dal
W3C ma supportata da tutti i browser già da diversi anni.
DOCTYPE HTML (2)
Esempi di DOCTYPE:
DOCTYPE Versione HTML/XHTML
<meta />
Permette di specificare dei metadati
I tag dell’head (3)
<link />
Solitamente usato per collegare un foglio di stile
esterno alla pagina (li vedremo in seguito)
<style />
Specifica un foglio di stile per il documento
(inserito direttamente al suo interno)
I tag dell’head (4)
<script />
Permette di includere script nel documento
(solitamente javascript).
<base />
Permette di specificare i valori base per la
destinazione (target) dei collegamenti dell’intera
pagina.
I tag del body (1)
• La maggior parte dei tag html vanno inseriti
nella sezione body del documento.
• Alcuni li abbiamo già osservati in precedenza,
altri li scopriremo nella parte restante del
corso.
• Occorre sempre ricordare che lo scopo
principale dei tag non è quello di definire lo
stile di visualizzazione ma di dare un
significato all’informazione in essi contenuta.
I tag del body (2)
<blockquote>Citazione...</blockquote>
Permette di specificare una porzione di codice
come citazione. Attraverso l’attributo cite è
possibile specificare il riferimento alla citazione
(deve essere una URL completa). È di tipo Block.
<pre>Testo</pre>
Il testo contenuto viene visualizzato con un font non
proporzionato ed esattamente come è stato scritto
nel documento html. È di tipo Block.
I tag del body (3)
<q>testo citazione</q>
Citazione breve, anche in questo caso è possibile
utilizzare l’attributo cite per fornire la fonte. È
un tag di tipo inline.
<code>porzione di codice</code>
Visualizza con un font monospaced il testo
presente al suo interno. Solitamente usato per
mostrare una porzione di codice.
I tag del body (4)
<del>Testo cancellato</del>
Permette di mostrare un testo «cancellato». Il
testo viene visualizzato barrato. È un tag inline.
<ins>Testo inserito</ins>
Permette di mostrare un testo inserito. Il testo
viene visualizzato sottolineato. È un tag inline.
I tag del body (5)
<hr />
Inserisce una linea orizzontale.
<img />
Permette di visualizzare un’immagine all’interno
del documento. Il collegamento all’immagine
avviene attraverso l’attributo src.
Moduli (form)
• Il linguaggio HTML permette di definire degli
elementi per acquisire l’input dei dati da parte
degli utenti.
• L’HTML non è però in grado di processare tali
input (ricordiamoci che è un linguaggio di markup
e non di scripting)
• Per processare l’input degli utenti è necessario
l’uso di un linguaggio di scripting lato client
(javascript) o di un’applicazione server side (php,
asp.net, jsp, coldfusion, etc.).
Input di tipo text
<input type="text" name="nomecampo" />
Il tag input è un tag che viene renderizzato in modi
differenti a seconda del valore impostato nell’attributo
type.
Se il valore di type è text, viene visualizzato un campo di
input di tipo testuale. In questo tipo di campi di input
l’utente può inserire una stringa alfanumerica (lettere,
numeri, etc).
L’attributo name permette di specificare un identificativo
per il campo, in modo da permettere il recupero
dell’informazione una volta effettuato l’inoltro dei dati.
Checkbox (1)
<input type="checkbox" name="nomecampo"/>
Se il valore di type è checkbox, viene visualizzata
una casellina quadrata su cui è possibile
applicare un segno di spunta con un clic.
Per applicare il segno di spunta come
impostazione predefinita, è possibile usare
l’attributo checked, impostandone il valore a
checked:
<input type="checkbox" checked="checked" />
Checkbox (2)
• Checkbox è normalmente usato per
permettere la scelta di n opzioni da un elenco.
Ogni voce dell’elenco può essere selezionata
in modo indipendente dalle altre voci. È quindi
possibile operare delle scelte multiple.
Radio
<input type="radio" name="gruppo" id="v1"/>
<input type="radio" name="gruppo" id="v2"/>
<input type="radio" name="gruppo" id="v3"/>
Se il valore di type è radio, viene visualizzata una
casella a forma di cerchio che può contenere un
puntino al suo interno. La differenza tra il radio
button e la checkbox è che la checkbox viene
utilizzata quando si vuole dare la possibilità di
scegliere una sola voce da un elenco di voci.
Attraverso l’attributo name è possibile definire quali
voci fanno parte di questo elenco.
Select (1)
<select name="nomecampo">
<option value="1" selected="selected">Prima</option>
<option value="2">Seconda</option>
<option value="3">Terza</option>
</select>
Il tag select permette di definire un menù di opzioni. L’attributo
selected permette di specificare una scelta come predefinita.
Il tag select viene renderizzato come un menù a tendina che
mostra l’opzione selezionata seguita da un triangolo nero che
indica la possibilità di espandere il menù.
Select (2)
In alcuni casi è necessario raggruppare le opzioni per
tipologia. Il tag <optgroup> permette di raggruppare le
opzioni e di specificare una label per ogni gruppo.
<select id="nomecampo">
<optgroup label="Primo gruppo">
<option value="1">Prima</option>
<option value="2">Seconda</option>
</optgroup>
<optgroup label="Secondo gruppo">
<option value="3">Terza</option>
</optgroup>
</select>
Select (3)
In alcuni casi può essere utile dare la possibilità
all’utente di effettuare scelte multiple.
L’attributo multiple modifica il comportamento
del tag select in modo da permettere la
selezione di più scelte attraverso l’uso del tasto
control (CTRL). L’attributo size permette inoltre
di specificare il numero di voci che possono
essere visualizzate contemporaneamente.
Etichettare i controlli
<label for="ctrl">Cognome</label>
<input type="text" id="ctrl" name="nomecampo" />
<fieldset>
<legend>Testo della label</legend>
<label for="ctrl">Cognome</label>
<input type="text" id="ctrl" name="ctrl" />
<input type="submit" name="btn" value="Invia" />
</fieldset>
Il tag <textarea>
<textarea name="ctrl" cols="50" rows="10"></textarea>
<div class=“mioStile">
Testo in Arial su sfondo rosso!
</div>
<html>
<head>
<style>
.mioStile{
background-color:#cc9999;
font-family:Arial;
}
</style>
</head>
<body>
<div class="mioStile">
Testo in Arial su sfondo rosso!
</div>
</body>
</html>
Uso degli stili esterni (1)
A questo punto non ci resta che trovare un modo
per trasferire questi stili dal codice della pagina
HTML verso un documento esterno.
Per fare questo è sufficiente creare un nuovo file
con estensione .css (es. stile.css) contenente il
seguente codice:
.mioStile {
background-color:#cc9999;
font-family:Arial;
}
Uso degli stili esterni (2)
Il codice della pagina HTML deve diventare
quindi:
<html>
<head>
<link href="stile.css" type="text/css" rel="stylesheet" />
</head>
<body>
<div class="mioStile">
Testo in Arial su sfondo rosso!
</div>
</body>
</html>
CSS – Sintassi e commenti
Tipicamente un foglio di stile è costituito da una
serie di regole che verranno poi applicate agli
elementi della nostra pagina html.
Per identificare gli elementi a cui applicare le regole
vengono utilizzati dei selettori.
È possibile individuare gli elementi attraverso il
nome del tag (selettore di tipo), mediante
l’attributo class (selettore di classe: .) o mediante
l’attributo id (selettore di ID: #).
Osserviamo quindi l’esempio presente nella pagina
successiva.
Esempio CSS
body{
background-color: white;
font-size:14px;
color:#000;
}
h1{
color: green;
}
#Contenitore{
margin:20px auto 20px auto;
width:900px;
}
.mioStile{
background-color:#cc9999;
font-family:Arial;
}
Selettore di tipo (1)
body identifica le regole da applicare per il tag body.
Osserviamo che le parentesi graffe delimitano il blocco di
regole da applicare all’elemento identificato dal selettore.
selettore {
proprietà:valore;
}
Selettore di tipo (2)
Nel codice dell’esempio troviamo, il selettore di
tipo riferito al tag h1. Com’è ovvio, le
regole/proprietà descritte all’interno delle
parentesi graffe, saranno riferite a tutti i tag h1
presenti sulla pagina.
N.B. Nelle versioni precedenti ad HTML5, era
possibile specificare un solo tag h1 per pagina.
Da HTML5 in poi è possibile specificare un tag
h1 per ogni sezione.
Selettore di ID
Il selettore #Contenitore permette di specificare
delle regole per il tag che ha come identificativo
univoco il valore Contenitore. Il tag dovrà quindi
essere del tipo:
<div id="Contenitore">esempio</div>
* {
color: red;
}
Dove il tag a è il figlio del tag p, che ha sua volta è figlio del tag
body, etc.
Alla stessa maniera body è il padre del tag p che a sua volta è
padre del tag a.
Combinare i selettori (1)
Osserviamo il seguente codice:
<h1>
Benvenuti nel nostro
<a href="Link1.html">Sito</a>
</h1>
<p>
Clicca su questo
<a href="Link2.html">collegamento</a>
per maggiori informazioni
</p>
Combinare i selettori (2)
Vediamo come poter impostare il verde come
colore del testo del primo link ed il rosso come
colore del testo del secondo link.
Utilizzando il selettore di classe l’operazione è
semplice, basta aggiungere le due classi e
impostare le proprietà attraverso il css.
Aggiungiamo quindi le due classi
Combinare i selettori (3)
<h2>
Benvenuti nel nostro
<a href="Link1.html" class="verde">Sito</a>
</h2>
<p>
Clicca su questo
<a href="Link2.html" class="rosso">collegamento</a>
per maggiori informazioni
</p>
.rosso {
color: red;
}
Combinare i selettori (4)
Se volessimo evitare l’uso dei selettori è possibile
utilizzare l’albero dell’HTML per identificare gli elementi.
Sappiamo che il primo tag a è figlio di h1 ed il secondo
tag a è figlio di p. Il codice css da utilizzare sarà quindi:
h2 a {
color: green;
}
p a {
color: red;
}
Combinare i selettori (5)
Se diversi tag condividono buona parte delle stesse proprietà, è possibile raggruppare
la definizione dei tag utilizzando la sintassi:
Ad esempio:
h1, p, div {
color: red;
}
Imposta a rosso il colore dei tag h1, p e div presenti nella pagina a cui collegheremo
questo css. Le proprietà per cui differiscono potranno poi essere impostate utilizzando
il formato a singolo selettore visto in precedenza.
Proprietà
Vedremo in seguito un elenco di proprietà da
utilizzare per formattare i testi, per definire i colori,
per impostare le immagini di sfondo, etc.
color: rgb(0..255,0..255,0..255)
color: rgb(0..100%, 0..100%, 0..100%)
Formattazione del testo (5)
font-weight
Permette di specificare se il testo è in grassetto
o normale.
font-style
Permette di specificare lo stile del font (italic,
oblique, etc).
Formattazione del testo (6)
text-decoration
Permette di specificare una eventuale
«decorazione» del testo. Alcuni dei possibili valori
sono: underline, line-through, overline.
text-transform
Permette di modificare la visualizzazione del testo.
Alcuni dei suoi possibili valori sono: capitalize
(iniziale di ogni parola maiuscola, uppercase (tutto
in maiuscolo), lowercase (tutto in minuscolo).
CSS box model
L’insieme delle regole che definiscono l’aspetto
estetico degli elementi di tipo block è detto CSS box
model.
Gli elementi di tipo block hanno:
• Dimensione (width, height)
• Padding (distanza dal bordo)
• Bordo
• Margine (distanza tra il bordo e gli altri elementi)
CSS box model
CSS box model
<div class="blocco">Esempio</div>
.blocco{
/* per definire le dimensioni dell’elemento */
width: 300px;
height: 200px;
/* padding */
padding-top: 10px; padding-bottom: 10px;
padding-left: 20px; padding-right: 20px;
/* per definire il tipo, le dimensioni ed il colore del bordo */
border-top: solid 5px red;
border-bottom: solid 5px red;
border-left: solid 5px red;
border-right: solid 5px red;
/* per definire le dimensioni del margine */
margin: 20px 20px 20px 20px;
}
CSS box model
E’ importante osservare che la larghezza totale impegnata
è data da:
Larghezza dell’elemento + padding left + padding right +
border left + border right + margin left + margin right
(nell’esempio la larghezza totale è pari a 390 pixel)
margin: 10px 15px 20px 25px; Imposta a 10px il top, a 15px il right, a
20px il bottom, a 25px il left.
<div class="left">Sinistra</div>
<div class="right">Destra</div>
.left { float:left; }
.right { float:right; }
float
Gli elementi il cui float è impostato a left o right
si posizionano a destra o a sinistra (rispetto al
loro contenitore) e permettono agli altri
elementi che seguono di posizionarsi di fianco a
loro.
Questo permette l’organizzazione della pagina
su diversi elementi, anche se acquisire
padronanza con il floating richiede un po’ di
tempo e di esperienza.
clear
Gli elementi che seguono un elemento impostato
come float continuano a posizionarsi sulla sinistra
(o sulla destra) dell’elemento.
Per impedire che questo comportamento prosegua
all’infinito è possibile aggiungere un elemento di
tipo block che abbia la proprietà clear impostata a
both.
<div class="clearfix"></div>
.clearfix {
clear:both; /* both, left o right */
}
Posizionamento assoluto e relativo
Fino ad ora abbiamo visto che gli elementi seguono
sempre il flusso della pagina. Scrivendo questo codice:
<h1>Titolo</h1>
<p>Testo</p>
<img src="img.png" />
selettore:pseudo-classe { proprietà };
Altre pseudo-classi:
– :focus
– :first-child
https://fonts.google.com/
div {
font-family: myFont;
}
• font-size: 100%;
// Corrisponde alla dimensione di 16px
• font-size: 1em;
// Corrisponde alla dimensione di 16px
• Font-size: 12pt;
// Corrisponde alla dimensione di 16px
CSS sizing – font-size
Cosa cambia se utilizzo le unità di misura % ed em al posto
di px?
Nelle impostazioni del browser è possibile specificare la
dimensione del carattere (solitamente: molto piccola,
piccola, media, grande, molto grande), ma questa
impostazione si applica solo ai caratteri in cui il font-size è
stato specificato in % ed em.
N.B. Non stiamo parlando della possibilità di effettuare il
zoom della pagina, ma di queste impostazioni:
CSS sizing – font-size (esercizio)
<!DOCTYPE html>
<html>
<head>
<style>
.FontPX{ font-size:16px; }
.FontPercentuale{ font-size:100%; }
.FontEM{ font-size:1em; }
.FontPT{ font-size:12pt; }
</style>
</head>
<body>
<p class="FontPX">Dimensione font specificata in px</p>
<p class="FontPercentuale">Dimensione font specificata in %</p>
<p class="FontEM">Dimensione font specificata in em</p>
<p class="FontPT">Dimensione font specificata in pt</p>
</body>
CSS sizing – font-size
Un’altra caratteristica dell’uso delle unità di
misura % ed em è che le impostazioni
precedenti vengono «ereditate», ciò significa
che se impostiamo il font-size di un testo a 2em
(32px) e poi impostiamo il font su body a 2em, la
dimensione del font del testo sarà
complessivamente di 4em. Osserviamo questo
comportamento nel prossimo esercizio.
CSS sizing – font-size (esercizio)
<!DOCTYPE html>
<html>
<head>
<style>
body{ font-size: 2em; }
.FontPX{ font-size:16px; }
.FontPercentuale{ font-size:100%; }
.FontEM{ font-size:1em; }
.FontPT{ font-size:12pt; }
</style>
</head>
<body>
<p class="FontPX">Dimensione font specificata in px</p>
<p class="FontPercentuale">Dimensione font specificata in %</p>
<p class="FontEM">Dimensione font specificata in em</p>
<p class="FontPT">Dimensione font specificata in pt</p>
</body>
CSS sizing – font-size
Se vogliamo impedire il propagarsi delle
impostazioni precedenti (nell’esempio il valore
impostato su body si propagava su
.FontPercentuale e .FontEM) possiamo utilizzare
l’unità di misura rem (la r sta per root).
N.B. se utilizziamo l’unità di misura rem, la
dimensione del font viene comunque
influenzata dalle modifiche che effettuiamo sulle
impostazioni del browser.
Favicon
Molti siti visualizzano un’icona specifica nella
tab in cui sono stati aperti.