Form con CSS e Javascript… e possibilmente con giudizio

Mercoledì 12 Settembre 2007 - 11:44

di Cesare Lamanna

Scripting

Shaun Inman ha presentato sul suo blog una tecnica per modificare l’aspetto di campi di form di tipo file (<input type="file">). È un caso per certi versi esemplare rispetto a due diversi ambiti.

La tecnica è basata su una combinazione di CSS e Javascript, e rispetta in pieno i dettami del cosiddetto progressive enhancement. Se Javascript è disabilitato e sui browser su cui non funziona, tutto degrada senza inficiare la funzionalità. Di seguito uno screenshot dell’esempio su Safari (supportato) e Opera (non supportato):

Resa del form su Safari

Resa del form su Opera

Leggendo il post troverete tutti i dettagli tecnici. La base è rappresentata da questo semplice markup HTML:

<label class="cabinet"> 
    <input type=”file” class=”file” />
</label>

e da queste regole CSS:

.SI-FILES-STYLIZED label.cabinet
{
    width: 79px;
    height: 22px;
    background: url(btn-choose-file.gif) 0 0 no-repeat;

    display: block;
    overflow: hidden;
    cursor: pointer;
}

.SI-FILES-STYLIZED label.cabinet input.file
{
    position: relative;
    height: 100%;
    width: auto;
    opacity: 0;
    -moz-opacity: 0;
    filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);
}

Tramite il CSS si imposta un’immagine di sfondo per l’elemento label e poi si nasconde l’input sfruttando l’opacità (che è uguale a 0). In questo modo, a differenza di quanto avviene con display:none o visibility:hidden, il campo risulta comunque cliccabile. Il resto è svolto dal Javascript, che va attivato con una dichiarazione del tipo SI.Files.stylizeAll();.

Tutto bene? Sotto l’aspetto puramente estetico/visuale forse sì. Quel che balza subito agli occhi però è che la tecnica pone un immediato problema di usabilità. In questo tipo di input è presente di default una sezione accanto al pulsante che visualizza il percorso locale del file selezionato: è una forma di feedback e controllo indispensabile e che nell’esempio realizzato da Inman si perde (fatto di cui l’autore è ovviamente consapevole come si evince dai commenti).

Con questo arriviamo al secondo motivo di esemplarità che un esperimento come questo può sollevare. La tentazione di agire sull’aspetto grafico dei form è forte, ma i rischi connessi sono tanti e non trascurabili.

Per la cronaca, scorrendo la lista dei commenti si scopre che: qualcosa di simile era stato già creato e che sul sito di Disney UK è stato in qualche modo risolto il problema del feedback visuale rispetto al nome e al percorso del file. Si parta da questa pagina e si selezioni dalla tendina in basso l’opzione ‘Technical question’, per poi provare a inviare un file usando il pulsante ‘Browse’ (che è un input di tipo file racchiuso però da uno span).

Tags:

Categoria: Scripting | Permalink

Commenti

1

Vado un attimo OT: perchè il tizio che ha fatto il sito ha usato un carattere del genere (ovvero “Helvetica Neue”, Helvetica, Arial, sans-serif)?
Ho capito che su safari o vista magari si vede bene, ma per chi usa win xp (la maggioranza) si vede veramente sgranato, od almeno io lo vedo così.
Chiudo l’OT.

# - postato da Alessio Michelini - 12 Settembre 2007 - 12:31

2

per altro la soluzione della disney è parzialmente compatibile anche con opera, il quale non mostra tutto il percorso del file ma solo il nome. però almeno funziona, che è già qualcosa.

# - postato da smal - 12 Settembre 2007 - 12:48

3

Preferisco anche io la soluzione adottata dalla Disney che permette di leggere il percorso del file selezionato.
@ Alessio: io il testo sul sito di Shaun lo leggo bene

# - postato da Extralife - 12 Settembre 2007 - 14:30

4

prova invio del form

# - postato da vincent - 10 Aprile 2009 - 17:53

Inserisci il tuo commento:





(puoi usare i seguenti tag HTML per formattare il testo -
a href, b, i, br/, p, strong, em, ul, ol, li, blockquote, pre):

 

Anteprima del commento