Riga 1: | Riga 1: | ||
= Colora il box = | = Colora il box = | ||
+ | |||
+ | Questo tutorial è composto di 3 tutorial che sviluppano lo stesso esercizio di programmazione (colorare un box quadrato) in tre modalità di livello (difficoltà e competenze) crescente: | ||
+ | |||
+ | *Colora il box - livello base | ||
+ | *Colora il box - livello intermedio | ||
+ | *Colora il box - livello avanzato | ||
+ | |||
+ | == Colora il box - livello base == | ||
Questo semplice tutorial combina conoscenze basiche di HTML, CSS e Javascript. | Questo semplice tutorial combina conoscenze basiche di HTML, CSS e Javascript. |
Versione delle 19:37, 21 set 2014
Colora il box
Questo tutorial è composto di 3 tutorial che sviluppano lo stesso esercizio di programmazione (colorare un box quadrato) in tre modalità di livello (difficoltà e competenze) crescente:
- Colora il box - livello base
- Colora il box - livello intermedio
- Colora il box - livello avanzato
Colora il box - livello base
Questo semplice tutorial combina conoscenze basiche di HTML, CSS e Javascript.
Il suo scopo è quello di colorare un quadrato inizialmente nero, scegliendo una combinazione dei tre colori base rosso, verde e blu (terna RGB: Red Green Blue) cioè scegliendo una terna RGB.
La scelta del valore per il rosso, verde o blu viene fatto inserendo un valore a scelta tra 0 e 255 per ciascuno dei tre colori.
Consiste nella creazione, in una pagina HTML, di un quadrato inizialmente nero insieme a tre box testuali in cui l'utente potrà inserire i tre valori scelti per la terna RGB.
In particolare il codice HTML è il seguente;
<body>
Rosso (0 - 255): <input type="Text" id="rosso" value=0 ><br/>
Verde (0 - 255): <input type="Text" id="verde" value=0 ><br/>
Blu (0 - 255): <input type="Text" id="blu" value=0 ><br/>
Codice esadecimale del colore risultante: <label id='codice'>#000000</label><br/>
<div style="height:100px; width:100px; background-color:#000000; border:1" id="colore"></div>
</body>
</html>
in cui si possono notare i tre elementi HTML <input type="text"> che conterranno i tre numeri (0-255) per i tre colori della terna RGB, cioè rosso, verde e blu e che inzialmente sono a 0 (value=0).
Dopo questi tre campi è presente una etichetta (tag <label>) che riporterà il codice esadecimale del colore risultante dalla combinazione dei tre colori base e cioè il codice della terna RGB.
Infine, è presente un tag <div> a cui sono state date le carattersitche di un quadrato nero grazie alle impostazione di stile: l'attributo style, infatti, ne specifica lo stile definendo un'altezza ed una base entrambe di 100px (height:100px; width:100px;), un colore di sfondo pari al nero (background-color:#000000;) ed un bordo sottile (border:1).
Il codice così riportato disegna una pagina del tipo:
ma questa pagina html non è ancora in grado di far cambiare il colore al quadrato nero, perché manca il codice Javascript necessario a impostare la terna RGB (i tre valori tra 0 e 255) inserita dall'utente nei tre box testuali indicati con Rosso (0 - 255), Verde (0 - 255), Blu (0 - 255).
Il codice Javascript, riportato di seguito, contiene due funzioni:
- calcolaCodice(): restituisce una stringa contenente il codice HTML del colore ottenuto dalla combinazione delle tre componenti RGB; infatti, trasforma le tre componenti scelte dall'utente (numeri decimali tra 0 e 255) in numeri esadecimali e li scrive in successione in una stringa aggiungendo all'inizio il carattere '#'. Si ottengono stringhe del tipo #000000 (nero), #FF0000 (rosso), #FFFFFF (bianco) etc
- colora(id): usa la calcolaCodice() per calcolare il codice di colore HTML e per colorare il quadrato di tale colore, cambiando le impostazioni di stile del quadrato dell'attributo background-color. Inoltre modifica l'etichetta <label> scrivendo il codice di colore risultante dalla combinazione RGB scelta.
function calcolaCodice(){
r=parseInt(document.getElementById('rosso').value);
g=parseInt(document.getElementById('verde').value);
b=parseInt(document.getElementById('blu').value);
return '#'+ ('0'+r.toString(16)).slice(-2)+('0'+g.toString(16)).slice(-2)+('0'+b.toString(16)).slice(-2);
}
function colora(id){
c=calcolaCodice();
div=document.getElementById(id);
div.style.backgroundColor=c;
document.getElementById('codice').innerHTML=c;
}
E quindi, di seguito, il codice della pagina completo
<head>
<script language="javascript">
function calcolaCodice(){
r=parseInt(document.getElementById('rosso').value);
g=parseInt(document.getElementById('verde').value);
b=parseInt(document.getElementById('blu').value);
return '#'+ ('0'+r.toString(16)).slice(-2)+('0'+g.toString(16)).slice(-2)+('0'+b.toString(16)).slice(-2);
}
function colora(id){
c=calcolaCodice();
div=document.getElementById(id);
div.style.backgroundColor=c;
document.getElementById('codice').innerHTML=c;
}
</script>
</head>
<body>
Rosso (0 - 255): <input type="Text" id="rosso" value=0 onblur="colora('quadrato')"><br/>
Verde (0 - 255): <input type="Text" id="verde" value=0 onblur="colora('quadrato')"><br/>
Blu (0 - 255): <input type="Text" id="blu" value=0 onblur="colora('quadrato')"><br/>
Codice esadecimale del colore risultante: <label id='codice'>#000000</label><br/>
<div style="height:100px; width:100px; background-color:#000000; border:1" id="quadrato"></div>
</body>
</html>
Notare la chiamata della funzione colora(id) nel codice HTML attraverso l'attributo onblur che rappresenta l'evento di perdita del 'fuoco' dell'oggetto in considerazione: in altre parole, tutte le volte che l'utente uscirà da una dei tre box testuali (che abbia o meno scritto un valore) verrà reimpostato il colore del quadrato secondo la scelta fatta. Notare anche che la funzione colora(id) è chiamata passando l'id del <div> che disegna il quadrato e cioè colora('quadrato').