2008-11-06 9 views

Respuesta

31
  • ocultar el control real
  • Hecho un DIV con los controles y el estilo que desee en la parte superior de la misma

El botón no es un control HTML estándar.

Ver: http://www.quirksmode.org/dom/inputfile.html

+0

así que no hay forma de lograr esto usando el control nativo en sí mismo? – Larsenal

+0

He actualizado la respuesta. Ver: http://www.quirksmode.org/dom/inputfile.html –

+1

No es necesario usar opacity; simplemente puede delegar el clic en una pantalla: ningún elemento, mucho más simple y no tiene que tomar el tamaño de entrada (variable) en cuenta. –

22

lo que está mal con

<input type="file" size="50" .... /> 

? buscará mismo, excepto Safari en Mac supongo (en Mac, todos los controles de carga tiene un aspecto diferente, en todos los navegadores)

+1

ancho de entrada no hace nada. Quizás esté pensando en el tamaño de entrada, que sí cambia el ancho, pero no en unidades que puede estandarizar en todos los navegadores. – bobince

+0

sí, tienes razón, no presté atención :) –

+1

Esto funciona ... maneja Firefox ... mientras que el ancho de CSS apropiadamente maneja Chrome, IE, y Safari –

7

Además del tutorial quirksmode, aquí es otro buen recurso: http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom

Si eres ocultando el control real, recuerde que es muy importante establecer la opacidad del control a cero, y no usar realmente visibility: hidden. Hacer eso ocultará realmente el elemento, deshabilitando la acción de hacer clic.

Además, si está ocultando el control con un botón gráfico, tenga en cuenta que en algunos navegadores (Firefox e IE, creo), no podrá cambiar el tipo de cursor a una mano cuando sea sobre la parte de entrada de texto del control de archivo (siempre tendrá como valor predeterminado la entrada o el puntero normal sin enlace). Y sí, lo he intentado usando cursor: pointer (y cursor: hand).

Personalmente, he tenido problemas con los cuadros de carga personalizados, y no hay una bala de azúcar para que su apariencia o personalización sean perfectas. (especialmente con respecto al comportamiento del cursor, ya que considero que un UI trata de romper). Al final del día, creo que es más fácil aceptar que diferentes navegadores procesen el control de manera diferente, y así es como es.

Cuestiones relacionadas