Skip to content
Snippets Groups Projects
README.md 6.56 KiB
Newer Older
Diego Monti's avatar
Diego Monti committed
VIQ - Laboratorio 4
===================
Diego Monti's avatar
Diego Monti committed

Diego Monti's avatar
Diego Monti committed
*11 aprile 2019*

### Obiettivi:

1.  Comprendere la struttura delle regole CSS
2.  Comprendere il funzionamento dei selettori
3.  Comprendere il significato dei principali attributi
4.  Costruire una pagina HTML

### Strumenti:

-   Browser (consigliato: Google Chrome)
-   Editor (consigliato: [WebStorm](https://www.jetbrains.com/webstorm/))
-   Reference CSS: <https://www.w3schools.com/cssref/default.asp>

Per avviare WebStorm ed effettuare il checkout del progetto dal repository personale fare riferimento al [tutorial](https://oop.polito.it/VIQ/Git.html).

Esercizio 1
-----------

**Dati**

Utilizzare i file HTML presenti nella cartella `Esercizio_1` del progetto.

**Attività**

Costruire un foglio di stile da applicare ad entrambe le pagine.

-   Definire una palette di colori per lo sfondo, il testo normale e per i titoli (`h1`, `h2`, ...).

    Come spunto si può utilizzare ad esempio <http://paletton.com/>.

    Per i principi di integrità visuale, i colori scelti devono essere:

    -   chiaramente distinguibili: da qui la scelta "*ovvia*" del bianco e del nero (o di due colori ben distinguibili per luminosità);

    -   utili: i colori saturi, che attirano l'attenzione, dovrebbero essere usati, con parsimonia, quanto sono utili per evidenziare alcuni elementi (ad esempio i titoli).

-   Definire il tipo di carattere da utilizzare per il testo normale e per i titoli.

    Si ricorda che:

    -   i titoli devono essere sufficientemente diversi dal testo principale in termini di forma (es. serif vs. sans-serif), dimensione, e colore;

    -   in generale la lettura di lunghi frammenti di testo è più facile con font serif;

    -   è possibile specificare nomi specifici di font o semplicemente le famiglie. Per i nomi utilizzare, ad esempio, quelli presenti nel sistema in uso (ad esempio l'elenco dei font in *Word*).

-   Definire le caratteristiche del testo: allineamento (`text-align`), rientro (`text-indent`) e interlinea.

    L'interlinea (`line-height`) deve essere proporzionata al testo. Provare con diversi valori: dal `100%` (interlinea singola) al `200%` (interlinea doppia).

-   Evidenziare i link in maniera appropriata.

    Definire uno stile per gli stati `:link`, `:hover`, `:active` e `:visited` che possono operare su vari attributi, ad esempio `color`, `background-color`, `border`.

-   Definire lo stile per le liste, sia numerate che non-numerate.

    Provare a definire un'immagine da utilizzare come punto; è possibile utilizzare *Paint* per disegnare l'immagine, ad esempio: ![](figure/FancyBullet.png)

    È importante scegliere una dimensione adeguata per le immagini-punto.

-   Definire degli stili alternativi per le tabelle.

    In generale si applicano tutte le linee guida illustrate a lezione.

    La separazione delle righe della tabella può essere effettuata con le seguenti strategie:

    -   utilizzando un'ampia spaziatura verticale tra le righe stesse (classe `widerow`);
    -   utilizzando delle linee orizzontali, tenui e non predominanti (classe `hrules`);
    -   utilizzando dei colori di sfondo alternati (classe `bandedrows`).

    Definire le tre classi (indicate tra parentesi) da assegnare alle tabelle per utilizzare le tre varianti.

    I titoli delle tabelle devono essere evidenziati e separati dal resto della tabella:

    -   con delle linee (classe `hhlines`);
    -   utilizzando uno sfondo significativamente diverso (classe `hband`), eventualmente invertendo il rapporto di luminosità testo/sfondo del resto del documento, es. testo bianco su sfondo colorato (classe `reverse`).

    Definire le tre classi (indicate tra parentesi) da assegnare alle tabelle per utilizzare le tre varianti.

    Per applicare due diverse classi (ad esempio una per le righe e una per l'intestazione) è sufficiente indicare entrambe le classi separate da spazio, per esempio `<table class="hrules reverse">`. È importante anche definire uno stile di default (quando non è definita nessuna classe).

-   Definire uno stile per le sezioni (`<section>`).

    Le sezioni dovrebbero essere separate l'una dall'altra. Ad esempio con delle linee orizzontali, racchiuse in bordi oppure con sfondi distinti.

-   Definire uno stile per le immagini.

    Le immagini possono essere posizionate a destra (*floating*) della pagina con il testo che viene disposto a fianco.

-   Definire lo stile per il menù di navigazione (`<nav>`).

    I link definiti dentro il menù devono essere rappresentati in modo che il seguente codice HTML di esempio:

        <nav>
        <a href="#dati">Dati personali</a>
        <a href="#lavoro">Lavoro</a>
        <a href="#formazione">Formazione</a>
        <a href="#competenze">Competenze</a>
        <a href="#interessi">Interessi</a>
        </nav>

    sia visualizzato come una barra di menù simile alla seguente:

![](figure/menu.png)

-   Definire lo stile per il `<footer>`.

    Il footer deve essere disposto in fondo alla pagina.

    Per disporlo in fondo alla pagina occorre utilizzare il posizionamento:

    -   in fondo alla pagina, non sapendo quanto è lunga la pagina è possibile utilizzare come posizione l'attributo `bottom=0`, ovvero a distanza nulla dal fondo del contenitore (che è `<body>`, ovvero la pagina);
    -   utilizzare il posizionamento (`position`) di tipo `fixed`, rispetto alla finestra (cosa cambia se il posizionamento è invece di tipo `absolute`?);
    -   il posizionamento assoluto sovrappone l'elemento al resto della pagina quindi è necessario lasciare un po' di spazio in fondo alla pagina per poter posizionare il footer. Per allocare lo spazio è necessario conoscere le dimensioni del footer che quindi deve avere una dimensione (`height`) predefinita.

Esercizio 2
-----------

**Dati**

Utilizzare la classifica del campionato di calcio di Serie A disponibile nel file [SerieA.csv](Esercizio_2/SerieA.csv).

**Attività**

-   Costruire una pagina HTML contente una tabella in cui sono riportati i dati della classifica, **SENZA FORMATTAZIONE**.

-   Definire uno stile che permetta di:

    -   evidenziare i titoli della tabella;

    -   separare le linee con uno sfondo alternato;

    -   visualizzare la prima cella delle prime due righe (titoli esclusi) di colore blu (qualificate in Champions League);

    -   visualizzare la prima cella della terza riga (titoli esclusi) di colore verde (qualificata ai preliminari di Champion League);

    -   visualizzare la prima cella delle righe 4 e 5 (titoli esclusi) di colore giallo (qualificate in Europa League);

    -   visualizzare la prima cella delle ultime tre righe (titoli esclusi) di colore rosso (retrocesse in serie B).