2010-05-13 10 views
16

Traté de cambiar el formulario HTML, archivo de tipo de entrada. Aquí está mi código:¿Podemos cambiar <input type = "file"> style?

HTML, form id = forma

<input class="upload_file" type="file" id="file" name="file" /> 

.CSS

I tried both: 
.upload_button{ 
    background: url('../images/upload_btn_bg.png') no-repeat; 
    width: 200px; 
    height: 40px; 
} 

#form input[type=file]{ 
    background: url('../images/upload_btn_bg.png') no-repeat; 
    width: 200px; 
    height: 40px; 
} 

Ninguno de estos dos métodos funciona. Vi desde algún sitio web, como Facebook, youtube, google o twitter, tienen un estilo diferente. Me pregunto cómo lo hacen.

Respuesta

13

No se puede hacer nada con el tipo de archivo de entrada (que no sean enormes cortes). Sé que esto suena horrible, pero los estándares web todavía no han encontrado una solución para eso.

Lo que sugeriría, sin embargo, es que utilizó algo más flexible, como swfUpload, que le permite cambiar los montantes, y también verificar el tamaño del archivo antes de cargarlo.

Algunos ejemplos ordenadas de que se pueden encontrar here

la esperanza que esto le ayuda

+0

ah ... yo debería haber hecho esta pregunta antes aquí, en lugar de pasar horas de tiempo para depurarlo. Suspiro –

+4

Eso está bien. Todos hemos hecho eso :-) –

+0

tantos riesgos de seguridad con swf, pero está bien. – nagytech

0

En realidad, usted puede!

Tienes que hacerlo con la Biblioteca SI.Files.

Here es un buen artículo sobre como se hace en los detalles:

buena suerte!

1

Puede cambiar el tamaño de fuente para la altura o seguir esta url http://www.quirksmode.org/dom/inputfile.html (que es básicamente lo que hago en mis proyectos).

+0

¡Gracias! Probé la altura de la línea, pero eso no funciona. Parece que el estilo de tamaño de fuente en el tipo = "archivo" es la única manera de obtener botones altos. Puede ver el problema aquí http://jsfiddle.net/gabrieleromanato/mxq9R/ también el cursor se ve mal, tratando de solucionarlo a continuación. –

6

¿Por qué simplemente no pones el css en la pantalla: ninguno y luego disparas este botón con otro botón? Esto puede hacerse fácilmente con javascript y luego se puede estilizar el botón de sí mismo por completo

Aquí está un ejemplo de cómo activar un botón con otro, pero esto es sólo una de muchas formas: One button firing another buttons click event

-3

Bhee, sólo tiene que añadir las definiciones CSS para la etiqueta hTML de entrada:

como:

<select style:"...whatYoureadBelow..."></select> 

o

<input style:"...whatYoureadBelow..." /> 
definiciones

CSS:

border:none; 
background-image:url('somePathToImage'); 
background-repeat:no-repeat; 
//those things below adjust according to your background image size 
width:XXpx; 
height:XXpx; 

Así podrás conseguir lo que tiene en facebook o en otra parte;)

+0

Obviamente no leyó la pregunta que OP hizo ... – SteveB

9

mejor truco nunca.Entrada archivo HTML:

<input type="file" class="hide" id='inputFile' /> 
<a href="#" id="triggerFile" class="btn btn-primary">Browse File</a> 

usando jQuery:

$('#triggerFile').on('click', function(e){ 
     e.preventDefault() 
     $("#inputFile").trigger('click') 
    }); 
Cuestiones relacionadas