Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
un computer portatile un telefono un tablet o perfino una piccola televisione = questi dispositivi sono definiti clients che
possono essere molto differenti = grandi o piccoli con il touch screen o con la tastiera.
Tag = un element che inizia con una parentesi angolata with e finisce con un’altra parentesi angolata <>
Il primo tag di ogni pagina è sempre <html>, sotto DOCTYPE. Alla fine c’è praticamente lo stesso tag ad eccezione della
barra </html>
Il tag <html> deve contenere tutti i tag che costituiscono la pagina e perciò il tag di fine </html> si trova alla fine. Molti dei
tag <html> si trovano in coppia (<html> </html> ma non tutti.
Sotto il tag <html> si trova sempre un tag <head> che contiene i tag attraverso cui il browser riesce a creare la pagina ma
NON contiene nulla di ciò che l’utente vede effettivamente
Segue il tag <meta charset =”utf-8”> che fornisce al browser maggiori info su come creare la pagina.
Per es. Se stai usando caratteri comuni come quelli dell’inglese e NON caratteri +difficili come quelli dell’arabo allora il tag
meta dovrebbe essere = utf- 8.
Poi c’è il tag <title> New Webpage </title> che il browser utilizza per il titolo della pagina mostrato nella barra in alto di
una pag web nei bookmack e nei risultati di ricerca
Il tag <body> </body> che contiene tutto il corpo del testo, dove avverrà ogni cosa
In realtà abiamo 6 tag che possiamo utilizzare per I titoli <h1>,<h2>,<h3>,<h4>,<h5>,<h6></h6>. Il tag <h1> serve per il
titolo +importante della pagina, il tag<h6></h6> per quello meno importante
Per aggiungere i titoli per altre sezioni usiamo il tag<h2></h2>, visto che si tratta di sezioni meno importanti
Pubblico di alieni che non hanno mai visto un coniglio, forniamo una descrizione dell’animale contenuta all’interno di un
intero paragrafo che segnaliamo con il tag <p> </p>
<p>Rabbits are little creatures with long ears and puffy tails, and they move their nose up and down in an adorable way.
They eat the most orange vegetables in our world, and they reproduce more than any human ever has.</p>
<h2>Songs</h2>
In html il browser ignora gli a capo e gli spazi e se voglio che ne crei dobbiamo segnalarlo esplicitamente tramite il tag
<br> cioè “break”. Nel tag <br> non c’è un tag conclusivo perché una pausa non ha un contenuto quindi non ha bisogno di
un riferimento che la concluda ma c’è solo bisogno di un tag di inizio
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>All about rabbits!!</title>
</head>
<body>
<h1>All about rabbits!</h1>
<h2>Basic info</h2>
<p>Rabbits are little creatures with long ears and puffy tails, and they move their nose up and down in an adorable way.
They eat the most orange vegetables in our world, and they reproduce more than any human ever has.</p>
<h2>Songs</h2>
<p>Rabbits are little creatures with long ears and puffy tails, and they move their nose up and down in an adorable way.
They eat the most orange vegetables in <em>our</em> world, and they reproduce more than any human ever has.</p>
Per segnalare il contenuto più importante usiamo il grassetto che viene indicato dal tag <strong> </strong> e il browser
vedrà il tag e renderà il testo +spesso in modo che sia +evidente
<p>Rabbits are little creatures with long ears and puffy tails, and they move their nose up and down in an adorable way.
They eat the most orange vegetables in <em>our</em> world, and <strong>they reproduce more than any human ever
has</strong>.</p>
<p>Rabbits are little creatures with long ears and puffy tails, and they move their nose up and down in an adorable way.
They eat the most orange vegetables in <em>our</em> world, and <strong>they reproduce more than any human
<em>ever</em> has</strong>.</p>
HTML: LISTE
Html ci fornisce dei tag per creare liste. Per creare una lista con i punti, dobbiamo iniziare con il tag <ul> </ul>
Ul = unordered listed (senza ordine), significa che il browser non numererà gli elementi della lista, ma aggiungerà solo
alcuni ordinatori
- = ordinatore
Per segnalare gli ordinatori <li> </li> (listed item = elementi della lista)
Ogni volta che ogliamo aggiungere un nuovo elemento dobbamo aggiungere sotto il tag <ul> un nuovo tag <li>.
Ogni tag <ul> dovrebbe avere almeno un tag <li> sotto di sé perché non esistono liste prive di elementi.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML: Lists</title>
</head>
<body>
<ul>
<li>They're furry!</li>
<li>Great listeners!</li>
<li>Eat all your leftover carrots!</li>
</ul>
Per creare delle liste numerate /classifiche, useremo il tag <ol> </ol> al posto del tag <ul></ul>
Ol = lista ordinata, in quanto il tag comunica al browser di numerare automaticamente ciascun elemento. Per aggiungere
elementi all’interno della lista usiamo sempre il tag <li> </li> .
Il brower si occupa della numerazione al posto nostro, quindi se cambiamo l’ordine, cancellliamo elementi o ne
aggiungiamo di nuovi il browser aggiorna sempre il numero correttamente
<ol>
<li>Bugs bunny</li>
<li>Easter Bunny</li>
<li>Thumper</li>
</ol>
HTML: IMMAGINI
Per inserire un’immagine all’interno di una pagina web, usiamo il tag <img ….> ma da solo non indica nulla al browser
perché dobbiamo specificare l’url dell’immagine.
Url ciò che compare nella parte superiore del browser, nella barra degli indirizzi; di fatto è proprio un indirizzo, è un
modo per trovare determinate risorse nel web.
Questo significa che possiamo inserire un’immagine solo se si trova da qualche parte in internet, non possiamo inserire
immagini che si trovano solo nel nostro computer.
Perché appaia c’è bisogno di aggiungere un attributo (info aggiuntiva rispetto ad un tag) al tag <img> . Per comunicare
l’url al browser usiamo un attributo dal nome source (fonte), poi inseriamo un imbolo di uguale per indicare al browser il
valore dell’atttributo, apriamo le virgolette che il programma chiuderà automaticamente, in modo che il valore
dell’attributo sia sempre compreso tra le virgolette aperte e quelle chiuse. Attraverso la sigla htttp sappiamo che il tag fa
riferimento ad una qualche immagine caricata da qualche parte in rete
<img src = “url …..”
Ma se il browser non riuscisse a scaricare l’immagine noi non sapremmo mai che immagine ci sarebbe dovuta essere l’ì ??
niente paura le immagini possiedono anche l’attributo alt che usiamo per comunicare al browser il testo alternativo per
un immagine. Lasciamo uno spazio dopo le virgolette chiuse e digitiamo alt seguito dal simbolo dell’uguale e dalle
virgolette, il testo tra virgolette sarà un’utile descrizione dell’immagine. Ciò aiuta anche coloro che navigano nelle pagine
web ma che non le possono vedere ad es i ciechi che possono usare un lettore dello schermo che legge letteralmente le
pagine descrivendo loro ogni tag che incontra. Quando legge un’immagine il lettore andrà a rilevare il contenuto di alt, in
quanto una persona non ha modo di vedere le immagini perciò dovremmo sempre utilizzare i tag alternativi affinchè
chiunque possa rapportarsi con il nostro sito.
È meglio indicare O la profondità O l’altezza MA NON entrambe. Meglio lasciare che sia il browser a decidere quale è
l’altra dimensione
Lo stile/font è importante osservare come le pagine web siano diverse tra loro, se vogliamo farlo anche noi allora
dobbiamo impare un nuovo linguaggio CSS
CSS =Cascading Style Sheets (fogli di stile) ed è un modo per definire gli stili che appliccheremo alle diverse
parti del nostro sito. Inseriamo CSS all’interno di html, ma non si tratta realmente di html. Dobbiamo imparare un
liguaggio complemetamente nuovo.
Per iniziare è neccessario aggiungere all’inizio della pagina il tag <style> </style> e quando il browser lo vedrà
penserà che tutto ciò che viene inserito all’interno del tag è CSS. Per capirlo al posto i hml userò CSS e al suo
interno useremo una regola di stile CSS, una regola di stile ha un selezionatore e comunica al browser quale è
la parte di una pagina web di cui va modificato lo stile e contiene anche delle dichiarazioni che comunicano al
browser come intervenire sullo stile di tale parte.
Se vogliamo cambiare lo stile di tutti i titoli h2 della nostra pagina digitiamo il selezionatore h2 seguito da
parentesi graffe, all’interno digitiamo le dichiarazioni che hanno proprietà e valori, per cambiare il colore del testo usiamo la
proprietà colore seguita dai due punti. Ora dobbiamo trovare un valore, dobbiamo comunicare al browser a quale colore
siamo interessati.
Se vogliamo poter scegliere qualsiasi colore esistente, dobbiamo usare uno spettro RGB
Sostituiamo dopo color: la voce rgb seguita da parentesi tonde e apparirà un selezionatore di colore, muoviamo il cursore
all’interno e selezioniamo un colore che vediamo aggiornarsi in tempo reale, fino a che non saremmo soddisfatti. All’interno
della parentesi rgb ci sono 3 numeri che cambiano e questi sono i componenti rosso, verde e blu che formano quel
colore. (verde?)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Basics</title>
<style>
h2 {
color: rgb(0, 232, 15);
}
Il selezionatore h2, seleziona tutti i titoli della pagina, quindi possiamo cambiare tutti i titoli visto che vogliamo che tutti siano
verdi è cioè compatibile con tutti i tiitoli h2 che trova nella pagina
Regola di stile CSS se vogliamo colorare il nostro sfondo di azzurro dobbiamo ricordare che tutto ciò che vediamo in una
pagina è contenuto nel tag <body></body>, se vogliamo intervenire sullo stile dell’intera pagina, dobbiamo usare un
selezionatore che selezioni quel tag.
Scriveremo Body + parentesi graffe + due punti + rgb + parentesi tonde apparirà il nostro selezionatore di colori e
potremmo selezionare l’azzurro
body {
Come hai appena imparato, utilizziamo le regole CSS per selezionare gli elementi in una pagina web in modo
che possiamo poi cambiare lo stile a quegli elementi.
Per dire alla nostra regola CSS a quali elementi HTML cambiare lo stile usiamo i selettori. Ci sono moltissimi
tipi di selettori che scopriremo più avanti, ma qui vogliamo ripassare quello che abbiamo visto nella spiegazione
interattiva: il selettore di elemento.
Il selettore di elemento seleziona gli elementi HTML in base al nome del tag. Ciascun elemento HTML—
<h1>, <p>, <li>, <body>—e qualunque altro elemento HTML può essere selezionato con CSS usando il nome
del tag senza le parentesi ad angolo (< e >). Per esempio, puoi selezionare tutti i tag <p> della tua pagina web
usando il selettore di elemento p. Ecco una regola CSS che cambia il colore di ogni paragrafo della pagina web:
Se stai cercando di selezionare tutti gli <h2> sulla pagina, devi togliere le parentesi angolari per formare il
selettore h2.
Modo perché il browser applichi lo stesso stile non a tutti i paragrafi ma solo ad alcuni selezione per iidentità.
Possiamo cioè fornire a un tag nella nostra pagina un’identità unica e comunicare poi a CSS che intendiamo
appliccare un determinato stile all’elemento che possiede questa identità e a nessun altro. Per farlo il primo
passo è modificare l’html, in modo da aggiungere un attributo id ai tag che vogliamo selezionare.
Per aggiungere un attributo o identità, posizioniamo il cursore sultag <p> di apertura, lasciamo uno spazio e
digitiamo id seguto dal simbolo di = e dalle “”. Completiamo l’attributo di identità con un valore, dovremmo dargli
un’identità descrittiva e unica, nient’altro nella pagina dovrebbe avere la stessa identità.
Non è possibile alsciare spazi all’interno di questo valore, quindi se si stratta di una sequenza di parole, bisogna
sempre usare trattini (-) o underscore (_)
Per identificare il paragrafo in modo univoco dobbiamo aggiungere una regola CSS per stabilirlo
La prima parte della regola CSS è il selezionatore ovvero la parte che dice al browser cosa selezionare.
Nelle precedenti regole usavamo selezionatori come h2 e p, per selezionare tutti gli h2 e i p nella pagina ora
per creare un selezionatore che selezioni solo determinati elementi con una specifica identità dobbiamo
scriverlo iniziando con # questo comunica al browser che qualsiasi cosa segua è un’identità.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS: Selecting by id</title>
<style>
h2 {
color: rgb(0, 232, 15);
}
p{
color: rgb(191, 0, 255);
}
#rabbits-song {
background-color: yellow;
} colore dello sfondo
</style>
</head>
<body>
Solo il paragrafo della canzone ha lo sfondo giallo, mentre il paragrafo precedente è rimasto uguale a prima
1)modifichiamo html per aggiungere attributo di identità, posizioniamo il cursore sul tag di inizio, lasciamo uno
spazio, digitiamo id seguito dal simbolo = e poi scriviamo l’idenità unica e descrittiva. Ad esempio:
<body>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS: Selecting by id</title>
<style>
h2 {
color: rgb(0, 232, 15);
}
p{
color: rgb(191, 0, 255);
}
#rabbits-song {
background-color: yellow;
}
#rabbits-info-heading {
background-color: purple;
}
</style>
</head>
<body>
<p>Rabbits are little creatures with long ears and puffy tails, and they move their nose up and down in an
adorable way. They eat the most orange vegetables in <em>our</em> world, and <strong>they reproduce more
than any human <em>ever</em> has</strong>.</p>
<h2>Songs</h2>
<ul>
<li>They're furry!</li>
<li>Great listeners!</li>
<li>Eat all your leftover carrots!</li>
</ul>
<ol>
<li>Bugs bunny</li>
<li>Easter Bunny</li>
<li>Thumper</li>
</ol>
</body>
</html>
Le identità sono sensibili alle maiuscole, quindi quando digitiamo e quando scegliamo la dimensione delle lettere
dobbiamo scriverle sempre nello stesso modo.
Le identità devono essere uniche, se nella pagina abbiamo 2 tag con la stessa identità il browser potrebbe dare
ad entrambi lo stesso stile e potrebbe darlo anche ad una delle due.
<p class="song-lyrics">
Anche tutti gli altri paragrafi della canzone dovranno avere questo nome di classe
Scendiamo nella pagina e aggiungiamo l’attributo ad ognuna delle classi del paragrafo.
Ora aggiungiamo la regola CSS, ritorniamo al tag <style> e cancelliamo il selezionatore id che avevamo in
precedenza.
Digitiamo un punto dopo del quale metteremo il nome della classe (in qst caso song lyrics) poi tra parentesi
graffe mettiamo la proprietà e il valore
#rabbits-info-heading {
background-color: purple;
}
</style>
Se voglio che tutti i paragrafi della canzone abbiano uno sfondo giallo
Se scrivessimo song con la S maiuscola non si colorerebbero tutti i paragrafi di giallo, anche i nomi delle classi
sono sensibili alle maiuscole. Fa differenza se una lettera è maiuscola o minuscola come per le identità
Se usassimo un # al posto del punto, ugualmente non funzionerebbe, perché il browser penserebbe che song-
lyrics sia un’identità e non trovando alcun riferimento che abbia come attributo di identità quello di testo-
canzone, ci sarebbe la riscerca
Anche se inserissimo degli spazi tra i nomi delle classi non avremmo gli sfondi colorati in qanto nelle classi non
ci possono essere degli spazi bianchi
Gli spazi hanno un significato ben preciso in CSS
Quando vogliamo aggiungere una classe, pensiamo ad un nome per la classe. Lo aggiungiamo ai nostri attributi
di classe nell’html, e poi scriviamo una regola di stile iniziando con un punto e poi il nome della classe
LINK HTML:
html: è l’acronimo di HyperText Markup Language
un linguaggio markup è un modo di usare i tag per intervenire su un contenuto
ipertesto è un termine inventato negli anni 60’ (prima ancora che esistesse internet) per indicare un testo
collegato ad un altro testo che l’utente può raggiungere immediatamente
Tim Berners-Lee inventò l’html e altri elementi di internet come l’http con l’idea di collegare fra loro testi dislocati
in ogni parte del mondo
Colleghiamo tra loro diverse pagine del web in html con un HyperLink, ossia un collegamento intertestuale, che
comunemente ormai chiamiamo anche solo link.
Il testo del link andrà inserito tra i due tag <a></a> (di inizio e fine)
Es. <a>Read more about the history of HTML</a>
Il testo ha l’aspetto di un link pur non rimandando da nessuna parte, perché dobbiamo aggiungere l’indirizzo.
Vogliamo che l’indirizzo compaia nella pagina, ma abbiamo bisogno che il browser lo conosca, quindi lo
inseriamo come attributo del tag <a> <a href = “http://home.web.cern.ch/topics/ birth-web">Read more
about the history of HTML</a>
(href = iper-referenza)
https = la h sta per iper
questo url specifica tutto ciò che il browser ha bisogno di sapere per trovare la pagina web:
- Il protocollo usato per trovarla
- Il dominio in cui si trova
- Il percorso tracciato nel server
Dal momento che specifica ogni dettaglio, possiamo anche chiamare questo url un “url assoluta”
In alcune pagine potremmo trovare url che inizia unicamente con una barra questo comunica al browser di
rimanere nel dominio corrente e di cercare in tale dominio un percorso diverso. In questo caso, si tratta di un
url relativa
Noi dobbiamo attenerci sempre agli url assoluti
Possiamo anche comunicare al browser dove aprire la pagina, se nella finestra già aperta o in una nuova.
Per dire al browser di aprire il link in una nuova finestra aggiungeremo un altro attributo: target
Seguito dal simbolo di uguale e da un trattino basso
Es. <a target = “_blank” href="http://home.web.cern.ch/topics/birth-web"> Read more about the history of
HTML</a>
Ogni link che creiamo avrà questo avviso e si aprirà in una nuova finestra
È possibile eliminare questo attributo target, in alternativa possiamo lasciarlo
- Se un link collega ad un’altra pagina nello stesso dominio, si dovrebbe aprire nella stessa finestra
- Se un link collega ad una pagina in un altro dominio, si dovrebbe aprire in una nuova finestra
Sarebbe possibile anche rendere l’intera pagina web un collegamento tutto blu e completamente sottolineato
Href dobbiamo comunicare al browser a che cosa rimandare, così da identificare quel punto della pagina in
modo univoco traminte l’aggiunta dell’attributo di identità id al tag
TABELLE HTML:
per creare una tabella in html ci servono molti tag. Il primo tag è
<table> </table>
Abbiamo poi bisogno di un’intestazione che contenga le etichette di ciascuna colonna <thead></thead>,
tipicamente al suo interno vogliamo una singola riga di celle.
Per inserire una riga all’interno della tabella usiamo il tag <tr></tr> e all’interno di quella riga vogliamo delle
singole celle e per ogni singola cella scriviamo <th></th> (all’interno di th di inizio e th di fine scriviamo l’etichetta
della prima colonna che sarà il contenuto +importante della riga e il suo identificatore)
<table>
<thead>
<tr>
<th>Pet name</th>
<th>Species</th>
<th>Color</th>
</tr>
Iniziamo la riga con i dati con il tag <tbody> sotto a quello </thead> e poi di nuovo vogliamo una riga e usiamo
dunque il tag <tr> </tr> ma ora al posto del tag <th> usiamo il tag <td> che sta per tabula data
<tbody>
<tr>
<td>Black & white</td>
<td>rabbit</td>
<td>black and white</td>
Una volta create una riga la seleziono e la copio con I tasti della tastiera control C e la incollo con control v, una
volta copiata basterà cambiare i valori
<tr>
<td>Daemon</td>
<td>cat</td>
<td>black</td>
</tr>
<tr>
<td>Angel</td>
<td>cat</td>
<td>orange</td>
</tr>
</tbody>
</table>
</body>
</html>
Possiamo aggiungere facilmente altre colonne aggiungendo un altro tag <th></th> e poi <td></td> in oguna
delle righe se vogliamo condividere maggiori informazioni
COMMENTI HTML:
a volte nelle nostre pagine vogliamo inserire informazioni per altre persone che il browser ignori. Per farlo
apriamo una parentesi angolare seguita da un punto esclamativo e due trattini un testo di qualche tipo, due
trattini e una parentesi angolare chiusa
<! - - Hello humans! - ->
Questo è un commento ed è molto comune in qualsiasi tipo di linguaggio informatico, perché spesso vogliamo
fare cose che sono solo per esseri umani.
Ma i programmi non sono consultati solo dai computer ma anche da altri esseri umani
Possiamo usare i commenti per far sapere alle persone la fonte dei contenuti anche nel caso in cui volessimo
aggiornarla
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML comments</title>
</head>
<body>
<ul>
<li>They're furry!</li>
<li>Great listeners!</li>
<li>Eat all your leftover carrots!</li>
</ul>
<ol>
<li>Bugs bunny</li>
<li>Easter Bunny</li>
<li>Thumper</li>
</ol>
<h2>Basic info</h2>
<!-- This paragraph is based on Pamela's personal opinion -->
<p>Rabbits are little creatures with long ears and puffy tails, and they move their nose up and down in an adorable way.
They eat the most orange vegetables in <em>our</em> world, and <strong>they reproduce more than any human
<em>ever</em> has</strong>.</p>
questo aiuta le persone a sapere da dove provengono i contenuti che ho inserito nella pagina e potremmo poi
aggiungere un link nei commenti
i commenti sono tutti verdi questo succede perché stiamo utilizzando un editor di codici con evidenziatura
della sintassi che utilizza i colori per aiutarci a riconoscere le varie componenti
convenzionalmente i commenti sono quasi sempre colorati di verde e potremmo usarli anche per commentare
una parte del nostro html
se vogliamo nascondere qlcs nella nostra pagina basta circondarlo con un commento, il browser non vede più
quell’html perché i browser ignorano totalmente i commenti, così che
quella parte se ne è completamente andata dalla pagina
ma se valuto che quella parte mi piaccia posso estrarla dal commento semplicemente rimuovendo ad entrambe
le estremità il commento
<h2>Songs</h2>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS font-family property</title>
<style>
h2 {
color: rgb(0, 232, 15);
}
#rabbits-info-heading {
background-color: purple;
}
p{
color: rgb(191, 0, 255);
font-family: sans-serif;
}
h2 {
color: rgb(0, 232, 15);
}
#rabbits-info-heading {
background-color: purple;
}
p{
color: rgb(191, 0, 255);
font-family: serif;
}
Un font Sans-serif, è un font privo di quella sorta di piedi sulle lettere, per cui le lettere sembrano +semplici.
Dicendo al browser di utilizzare un font sans-serif, il sans-serif usato sarà quello di default, solitamente Arial o
Elvetica ma non è questo il punto importante
Il browser sceglierà il font di default per il computer dell’utente NON di quello dell’autore della pagina web
È probabile quindi che stiamo vedendo 2 differenti font sans-serif, se il tuo computer è diverso dal mio.
Per essere sicuri che chiunque guardi la mia pagina web, veda esattamente lo stesso font che vedo io devo
specificare il nome preciso del font, come per esempio “Helvetica” se sia il mio pc che il tuo hanno questo font.
p{
color: rgb(191, 0, 255);
font-family: "Helvetica";
}
MA non tutti i computer hanno gli stessi font e in questo caso il computer ignorerà completamente la proprietà.
Fortunatamente i CSS permettono di specificare una font-family alternativa, un back-up nel caso in cui un
particolare font non esista sul computer. aggiungendo semplicemente una , dopo “Helvetica” e riportando
sans-serif; se il computer proverà a cercare “Helvetica” e non riuscirà a trovarlo, userà semplicemente il suo
font sans-serif di default
p{
color: rgb(191, 0, 255);
font-family: "Helvetica", sans-serif;
}
In generale se si specifica il nome di un font come “Helvetica” bisognerebbe sempre specificare anche una
famiglia di back-up.
Accanto a serif e a sans-serif ci sono altri due nomi generici di font-family che si possono usare:
1) Font family: cursive per far si che il tipo di testo appaia come scritto a mano
p{
color: rgb(191, 0, 255);
font-family: "Helvetica", sans-serif;
}
.song-lyrics {
background-color: yellow;
font-family: cursive;
}
2) Font family: fantasy Se si vuole far si che il testo appaia più decorato
.song-lyrics {
background-color: yellow;
font-family: fantasy;
}
Si usa il font family: monospace, se si vuole che il testo appaia come se fosse stato scritto con la macchina da
scrivere. Monospace, che avendo una larghezza fissa fa si che ogni lettera occupi la medesima porzione di
spazio
.song-lyrics {
background-color: yellow;
font-family: monospace;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS font-family property</title>
<style>
h2 {
color: rgb(0, 232, 15);
}
#rabbits-info-heading {
background-color: purple;
}
p{
color: rgb(191, 0, 255);
font-family: "Helvetica", sans-serif;
}
.song-lyrics {
background-color: yellow;
font-family: monospace;
}
</style>
</head>
<body>
<p>Rabbits are little creatures with long ears and puffy tails, and they move their nose up and down in an
adorable way. They eat the most orange vegetables in <em>our</em> world, and <strong>they reproduce more
than any human <em>ever</em> has</strong>.</p>
<h2>Songs</h2>
<ul>
<li>They're furry!</li>
<li>Great listeners!</li>
<li>Eat all your leftover carrots!</li>
</ul>
<ol>
<li>Bugs bunny</li>
<li>Easter Bunny</li>
<li>Thumper</li>
</ol>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS font-size property</title>
<style>
body {
font-size: 11px ;
}
Possiamo specificare anche per h2 una misura in pixel come per il corpo del testo e anche così facendo
funzionerà allo stesso modo
Ci sono moltissime altre unità da utilizzare oltre a em e pixel che sono quelle più in voga
!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS font-size property</title>
<style>
body {font-size: 12px;
}
h2 {color: rgb(0, 232, 15);
font-size: 1.5em;
}
#rabbits-info-heading {
background-color: purple;
}
p{
color: rgb(191, 0, 255);
font-family: "Helvetica", sans-serif;
}
.song-lyrics {
background-color: yellow;
font-family: monospace;
}
</style>
</head>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS font styles and shorthand</title>
<style>
body {
font-size: 12px;
}
h2 {
color: rgb(0, 232, 15);
font-size: 1.5em;
}
#rabbits-info-heading {
background-color: purple;
}
p{
color: rgb(191, 0, 255);
font-family: "Helvetica", sans-serif;
}
#rabbits-info {
color: purple;
font-weight: bold;
}
Se vogliamo che questi testi siano in corsivo, possiamo racchiuderli in un tag em, poiché di default il browser
associa ad em lo stile corsivo ma così facendo è come se stessimo abusando del tag em. L’intento NON è
quello di enfatizzare l’intera canzone ma di metterla in corsivo unicamente perché crediamo che sia più bella da
vedere quindi bisognerebbe usare un’ulteriore proprietà di CSS ovvero il font-style
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS font styles and shorthand</title>
<style>
body {
font-size: 12px;
}
h2 {
color: rgb(0, 232, 15);
font-size: 1.5em;
}
#rabbits-info-heading {
background-color: purple;
}
p{
color: rgb(191, 0, 255);
font-family: "Helvetica", sans-serif;
}
#rabbits-info {
color: purple;
font-weight: bold;
}
.song-lyrics {
background-color: yellow;
font-family: fantasy;
font-size: 13px;
font-style: italic;
font: italic 13px fantasy;
}
</style>
</head>
<body>
Per riassumere le proprietà dei font (font-family, font-size, font-style) in una proprietà singola potremmo scrivere
font: italic 13px fantasy;
a questo punto possiamo cancellare le tre proprietà che avevamo scritto
.song-lyrics {
background-color: yellow;
font: italic 13px fantasy;
}
E ogni cosa sembrerà uguale, questo tipo di proprietà viene chiamata short hand perché semplifica molto la
dicitura.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>More CSS text properties</title>
<style>
body {
font-size: 12px;
}
h2 {
color: rgb(0, 232, 15);
font-size: 1.5em;
}
#rabbits-info-heading {
background-color: purple;
}
p{
color: rgb(191, 0, 255);
font-family: "Helvetica", sans-serif;
}
#rabbits-info {
color: purple;
font-weight: bold;
}
.song-lyrics {
background-color: yellow;
font-family: fantasy;
font-size: 13px;
font-style: italic;
line-height: 1.5em;
}
</style>
</head>
<body>
Per allineare al centro il testo della canzone uso la proprietà text-align specificando center
.song-lyrics {
background-color: yellow;
font-family: fantasy;
font-size: 13px;
font-style: italic;
line-height: 1.5em;
text-align: center;
}
</style>
</head>
<body>
p{
color: rgb(191, 0, 255);
font-family: "Helvetica", sans-serif;
}
#rabbits-info {
color: purple;
font-weight: bold;
text-decoration: underline;
}
.song-lyrics {
background-color: yellow;
font-family: fantasy;
font-size: 13px;
font-style: italic;
line-height: 1.5em;
text-align: center;
}
a{
text-decoration: none;
}
</style>
</head>
Aggiunengo la regola text-decoration: none la sottolineatura scompare
Se i link non sono sottolineati come faccio a capire se si tratti davvero di link?
Se rimuoviamo la sottolineatura dobbiamo assicurarci che i link siano riconoscibili in qualche altro modo
Ci sono centinaia di proprietà CSS e i browser ne aggiungono di nuove ogni anno
EREDITARIETà CSS
Alcune proprietà dei CSS sono ereditabili ovvero si trasmettono a tutti i tag figli ad esse sottostanti, per esempio
la font-family è una proprietà ereditata e solo inserendola nel tag body verrà scelta automaticamente per i tag
figli come intestazione e paragrafi
Questo meccanismo si blocca solo quando si introduce un'altra regola come font-family:cursive che modifica la
font family di tutti i titoli in cursive
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS inheritance</title>
<style>
body {
font-family: sans-serif;
color: rgb(211, 122, 255);
}
h2 {
font-family: cursive;
color: rgb(0, 232, 15);
}
Un’altra proprietà che si eredita è il colore, se si stabilisce il colore per un corpo del testo, questa regola verrà
appliccata per tutti i tag contenuti nel tag <body></body> fino a quando non si inserirà un’altra regola
equivalente.
Come quella di color: rgb(0, 232, 15); che stabilisce che tutti gli h2 siano verdi
Altre proprietà che si ereditano sono i font-weight, font-size, font-style, line-height e text-align
Molte delle proprietà che abbiamo visto sono ereditabili perché hanno a che fare con lo stile del testo
Ci sono però anche proprietà non ereditabili
Se non si è sicuri che una proprietà sia ereditabile o meno, ci sono 2 strade:
- Inserirla nel tag body
- Cercarla in internet
p{
color: rgb(191, 0, 255);
font-family: "Helvetica", sans-serif;
}
#rabbits-info {
color: purple;
font-weight: bold;
text-decoration: underline;
}
.song-lyrics {
background-color: yellow;
font-family: fantasy;
font-size: 13px;
font-style: italic;
line-height: 1.5em;
text-align: center;
}
Talvolta ciò che vogliamo spostare all’interno di una pagina è un gruppo di elementi come la selezione di un
testo o un titolo con alcuni paragrafi
Per spostarli insieme dobbiamo introdurre 2 nuovi tag html che vengono definiti elementi raggruppati, utili solo
se combinati con i CSS; da soli essi non hanno alcun significato per il browser
Il primo tag, è il tag span ed è usato per raggruppare una selezione del testo
Se vogliamo colorare di rosso la parola Love, senza colorare anche il resto del titolo, mettiamo il cursore prima
di love e digitiamo il tag <span> e poi spostiamo il cursore dopo la parola e digitiamo il tag di chiusura </span>
<body>
Volendo ora raggruppare alcuni elementi sotto il tag span potremmo inserire una regola per colorare di rosso
tutti gli span della pagina ma non è detto che vogliamo che siano tutti rossi.
Diamo allo span la classe di lovey-dovey e aggiungiamo una regola solo per l’elemento che ha la classe lovey-
dovey
<!doctype html>
<html>
<head>
<title>CSS grouping elements</title>
<meta charset="utf-8">
<style>
.lovey-dovey {
color: red;
}
</style>
</head>
<body>
Dobbiamo posizione
Ora dobbiamo occupparci del suo stile, per formattarlo gli darò un id=”official-info” aggiungendo poi una regola
per questo id **
<div id="official-info"><h3>Official Info on Cats</h3>
<p><img src="https://www.kasandbox.org/programming-images/animals/cat.png" width="100"> The cat….
**<!doctype html>
<html>
<head>
<title>CSS grouping elements</title>
<meta charset="utf-8">
<style>
.lovey-dovey {
color: red;
}
#official-info {
background: rgb(230, 230, 230);
}
=regola di id
Div è diventato un riquadro grigio con al suo interno tutti gli elementi e sarebbe diverso se noi dessimo
separatamente a ciascun paragrafo uno sfondo grigio. In questo modo infatti ci sarebbe uno spazio tra i riquadri
non colorati di grigio
Il div permette anche di creare un riquadro che inglobi tutti gli elementi, in questo caso si tratta di un div per
elementi raggruppati
Possiamo pensare
- al tag span come ad un tag per raggruppare un testo
- al tag div come un tag utile al raggruppamento di elementi. Ma c’è un modo ulteriore per distinguerli, nel mondo
di CSS ci sono due tipi di elementi inline e blocked.
- Un elemento inline non comporta la creazione di una nuova linea gli elementi rimaranno comunque nella
stessa linea come succede per image (testo ed immagine del gatto sono sulla stessa linea)
- Un elemento blocked è seguito da una nuova linea, come accade per molti tags html
I titoli, i paragrafi, la lista il browser inserisce nuove righe dopo tutti questi senza che io debba inserire il tag
<br>.
Ciò succede perché uno span crea un elemento inline mentre un div crea un elemento blocked. Questo significa
che se aggiungo un div e non aggiungo nessun’altro stile il browser renderà blocked questa parte della pagina
come quella parte di testo appena racchiusa in un div che ora ha nuove linee prima e dopo
Usiamo la larghezza in percentuale e diciamo che il div occupperà sempre il 70% della larghezza disponibile
#official-info {
background: rgb(230, 230, 230);
width: 70px;
}
</style>
</head>
<body>
Ora il testo è ristretto dentro ad un riquadro più piccolo e il div è diventato più alto
Possiamo anche restringere l’altezza del riquadro con la proprietà dell’altezza height:180px;
#official-info {
background: rgb(230, 230, 230);
width: 70%;
height: 180px;
}
</style>
</head>
<body>
#official-info {
background: rgb(230, 230, 230);
width: 70%;
height: 180px;
overflow: visible;
}
</style>
#official-info {
background: rgb(230, 230, 230);
width: 70%;
height: 180px;
overflow: hidden;
}
</style>
#official-info {
background: rgb(230, 230, 230);
width: 70%;
height: 180px;
overflow: auto;
}
</style>
Possiamo anche usare overflow: autofunzione con cui è possibile aggiungere barre di scorrimento se il
contenuto eccede il bordo. Ora posso scorrere all’interno del riquadro per vedere il testo.
Se vogliamo essere ancora più precisi, possiamo specificare differenti proprietà overflow per ogni direzione, ad
esempio
- se vogliamo che scorra con la barra di scorrimento nella direzione y su e giù overflow-y:auto
- se invece vogliamo tagliarlo nella direzione x overflow-x: hidden
#official-info {
background: rgb(230, 230, 230);
width: 70%;
height: 180px;
overflow-y: auto;
overflow-x: hidden;
}
Evita le barre di scorrimento dentro ad altre barre di scorrimento
Widht e heigh si possono usare per ogni tipo di elemento, ad esempio per le immagini
Ora che conosciamo CSS, possiamo usare le proprietà width e heigh invece degli attributi width e heigh
#official-info {
background: rgb(230, 230, 230);
width: 70%;
height: 180px;
overflow-y: auto;
overflow-x: hidden;
}
#cute-cat {
width: 120px;
}
</style>
</head>
<body>
Come per gli attributi anche in questo caso è preferibile specificare solo la larghezza o l’altezza e permettere al
browser di prevere il valore più adatto per l’altra dimensione
RIQUADRI CSS
Ogni elemento della mia onpage è considerato un riquadro dal browser indipendentemente dal fatto che lo
sembri o meno
Anche lo span è un riquadro, alcuni riquadri sono grandi, altri piccoli, altri inline, altri sono blocked come il div
ma sono considerati tutti riquadri
Per specificare un margine su ogni lato del riquadro official-info è possibile srivere margin15px;
<!doctype html>
<html>
<head>
<title>CSS box model</title>
<meta charset="utf-8">
<style>
.lovey-dovey {
color: red;
}
#official-info {
background: rgb(230, 230, 230);
width: 70%;
height: 180px;
overflow-y: auto;
overflow-x: hidden;
margin: 15px;
}
#official-info {
background: rgb(230, 230, 230);
width: 70%;
height: 180px;
overflow-y: auto;
overflow-x: hidden;
margin: 15px 0px 10px 6px;
}
Sopra 15px, a dx 0px, in basso 10px, a sx 6px
Oppure possiamo usare proprietà specifiche per ogni lato.
Per ottenere un po’ di spazio sulla dx e in basso attorno all’immagine del gatto, mentre per gli altri lati ci
accontentiamo del margine di default
#cute-cat {
width: 120px;
margin-right: 10px;
margin-bottom: 10px;
}
</style>
</head>
<body>
<body>
<div id="container">
<h1>All About Cats</h1>
Aggiungiamo una regola per div per dargli la larghezza di 400px e centrarlo sulla pagina
#cute-cat {
width: 120px;
margin-right: 10px;
margin-bottom: 10px;
}
#container {
width: 400px;
margin-left: 100px;
}
</style>
Potrei specificare di lasciare un margine di 100 px perché così a me sembra centrale ma potrebbe non esserlo
per il browser di un altro computer quindi noi dobbiamo poter dire “inserisci qualunque margine risulti
neccessario in modo che abbia uguale margine su entrambi i lati questo è esattamente ciò che fa
margin:auto ed è realmente molto comodo per centrare i div in una pagina
#container {
width: 400px;
margin: auto;
border: 1px solid rgb(145,0,0);
}
</style>
Ora che abbiamo centrato questo div potremmo aggiungere un bordo intorno, usando le proprietà dei bordi dei
CSS
Aggiungiamo un bordo rosso al div quindi digiriamo border e poi specifichiamo 3 aspetti del bordo: spessore,
stile, colore. Per un border sottile digitiamo 1px, per una linea spessa senza decorazioni digiteremo solid.
Come per i margini possiamo specificare il bordo: se vogliamo un border veramente sottile e viola sopra
aggiungeremo un’altra proprietà
#container {
width: 400px;
margin: auto;
border: 1px solid rgb(145, 0, 0);
border-top: 10px solid purple;
}
#official-info {
background: rgb(230, 230, 230);
width: 70%;
height: 180px;
overflow-y: auto;
overflow-x: hidden;
margin: 15px 0px 10px 6px;
border: 2px dashed rgb(161, 161, 161);
}
Ogni volta che aggiungo ai miei elementi un colore di sfondo e un bordo, quasi sempre è meglio aggiungere
anche un riempimento per creare un po’ di spazio
#container {
width: 400px;
margin: auto;
border: 1px solid rgb(145, 0, 0);
border-top: 10px solid purple;
padding: 15px;
}
15 px tutt’intorno al contenitore
#official-info {
background: rgb(230, 230, 230);
width: 70%;
height: 180px;
overflow-y: auto;
overflow-x: hidden;
margin: 15px 0px 10px 6px;
border: 2px dashed rgb(161, 161, 161);
padding: 6px;
}
POSIZIONE CSS
Come usare i CSS per muovere realmente le cose, oltre a posizionare gli elementi uno vicino all’altro saremo in
grado di spostarli uno sopra l’altro.
Inizialmente all’interno di una pagina le posizioni degli elementi sono quelle stabilite di default dal browser.
Queste posizioni si definiscono statiche o normali.
Gli elementi inline come le immagini sono posizionati da sx a dx
Gli elementi blocked come i paragrafi e gli headers sono posizionati dall’alto
Possiamo cambiare questa strategia di posizionamento usando le proprietà della posizione di CSS
Con l’immagine del paesaggio digitiamo la posizione e il valore relativo.
La strategia di posizionamento relativo implica il normale posizionamento dell’elemento e il successivo contro-
bilanciamento con un certo valore. Per comunicare al browser quale valore dobbiamo equilibrare dobbiamo
usare alcune combinazioni delle 4 nuove proprietà dei CSS
Top,bottom, left, right
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS position</title>
<style>
body {
font-family: fantasy;
color: rgb(199, 177, 14);
}
#landscape {
width: 250px;
position: relative;
top: 20px;
left: 10px;
}
</style>
</head>
<body>
Posizionamento assoluto posso usarlo per prendere un elemento completamente fuori dal normale ordine e
metterlo ovunque sullo schermo. Per fare questo cambierò relative ad absolute sul paesaggio e manterrò il top,
left. Ora l’immagine del paesaggio nasconde le altre e anche il titolo.
#landscape {
width: 250px;
position: absolute;
top: 20px;
left: 10px;
}
Aggiungiamo una regola per Winston e diamogli una position absoute e poi
#winston {
position: absolute;
top: 50px;
left: 50px;
}
#winston {
position: absolute;
top: 50px;
left: 50px;
}
#hopper {
position: absolute;
top:30px;
left: 80px;
}
</style>
</head>
<body>
Il mio obbiettivo e di mettere un hopper che balla di fronte a un winston ma ora winston è sopra Hopper. Per
ovviare a questo problema uso le proprietà CSS z-index che comunicano al browser l’ordine esatto in cui
posizionare gli elementi attribuendo loro differenti z-index
Al paesaggio attribuirò z-index: 1 e a Winston z-index: 2 e a Hopper z-index 3, ora Hopper balla davanti a
Winston
Tutto scorre insieme e il posizionamento assoluto è relativo alla parte alta della pagina web, quindi quando
scorri in giù la pagina le cose che sono a 10px di distanza dalla parte alta non appariranno più sullo schermo
perché stai procedendo dall’alto della pagina web
Un’altra opzione è il posizionamento fisso che fa si che le cose sembrino non muoversi per niente.
In khan academyUsiamo il posizionamento assoluto per i modelli che spuntano in mezzo alla pagina e usiamo
il posizionamento fisso per il riquadro di ricerca in modo da renderlo sempre visibile
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS position</title>
<style>
body {
font-family: fantasy;
color: rgb(199, 177, 14);
}
#landscape {
width: 250px;
position: absolute;
top: 20px;
left: 10px;
z-index: 1;
}
#winston {
position: absolute;
top: 50px;
left: 50px;
z-index: 2;
}
#hopper {
position: absolute;
top: 30px;
left: 80px;
z-index: 3;
}
h1 {
position: fixed;
z-index: 4;
left: 30px;
}
#song {
position: relative;
top: 220px;
}
</style>
</head>
<body>
<h1>Dance Party</h1>
<div id="song">
<h3>Jamming to "Fields of Gold" by Sting</h3>
<p>You'll remember me when the west wind moves<br>
Upon the fields of barley<br>
You'll forget the sun in his jealous sky<br>
As we walk in fields of gold
</p>
</div>
</body>
</html>
CSS IN NATURA: GOOGLE MAPS
Esempio di posizione di in index dei CSS nella vita = google maps
Tutti gli elementi vengono posizionati usando i CSS per essere posti gli uni sopra gli altri. Inoltre in google maps
c’è un particolare uso degli z-index che assicura un corretto ordine.
Google maps usa molti css position e z-index per organizzare la mappa e per i relativi comandi
Usa anche javascript
Per separare il testo dall’immagine usiamo margin e aggiungiamo margin-right e margin bottom
<style>
#hopper-pic {
width: 100px;
float: left;
margin-right: 6px;
margin-bottom: 6px;
}
È possibile far muovere anche elementi che non sono immagini ad esempio una barra laterale, per spostare una
lista di link a dx aggiungiamo una regola per il link di hopper e restringiamo la larghezza al 30% così occupperà
sempre il 30%della pagina
!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS floating elements</title>
<style>
#hopper-pic {
width: 100px;
float: left;
margin-right: 6px;
margin-bottom: 6px;
}
#hopper-footer {
background-color: rgb(232, 232, 232);
padding: 6px;
}
#hopper-links {
float: right;
width: 30%;
margin-left: 10px;
}
</style>
Generalmente in qualsiasi momento facciamo muovere un div gli dobbiamo attribuire una larghezza, altrimenti i
div tendono ad occuppare tutto lo spazio che hanno intorno a sé.
Il pié di pagina con le info si sta sovrapponendo alla barra, per far si che non si restringa su se stesso inseriamo
la proprietà clear.
#hopper-footer {
background-color: rgb(232, 232, 232);
padding: 6px;
clear: both;
}
Potremmo usare clear left o clear right se volessimo unicamente che non si restringessero gli elementi fluttuanti
di dx e di sx ma è bene che nessun elemento a pié di pagina si restringa, quindi usiamo clear both.
PROGRAMMAZIONE:
quando studiamo il programma, stiamo dando al computer una serie di comandi.
I programmi sono dietro ai siti web e alle applicazioni che usiamo tutti i giorni come yt, google maps.
So we're calling the ellipse function and passing it four parameters to change how it draws the ellipse.
When we describe the parameters of a function, we usually give them nicknames, so that we don't have to say
first and second.
400
And we think of y as the direction that goes down the canvas. It starts at zero in the corner and goes to
400 down at the bottom.
we have our face, it needs a mouth so they can eat things.
I'll make a mouth by typing a second ellipse underneath.
I'm going to use the same X as the one before it, because I want it to be in the center of the face, but I want it
lower down on the face. So I'll try 250 for the Y. For the size I want it smaller than a face.
Next we need eyes. Let's start with the left eye. It should be closer to the left-hand side than the center, so I'll try
150 and it should also be closer to the top, so I'll try 150 for y as well. And they should be small perfect circles,
so I'll try 30, 30.
Since our next eye is pretty similar to our left eye, I'm just going to copy this line of code and paste it, and then
move the x and there we go.
!!!I punti e virgola sono fondamentali dopo le parentesi
DISEGNARE ALTRE FIGURE CON LA PROGRAMMAZIONE
4 ellissi che disegnano una faccia
Se voglio cambiare qualcosa della mia faccia (es. fare la bocca +aperta devo cambiare il n°)
ellipse(200, 250, 100, 60); bocca; larghezza = 3° parametro/n°. Per ingradirla da 100182
riepilogando:
rect(76, 45, 250, 300); // face
/ / unibrow
line(140, 129, 270, 129);
Il fatto che in prima posizione abbiamo rect e in ultima line è molto importante perché è l’ordine in cui il
programma eseguirà il codice e disegnerà le forme. Se invertiamo l’ordine e mettiamo prima bocca e dopo
faccia il programma disegnerebbe prima la bocca e poi sopra la faccia ma in tal modo non saremmo più in grado
di vedere la bocca.
Strokeweight (12);
obbiettivo della programmazione = trasformare le nostre idee in realtà in modo abbastanza velocei docs mi
permettono di fare tutto più velocemente
var eyeSize;
= vuol dire assegnare, stiamo assegnando 20 alla variabile eyeSize, in altre parole mettiamo il numero 20
nella cesta eyeSize.
Quello a sx dell’uguale è sempre la variabile, mentre quello a dx dell’uguale è sempre il valore che staimo
assegnando alla variabile.
var eyeSize;
eyeSize = 20;
noStroke();
// face
fill(255, 255, 0);
ellipse(202, 208, 300, 300);
// eyes
fill(46, 46, 41);
ellipse(157, 151, eyeSize, eyeSize); ( ho sostituito con eyesize) ellipse(157, 151, 35, 35);
ellipse(304, 142, eyeSize, eyeSize); (ho sostituito con eyeSize) ellipse(304, 142, 30, 30);
// mouth
fill(252, 65, 65);
ellipse(257, 240, 120, 136);
ora che ho sostituito i 4 n° con la variabile eyeSize gli occhi del paperino sono entrambi uguali e se voglio
modificare le dimensioni di entrambi gli occhi posso cambiare il valore di quest’unica variabile.
var eyeSize;
abbiamo creato la nuova variabile chiamata “eyeSize” poi le abbiamo assegnato il valore 33, in realtà possiamo
scrivere tutto ciò scrivendo un unico passaggio:
noStroke();
// face
fill(255, 255, 0);
ellipse(202, 208, 300, 300);
// eyes
fill(46, 46, 41);
ellipse(157, 151, eyeSize, eyeSize);
ellipse(304, 142, eyeSize, eyeSize);
// mouth
fill(252, 65, 65);
ellipse(257, 240, 120, 136);
ALTRO SULLE VARIABILI:
se voglio spostare il paperino non posso sostituire con la stessa variabile ogni coordinata x perché non sono
tutte uguali, però una volta che ho assegnato un n° ad una variabile posso sostituirla come se fosse un n° quindi
posso usare le variabili nelle espressioni matematiche.
Creaiamo una variabile nella posizione x del paperino
var x
la faccia del paperino ha come coordinata x 200 quindi var x diventa 200
var x = 200;
// face
fill(255, 255, 0);
ellipse(200, 208, 300, 300); diventerà ellipse (x , 208, 300,300) ;
Quando cambia il valore di x la faccia del paperino si sposta ma non i suoi occhi e la bocca. Per sistemare
questo, definiremo la posizione dei suoi occhi e della bocca in base alla posizione della faccia.
Le coordinate x sono il centro di tutte le ellisse, la sua faccia è disegnata a 200.
L’cchio sx è disegnato a 150, quindi esso sarà dove si trova la faccia meno 50.
Il suo occhio dx è disegnato a 300, 200+100. Perciò l’occhio dx sarà dove si trova la faccia (200 ovvero x) +
100.
La sua bocca è disegnata a 250 (200 +50) quindi è dove si trova la sua faccia (x) + 50. Ogni volta che cambio il
valore di X si muove l’intera faccia.
var x = 200;
// face
fill(255, 255, 0);
ellipse(x, 208, 300, 300);
// eyes
fill(46, 46, 41);
ellipse(x - 50, 151, eyeSize, eyeSize);
ellipse(x + 100, 142, eyeSize, eyeSize);
// mouth
fill(252, 65, 65);
ellipse(250, 240, 120, 136); -- diventerà ellipse(x +50 , 240, 120, 136);
una volta create la variabile var x possiamo assegnargli un valore quante volte vogliamo, dopo aver assegnato:
var x = 198;
x = 300;
x = 150;
e da questo momento in poi il computer considera x come l’ultimo valore che gli è stato assegnato ma devo
scrivere var solo una volta per ogni variabile.
RIPASSO:
Una variabile è un modo per memorizzare i valori. Per utilizzare una variabile, dobbiamo sia dichiararla—per far
sì che il programma conosca la variabile—sia assegnarle un valore—per far sì che il programma sappia quale
valore stiamo memorizzando nella variabile.
Ecco come possiamo dichiarare una variabile chiamata "xPos":
var xPos;
Ora possiamo assegnare a xPos il valore 10:
xPos = 10;
Se vogliamo—e spesso capiterà!—possiamo fare dichiarazione e assegnazione in una sola istruzione:
var xPos = 10;
Se, per qualche motivo, vogliamo cambiare il valore di una variabile più tardi, possiamo fare una nuova
assegnazione:
var xPos = 10;
// qualche tempo dopo ...
xPos = 20;
Vedremo spesso che riassegnare il valore a una variabile può essere utile quando vogliamo animare i nostri
disegni.
Come scegliamo i nomi per le variabili? Per le variabili in JavaScript, segui queste regole:
I nomi delle variabili possono iniziare con lettere, o con i simboli $ e _. Possono contenere solo lettere, numeri,
$ e _. Non possono iniziare con un numero. "myVariable", "leaf_1", e "$money3" sono tutti esempi di nomi
validi per le variabili.
I nomi delle variabili sono sensibili al maiuscolo, che vuol dire che "xPos" è diverso da "xpos", quindi assicurati
di essere coerente.
I nomi delle variabili non possono essere uguali ai nomi di variabili già esistenti, e ce ne sono un sacco nel
nostro ambiente di programmazione ProcessingJS. Se compare un errore del tipo "Sola lettura!", prova a
cambiare il nome della tua variabile.
I nomi delle variabili devono essere chiari e significativi, in inglese o in italiano, come preferisci; per esempio,
invece di "ts", usa "toothSize".
Utilizza l'alternanza di lettere maiuscole e minuscole per mostrare le diverse parole nei nomi delle variabili,
come "toothSize" invece di "toothsize" o "tooth_size".
CREARE LE ANIMAZIONI:
Trasformiamo un disegno in un’animazione, creo un programma che disegna macchian rossa con cielo blu. In
tale programma uso la variabile x e la inizializzo a 10. X sta per la posizione x della macchina e la uso quando
disegno il corpo della macchina (2 rettangoli) e anche quando disegno le ruote della macchina (2 ellissi)
Animazione = macchina si muove senza che io debba modificare il codice
Per trasformarla in un’animazione dobbiamo fare in modo che questo ambiente di programmazione crei nuovi
disegni più volte al secondo.
Per fare si che questi disegni abbiano un valore x diverso ogni volta in fondo al programma scrivo draw e il
programma si completa automaticamente
draw = function() {
// all lines of code inside here will be run repeatedly
};
Questa sintassi è una definizione di funzione. Una funzione ci rende +semplice raggruppare un po’ di codice
in modo che il programma sappia che deve eseguire quel codice tutto insieme.
La funzione draw è una funzione speciale, definiamo una funzione chiamata draw nell’ambiente di
programmazione di khan academy, che eseguirà il codice dentro draw in modo ripetuto più volte al secondo.
Tutte le righe di codice dentro draw=function, saranno eseguite in modo ripetuto, tutto ciò che non è dentro
questa funzione sarà eseguito una volta sola, quando viene caricato il programma.
Mettiamo il codice della nostra macchina dentro la funzione :
draw = function() {
};
Stiamo facendo in modo che la macchina appaia più volte al secondo ma sembra uguale a prima perché x è
sempre 281 e la macchina perciò non si sposta. Ma noi vogliamo poter dire al programma la posizione iniziale
della macchina x è 10, poi aggiungiamo 1 a questa posizione ogni volta che la disegniamo per farlo sposto la
variabile x fuori dalla funzione draw e la inizializzo a 10, ora dato che è fuori dalla funzione draw, questa linea di
codice verrà eseguita una volta sola all’inizio del programma.
draw = function() {
x = x + 1;
};
dentro draw aggiungo una riga di codice per aggiungere 1 alla variabile -> x = x+1; Ma la macchian è sbavata
perché stiamo dicendo al programma di ridisegnare la macchina ogni volta, ma la ridisegna sopra la macchina
precedente che sta ancora lì. Se vogliamo che il programma cancelli la macchina precedente dobbiamo
prendere la chiamata “background” e la spostiamo dentro draw == macchina che viaggia sullo schermo. Per
avere una macchina più veloce dovrò aggiungere di più a x, ad esempio se voglio avanzare di 10 pixel ogni
volta, per farla andare indietro x = x + -10;
noStroke();
draw = function() {
All’inizio fuori dalla funzione draw, dichiaro la mia variabile e la inizializzo a 10, poi definisco la funzione draw e
ci metto dentro il codice per disegnare. Alla fine della funzione aggiungo una certa quantità a x e quando
l’ambiente di programmazione vede che definisco la funzione draw sa che deve eseguire il codice dentro la
funzione più e più volte al secondo.
noStroke();
var x = 200;
var y = 350;
var ballWidth = 300;
var ballHeight = 200;
draw = function() {
background(255, 206, 71);
fill(191, 0, 255);
ellipse(x, y, ballWidth, ballHeight); abbiamo usato le variabili per disegnare un ellipse ***
***usando una variabile per ogni parametro di ellipse. Dato che stiamo inserendo una variabile per ogni
parametro, ciò significa che possiamo animare ogni aspetto di questa ellispe ed è quello che staimo facendo.
°°ciò significa che se ballHeight inizialmente è 200, allora nel 2° frame sarà 198 perché è 99% di 200
x = x + 1; x += 1;
y = y - 2; y -= 2;
ballWidth = ballWidth * 99/100; ballWidth *= 99/100;
ballHeight = ballHeight * 99/100; ballHeight /= 99/100;
}; };
queste 4 righe di codice seguono uno schema simile: abbiamo una variabile, il segno uguale, di nuovo quella
stessa variabile, un operatore matematico e alcuni numeri. Questo schema è comune nella programmazione
perché spesso prendiamo una variabile, operiamo dei calcoli matematici e meorizziamo i risultati nella stessa
variabile.
esiste anche la scorciatoia diviso uguale /= per qualsiasi cosa che vogliamo dividere
ballHeight /= 99/100;
};
Ora possiamo scrivere meno codici e avere lo stesso risultato.
noStroke();
var eyeSize = 40;
var x = 200;
draw = function() {
// face
fill(255, 255, 0);
ellipse(x, 208, 300, 300);
// eyes
fill(46, 46, 41);
ellipse(x - 50, 151, eyeSize, eyeSize);
ellipse(x + 100, 142, eyeSize, eyeSize);
// mouth
fill(252, 65, 65);
ellipse(x + 50, 240, 120, 136);
eyeSize += 1; ( Per ingrandire gli occhi del paperino aggiungendo ogni volta 1 pixel alle dimensioni degli
occhi)
};
ma ora anziché scrivere eyeSize += 1; i programmatori scrivono eyeSize++; (è più breve da scrivere)
eyeSize++;
// Winston++!!
// Intelligence++!
};
oppure possiamo scrivere così: + = -
eyeSize += -27;
strokeWeight(3); strokeWeight(3);
stroke(57, 0, 214); stroke(57, 0, 214);
fill(0, 210, 247); fill(0, 210, 247);
};
Se disegno in mouseX e mouseY ma elimino lo sfondo mettendo background in un commento creo una specie
di pennello
draw = function() {
};
se inverto le due variabili e metto prima mouseY e poi MouseX ho i controlli del mouse che fanno l’opposto di
ciò che dovrebbero fare.
};
ISTRUZIONI IF
draw = function() {
background(202, 255, 97);
nel nostro caso la condizione è che la palla abbia raggiunto il bordo dx, per capire se lo ha raggiunto o meno
abbiamo la variabile x che ci dice la posizione di essa. Io so che il bordo è in x =400. Quando x>400 allora
sappiamo che la palla è andata un po' oltr’ al bordo dx.
nel codice da eseguire cambiamo solo la velocità che diventa -5
if (x > 400) {
speed = -5;
}
if (x < 0) {
speed = 5;
}
dobbiamo fare la stessa cosa anche dall’altro lato, per controllare se la palla ha raggiunto il bordo sx accade
quando x <0 e vogliamo rendere la velocità positiva speed =5
sembra che la palla sia andata un po’ troppo in là, questi 2 parametri controllano dove è disegnato l’ellisse
quindi ora quando il centro raggiunge il bordo, metà dell’ellisse è già andato oltre il bordo e se vogliamo
sistemarla dobbiamo fermare l’ellisse un po’ prima. Se il nostro bordo è a 400, vogliamo fermare l’elisse quando
il centro raggiunge 375. La funzione dell’ellisse ha ampiezza 50. Il centro del bordo sarà a 25, quindi vogliamo
fermarla quando il centro raggiunge 375 cioè 400 -25
quindi controlliamo
if (x > 375) {
speed = -5;
}
if (x < 25) {
speed = 5;
}
Da capo:
// position of the ball
var x = 20;
// how far the ball moves every time
var speed = 5;
draw = function() {
background(202, 255, 97);
if (x > 375) {
speed = -5;
}
if (x < 25) {
speed = 5;
}
nella funzione draw (quella speciale chiamata di continuo quando il programma viene eseguito) coloriamo lo
sfondo e disegnamo l’ellisse. Posizioniamo l’ellisse alla variabile position e alla velocità speed
abbiamo aggiunto 2 condizioni if per controllare se la palla è vicina al bordo destro o al bordo sx e in quei casi
cambiamo la velocità in positivo o in negativo così che la palla rimbalzi indietro.
La palla rimbalza avanti e indietro all’infinito.
draw = function() {
background(202, 255, 97);
se dessi questo programma ad un amico e lui non sapesse programmare non potrebbe interagire ma tutto
quello che farebbe sarebbe guardarlo.
Le due variabili speciali mouseX and mouseY restituiscono numeri e ci dicono la posizione corrente del mouse e
sono un ottimo modo per rendere il programma più interattivo. Dovremmo usarla da qualche parte all’interno
della funzione draw che è l’unica parte di codice che viene chiamata di continuo durante l’esecuzione del
programma. Tutto ciò che è fuori da draw viene chiamato una sola volta: quando il programma parte. Quindi non
avrebbe senso usare mouseX and mouseY perché l’utente non avrebbe possibilità di interagire.
Dentro draw stiamo disegnando la palla 200 pixel in basso, se li sostituiamo com mouseY usiamo la posizione
y di dove si trova l’utente. Semplicemente muovendo il cursore su e giù possiamo cambiare la linea di dove si
sposta la palla, ma vogliamo usare anche mouseX quindi disegnamo un’altra palla che faremo andare nella
direzione opposta e faremo controllare all’utente la sua posizione x. Le due palle ora vanno in posizione
perpendicolare ma volgio dare all’utente anche il potere di far esistere la 2° palla con un semplice click del
mouse. Devo capire come dire al computer che l’utente sta premendo il mouse esiste la variabile
/ / mouseIsPressed che può essere usata dentro un’istruzione if.
draw = function() {
background(202, 255, 97);
Ho un ciclo:
var y = 40;
while (y < 400) {
text(message, 30, y);
y += 20;
}
E con poche righe di codice posso scrivere questo messaggio fino all’estremità dello schermo
Se cambio
Var message =”Loops are REALLY awesome!?????”; cambierà tutto il codice (quello viola a dx)
Dobbiamo scrivere text(message, 30,40); a ripetizione abbastanza volte tanto da riuscire ad arrivare fino in fondo
alla pagina, il fondo della pagina però è lontano quindi c’è molto lavoro. C’è UN MODO +SEMPLICE. = il ciclo che
ci permette di ripetere più volte un pezzo di codice introducendo piccoli cambiamenti ogni volta
fill(120, 9, 148);
var message = "Loops are REALLY awesome!???";
y
text(message, 30, 40); sostituisco con un ciclo var y = 40;
text(message, 30, 60); while(y < 400) {
text(message, 30, 80); text(message, 30, y);
y += 20
}
ogni volta che voglio usare un ciclo, devo rispondere a 3 domande chiave:
1) Cosa voglio ripetere? (qualcosa che noi vogliamo ripetere deve andare tra le parentesi graffe, in tal caso
vogliamo ripetere text)
2) Cosa voglio cambiare ogni volta ? (vogliamo cambiare la posizione y vogliamo che diventi 60 e poi 80. Quindi
la trasformeremo in una variabile chiamata y, perché è in posizione y. Dichiaro sopra la variabile che inizializzo a
40. Poi metto y= y+20, così la y diventerà più grande ogni volta ma mettendo in pratica le scorciatoie scriviamo y
+=20;
3) Per quanto dovremo ripeterlo? Vogliamo ripeterlo più volte solo fino in fondo alla pagina e non per sempre (il
tempo di attesa sarebbe molto lungo in tal caso e potrebbe bloccare il mio browser). Ripeterlo fino in fondo alla
pagina significa che lo ripeto fino a quando y <400. Lo scrivo dopo while () e il messaggio ora viene scritto fino in
fondo alla pagina
fill(120, 9, 148);
var message = "y is now ";
var y = 40;
while(y < 400) {
text(message + y, 30, y);
y += 20; il valore cambia di 20
}
y + = 50;
fill(120, 9, 148);
var message = "y is now ";
var y = 90;
while(y < 279) { <-- il programa si ferma prima ^^^
text(message + y, 30, y);
y += 50;
}
^^possiamo pensarlo come una sorta di condizione if, abbiamo l’espressione boleana
while(y < 279) {
e l’insieme comandi solo se la boleana è vera:
text(message + y, 30, y);
y += 50;
}
Con il ciclo while c’è un meccanismo segreto in fondo che dice ritornare all’inizio del ciclo
fill(120, 9, 148);
var message = "y is now ";
var y = 90;
while(y < 279) {
text(message + y, 30, y);
y += 50;
// Go back to the start of the loop!
}
Questa indicazione segreta indica che invece di andare avanti come succede con un if, ogni volta che viene
eseguito un codice dentro il ciclo bisogna tornare indietro e controllare se la condizione è ancora valida, e se lo è
bisogna ripetere le condizioni interne. Dopo la 2° volta farà la stessa cosa, controllerà, poi torna all’inizio
fill(120, 9, 148);
var message = "y is now ";
var y = 90;
while(y < 279) {
text(message + y, 30, y);
y += 50;
// Go back to the start of the loop!
}
fill(221, 0, 255);
ellipse(96, 83, 49, 70); cambiamo il primo parametron con x e creiamo una variabile
/* The Three Loop Questions:
1. What do I want to repeat?
2. What do I want to change each time?
3. How long should we repeat?
*/
Per fare si che la variabile cambi all’interno del ciclo, usiamo il ciclo while al cui interno diremo che x cambierà
ogni volta di 20
Per quanto tempo vogliamo ripeterlo? Possiamo pensare fino a che non esca dal lato dello schermo quindi fino a
quando x <400. Ora dobbiamo esaminarlo e renderlo come vogliamo spostando i parametri dell’ellisse diamo un po
più di spazio (while x<329), cambiamo le dimensioni con i parametri di ellipse
fill(221, 0, 255);
var x = 100;
while (x < 329) {
ellipse(x, 94, 49, 68);
x += 60;
}
/* The Three Loop Questions:
1. What do I want to repeat?
2. What do I want to change each time?
3. How long should we repeat?
*/
Per aggiungere le corde ad ogni palloncino che inizi al centro e che vengano giù tutte verso lo stesso punto.
Sappiamo che se vogliamo ripetere qlcs dobbiamo metterlo dentro il ciclo while, quindi disegnamo la linea e se
vogliamo che sia al centro dell’ellisse, abbiamo bisogno che inizi in corrispondenza delle prime due coordinate
di ellipse
fill(221, 0, 255);
var x = 100;
while (x < 329) {
ellipse(x, 94, 49, 68);
line(x, 94, 224, 300);
x += 60;
}
/* The Three Loop Questions:
1. What do I want to repeat?
2. What do I want to change each time?
3. How long should we repeat?
*/
Tuttavia le corde si sovvrappongono ai palloncini ma noi vogliamo che l’ellisse copri la linea e possiamo farlo
cambiando semplicemente l’ordine.
fill(221, 0, 255);
var x = 100;
while (x < 329) {
line(x, 94, 224, 300);
ellipse(x, 94, 49, 68); ho cambiato l’ordine
x += 60;
}
/* The Three Loop Questions:
1. What do I want to repeat?
2. What do I want to change each time?
3. How long should we repeat?
*/
var hopper = getImage("creatures/Hopper
-Jumping");
image(hopper, 223, 232);
Per cambiare colore delle linee, se non sappiamo come fare cerchiamo nella documentazione. Devo usare stroke
per stabile il colore delle linee. Per disegnare il paperino Hopper lo inserisco come immagine e poi seguo la
documentazione per sapere come si fa a spostarlo per fare in modo che sembri reggere i palloncini volando
attraverso il cielo
fill(120, 9, 148);
var y = 55;
while (y < 300) {
text("Pineapple pizza is the best!", 80, y);
y += 40;
}
iniziamo con la variabile y e scriviamo un messaggio usando la posizione y e diciamo di continuare fino a
quando y è minore di 300 e cambiamo y di 40 ogni volta.
// For Loops!
fill(120, 9, 148);
var y = 27;
while (y < 354) {
text("Pineapple pizza is the best!", 80, y);
y += 24;
}
Il nostro messaggio “pineapple pizza is the best” è importante e vogliamo che venga scritto +volte, ma vogliamo
che venga scritto +in alto cambiamo y, vogliamo che riempia di + la pagina y<354 e vogliamo che gli spazi
siano + piccoli y +=24. Per trasformare questo ciclo while, in un ciclo for nelle parentesi tonde del ciclo for ci
vanno 3 cose e non solo una for ( ; ; ),usiamo i punti e virgola per separare le 3 cose. E poi il corpo del ciclo
tra le parentesi graffe.
// For Loops!
fill(120, 9, 148);
// for (start; how long; change) ( inizializzazione + ; + istruzioni su quanto a lungo ripetere. Per metterlo in
corrispondenza con il while possiamo dire che l’inizio stabilisce la variabile y)
for (var y = 27 ; y < 354 ; y +=24 ) {
}
/*
var y = 27; la mettiamo anche sopra
while (y < 354) { questa parte tra () mi dice per quanto tempo devo continuare a
text("Pineapple pizza is the best!", 80, y);
y += 24; nel while il cambiamento è alla fine
}
*/
for (var y = 27 ; y < 354 ; y +=24 ) queste 3 parti devono essere sempre in tale ordine nei cicli for. Dobbiamo
sempre iniziare dicendo “la variabile inizia in tal modo, poi stabiliamo per quanto vgogliamo che essa continui e
poi stabiliamo come cambieranno le cose, qui cambieranno aumentando y di 24.infine dobbiamo scrivere quello
che vogliamo fare all’interno del ciclo for “Pineapple pizza is the best!”
se volessimo cambiare da dove inizia cambiamo for(var y = 27…) se volessimo cambiare da dove finisce,
cambiamo il punto finale for (var… y+=24), se volessimo cambiare la spaziatura, cambieremo l’incremento text
(“Pineapple pizza is the nest!”, 134,y); 134 è l’incremento
for (var y = 27 ; y < 354 ; y +=24) dobbiamo ricordarci di mettere sempre i punti e virgola per separare le 3
parti
for (var y=63) stiamo inizializzando questa variabile quindi va al di fuori e non all’interno di while. Il
cambiamento va sempre alla fine del ciclo while
non possiamo sempre trasformare un while in un for ma solo quando il while è molto semplice
imageMode(CENTER);
1°x = 0
2° x = 36
Vogliamo che la x di 36 cambi ogni volta, ciò significa che vogliamo che dipenda da i, quindi scriviamo i x36
(i*36) Quindi la prima x è 0 la 2° x è 72.
Per avere un mucchio di gemme che arrivino fino in fondo allo schermo,
- Potremmo prendere il ciclo for copia incollarlo e cambiare la y ogni volta:
imageMode(CENTER);
Ma usiamo il ciclo for nodificato = un ciclo dentro un ciclo. Quindi creiamo un ciclo più esterno che si
occuperà di arrivare fino in fondo allo schermo, poi il ciclo più interno si occuperà di spostarsi da sx a dx.
Prendiamo uno dei cicli precedenti e lo mettiamo all’interno dopo aver cancellato tutta la parte precedente:
Per fare sic he le gemme non siano allineate tutte sulla stessa fila dobbiamo cambiare la y. Vogliamo che y
cambi per ogni riga, esattamente come x dipende da i vogliamo che y sia dipendente da j. Possiamo sceivere
per esempio jx30. I cicli più esterni creano la variabile j e la aumentano fino a 13 e durante ogni esecuzione del
ciclo esterno viene eseguito anche il ciclo interno. Il ciclo interno crea la variabile i che va fino a 12 . per ogni
esecuzione del ciclo interno disegno un’immagine su x e y che dipende da i e j. La i cambia molto più
frequentemente di j.
Uso il commando text per mostrare i valori di j va da 0 a 12. È sostanzialmente dove le gemme erano
posizionate. i è in orrizzontale e va da 0 a 11, i cambia +frequentemente
imageMode(CENTER);