2012-02-05 36 views
7

Sto lavorando con il file di input per lo styling con il metodo opacity - il pulsante del file di input reale ha l'opacità 0 e di fronte ad esso, l'uso di z-index è un altro input (con opacità: 1). Purtroppo desidero che il mio pulsante visibile sia un'immagine quadrata (larghezza: altezza: 1: 1) - e il file di input non visibile è sempre rettangolare (casella di input e casella di selezione con proporzioni di circa 1:10). La domanda è: come ridimensionare il pulsante di input file per essere squadrato (o qualsiasi dimensione) per rendere cliccabile l'intera area del pulsante visibile (perché solo facendo clic sul pulsante invisibile si apre la finestra del browser). Ora solo una parte del pulsante visibile è "cliccabile".Come modificare la dimensione del pulsante del file di input?

CSS:

<style type="text/css"> 
    .upload { 
     position:relative; 
    width:100px; 
    } 

    .realupload { 
    position:absolute; 
    top:0; 
    right:0; 
    opacity:0.5; 
    -moz-opacity:0.5; 
    filter:alpha(opacity:0.5); 
    z-index:2; 
    width:100px; 
    } 

    form .fakeupload { 
    background: url(images/bglines.png); 
    } 

    form .fakeupload input { 
    width:0px; 
    } 

    </style> 

e HTML:

<form> 
    <li class="upload"> 
    <div class="fakeupload"> 
     <input type="text" name="fakeupload" style="opacity: 0;"/> 
    </div> 
    <input type="file" name="upload" id="realupload" class="realupload" onchange="this.form.fakeupload.value = this.value;" style="font-size: 5px;" /> 
    </li> 
    </form> 
+0

Perché stai posizionando un campo di inserimento testo parte superiore del campo di immissione del file? Questo forse il tuo problema. – Scott

+0

cambiare posto di input non fa differenza :( – Kalreg

risposta

-1

utilizzare il tipo di ingresso "immagine"?

Altrimenti dovrete essere sicuri di impostare il display: parametro di blocco sul pulsante di ingresso.

+0

sto facendo funzionare i file di caricamento con "file di input" quindi suppongo che "immagine di input" non mi aiuti. non funziona per me, anche se potrei fare qualcosa di sbagliato.Se hai qualche idea di soluzione con display: blocco, apprezzerei qualche esempio di codice sorgente. – Kalreg

+0

"Immagine" è un modo per sostituire il pulsante di invio, non il file input – Rafael

0

È possibile che l'HTML malformato sia il problema. - Non puoi avere tag modulo al di fuori dei tag li.

Questo sembra funzionare bene per me ..... Demo here

+0

Sì, funziona ma non risolve il problema. Controlla questo: [link ] (http://jsfiddle.net/a4Jtz/4/) - Voglio un'intera area rossa per causare l'effetto click e iniziare a sfogliare i file.Parte particolarmente a sinistra del pulsante 'file di input' (input del percorso). L'idea migliore che ho per ora è quella di fare non un input di file ma per esempio 3 file input uno sotto l'altro per rendere cliccabile l'area quadrata .. – Kalreg

+0

Spiacente, non vedo il tuo problema qui. L'intera area legge il clic. – Scott

+0

Strano - per me solo l'area 'file di input' causa l'effetto di navigazione (con trasparenza). L'area rossa senza file di input trasparente mentre si fa clic non fa nulla. Io uso Firefox 10.0 - forse questo è il problema che abbiamo diversi browser? – Kalreg

10

Abbiamo avuto un caso simile.

Non è super elegante, ma invece di mettere in ingresso di file multipli si può provare come segue:

  • aumentato il font-size dell'ingresso per aumentare la larghezza del pulsante
  • impostare il genitore elemento rispetto overflow: hidden
  • (opzionale) Impostare l'altezza al 100%

Come nel demo here (basato sulla demo di Scott)

funziona solo su Firefox

+0

Il CSS funziona anche con IE8! Grande suggerimento. – kernel

0

Per accorciare il tipo di file di input pulsante area cliccabile si può provare a usare questo:

form .fakeupload input { 
    width:20px; 
    transform: scale(0.23,1); 
} 

Questo restringerà l'area cliccabile del file del tipo di input. (Puoi usare transform: scale (x, y) - con xey è il numero che si adatta alle tue necessità Ricorda di aggiungere uno stile adeguato per dispositivi mobili o browser diversi

Problemi correlati