• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Un form in html5

Ignazio96

Utente Guru
Autore del topic
User Legend
9 Marzo 2008
10.985
155
Miglior risposta
0
Da html.it

----------------

Questa è la traduzione dell'articolo
Perfavore, Entra oppure Registrati per vedere i Link!
di Inayaili de León pubblicato originariamente su
Perfavore, Entra oppure Registrati per vedere i Link!
il 3 Dicembre 2009.

I form sono in genere visti come qualcosa di fastidioso su cui lavorare, sia per quel che riguarda il markup sia per quel che riguarda gli stili. Io non sono d'accordo: i form (come le tabelle) sono qualcosa su cui è divertente lavorare.
In questo articolo vedremo come creare un bel form seguendo le definizioni di HTML5 per il markup e tecniche avanzate dei CSS (compresi i CSS3). Sono certa che alla fine della lettura vorrete anche voi creare un form in questo modo.
Ecco cosa realizzeremo:
Figura 1 - Il nostro form nel suo aspetto finale
form-final.png

Le icone usate sono prese da
Perfavore, Entra oppure Registrati per vedere i Link!
.
Un markup semantico

Andremo a lavorare su un modulo per i pagamenti. Ci sono tre sezioni principali:

  • I dettagli sulla persona che compila il modulo
  • I dettagli sull'indirizzo
  • I dettagli sulla carta di credito
Useremo anche alcuni dei nuovi tipi di input e attributi per gli input di HTML5 per creare campi semanticamente più corretti e usare meno classi e id. In particolare useremo:

  • email per il campo destinato all'indirizzo e-mail;
  • tel per il campo destinato al numero di telefono;
  • number per i dettagli relativi alla carta di credito e al codice di sicurezza;
  • required per contrassegnare i campi obbligatori;
  • placeholder per le indicazioni di compilazione all'interno di alcuni campi;
  • autofocus per assegnare automaticamente il focus al primo campo quando la pagina viene caricata.
Ci sono molti altri tipi di input e di attributi nella specifica HTML5. Per approfondire si può fare riferimento alla
Perfavore, Entra oppure Registrati per vedere i Link!
sul sito del W3C. Credo che possa essere sufficiente per darvi un'idea di quanto possa essere divertente lavorare sul markup dei form secondo la nuova specifica.


Lavorare sulle basi


Ciascuna sezione del form sarà racchiusa all'interno di un fieldset. Nel caso dei radio-button destinati alla scelta del tipo di carta, racchiuderemo le opzioni in un altro fieldset annidato. Useremo anche una lista ordinata per raggruppare ciascuna coppia input/label. Ciò ci fornirà una sorta di aggancio semantico per gli stili da applicare e renderà anche più semplice la lettura del form quando ad esso non sono applicati stili:




form-original.png


Ecco dunque il markup su cui lavoreremo:

HTML:
Perfavore, Entra oppure Registrati per vedere i codici!
Abbellire le cose

Per prima cosa, iniziamo aggiungendo alcune impostazioni di default al nostro form resettando i margini e il padding degli elementi e aggiungendo un font di default per la pagina:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Poi passiamo a dare uno stile all'elemento form che racchiude tutti i campi:


Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Rimuoviamo anche il bordo dai fieldset e applichiamo un po' di margine inferiore. Usando la pseudo-classe :last-of-type rimuoviamo il margine inferiore dall'ultimo fieldset perché non ne abbiamo bisogno:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
A questo punto rendiamo grandi ed evidenti gli elementi legend. Applichiamo pure un'ombreggiatura di un verde chiaro per evidenziare questo dettaglio:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Ora le nostre legend hanno un magnifico aspetto. Ma perché non aggiungere una chiara indicazione dei passi necessari per compilare il form? Invece di aggiungere tale indicazione manualmente ad ogni legend, possiamo usare dei contatori automatici.
Per aggiungere un contatore ad un elemento dobbiamo usare le pseudo-classi :before e :after per aggiungere contenuto attraverso i CSS. Seguiremo questi passi:

  • creaiamo un contatore usando la proprietà counter-reset sull'elemento form;
  • richiamiamo il contatore con la proprietà content usando lo stesso nome dato in precedenza;
  • con la proprietà counter-increment indichiamo che per ogni elemento che corrisponde al nostro selettore il contatore sarà incrementato di 1.
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Infine, dobbiamo cambiare lo stile della legend che fa parte del gruppo dei radio-button, per farla apparire visivamente come una label:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Applicare gli stili alle liste

Per le nostre liste useremo solo dei bordi arrotondati, un bordo semi-trasparente e uno sfondo. Dato che usiamo colori RGBa, dovremmo fornire anche un'opzione alternativa per i browser che non li supportano (va messa prima della definizione dei colori RGBa). Per le liste annidate elimineremo queste proprietà perché si sovrapporebbero alle altre:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Controlli dei form

Ora dobbiamo solo applicare gli stili agli elementi label, input e button.
Tutte le label avranno lo stesso aspetto, tranne quella dei radio-button. Floatteremo tutte le label a sinistra e assegneremo a ciascuna una larghezza.
Per le label dei tipi di carta di credito aggiungeremo come sfondo un'icona ed elimineremo alcune delle proprietà che non sono necessarie. Useremo il selettore di attributo per specificare l'immagine di sfondo per ciascuna label (in questo caso useremo l'attributo for di ogni label).
Per aggiungere un dettaglio extra, assegneremo un cursore specifico (cursor: pointer) alle label dei radio-button per lo stato di :hover: in questo modo l'utente sa che può semplicemente cliccare per selezionare un'opzione.
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Ci siamo quasi. Per quanto riguarda gli elementi input, vogliamo applicare uno stile a tutti i campi, tranne ai radio-button. Useremo per questo scopo la pseudo-classe :not(). Grazie a quest'ultima possiamo identificare tutti gli input tranne quelli che hanno un type uguale a radio.
Faremo anche in modo di aggiungere degli stili per lo stato di :focus e per i radio-button:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Per concludere, il pulsante di invio. Useremo su button una bella tipografia e un'ombreggiatura sul testo, allineeremo tutto al centro del form e assegneremo colori di sfondo diversi a seconda dello stato:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Finito! Potete vedere il form completo su
Perfavore, Entra oppure Registrati per vedere i Link!
.
Il form non avrà lo stesso aspetto su tutti i browser. Internet Explorer non supporta gli angoli arrotondati, come le versioni non ultime di Opera; i nuovi tipi di input sono resi come campi normali su alcuni browser; alcune delle funzionalità più avanzate dei CSS che abbiamo usato non sono supportate da tutti i navigatori. Ciò non significa che non possiate usarli sin da ora e semplificare il vostro processo di sviluppo.
 
Ultima modifica:
  • Like
Reactions: 2 people
Sarà molto difficile per me abituarmi all'html5.. Non mi ispira molto sono troppo abituato al 4 xD Però carino come form dai :soso: