Como mucha gente, me gustaría personalizar lo feo input type=file
, y sé que no se puede hacer sin algunos trucos y / o javascript
. Pero, el caso es que en mi caso los botones de carga de archivos son solo para cargar imágenes ( jpeg | jpg | png | gif ), así que me preguntaba si podría usar un "clickable
" imagen que actuaría exactamente como un archivo de tipo de entrada ( mostrar el cuadro de diálogo y el mismo $ _FILE en la página enviada).
Encontré una solución alternativa aquí , y esta también interesante (pero no funciona en Chrome = /).
¿Qué hacen ustedes cuando quieren agregar algo de estilo a los botones de sus archivos? Si tiene algún punto de vista al respecto, simplemente presione el botón de respuesta;)
Respuestas:
Esto funciona muy bien para mí:
Básicamente, el atributo for de la etiqueta hace que hacer clic en la etiqueta sea lo mismo que hacer clic en la entrada especificada .
Además, la propiedad de visualización establecida en none hace que la entrada del archivo no se procese en absoluto, ocultándola de forma agradable y limpia.
Probado en Chrome, pero según la web debería funcionar en todos los navegadores principales. :)
EDITAR: JSFiddle agregado aquí: https://jsfiddle.net/c5s42vdz/
fuente
En realidad, se puede hacer en CSS puro y es bastante fácil ...
código HTML
Estilos CSS
La idea es colocar la entrada absolutamente dentro de su etiqueta. establezca el tamaño de fuente de la entrada en algo grande, lo que aumentará el tamaño del botón "examinar". Luego se necesita algo de prueba y error usando las propiedades negativas izquierda / superior para colocar el botón de búsqueda de entrada detrás de su etiqueta.
Al colocar el botón, configure el alfa en 1. Cuando haya terminado, vuelva a configurarlo en 0 (¡para que pueda ver lo que está haciendo!)
Asegúrese de probar en todos los navegadores porque todos mostrarán el botón de entrada con un tamaño ligeramente diferente.
fuente
Gran solución de @hardsetting, pero hice algunas mejoras para que funcione con Safari (5.1.7) en Windows
He utilizado
visibility: hidden, width:0
en lugar dedisplay: none
para el tema de safari y añadidopointer-events: none
enimg
la etiqueta para que sea trabajando si el tipo de archivo de entrada está en la etiqueta etiqueta FORM.Parece que me funciona en todos los navegadores principales.
Espero que ayude a alguien.
fuente
Me gustaría utilizar SWFUpload o Uploadify . Necesitan Flash pero hacen todo lo que quieran sin problemas.
Cualquier
<input type="file">
solución alternativa que intente activar el cuadro de diálogo "abrir archivo" por medios distintos de hacer clic en el control real podría eliminarse de los navegadores por razones de seguridad en cualquier momento. (Creo que en las versiones actuales de FF e IE, ya no es posible activar ese evento mediante programación).fuente
Este es mi método si entiendo tu punto
HTML
jQuery
fuente
es realmente simple, puedes probar esto:
fuente
En su lugar, puede poner una imagen y hacerlo así:
HTML:
JQuery:
AVISO : En IE9 e IE10, si activa el clic en la entrada de un archivo a través de javascript, el formulario se marca como 'peligroso' y no se puede enviar con javascript, no estoy seguro de si se puede enviar tradicionalmente.
fuente
La entrada en sí está oculta con visibilidad CSS: oculta.
Entonces puede tener cualquier elemento que desee - ancla o imagen ..., cuando se hace clic en el ancla / imagen, active un clic en el campo de entrada oculto - aparecerá el cuadro de diálogo para seleccionar un archivo.
EDITAR: En realidad funciona en Chrome y Safari, acabo de notar que no es el caso en FF4Beta
fuente
Código de trabajo:
simplemente oculta la parte de entrada y haz esto.
fuente
EJECUTAR SNIPPET o simplemente copie el código anterior y ejecútelo. Obtendrás lo que querías. Muy simple y efectivo sin javascript. ¡¡¡Disfrutar!!!
fuente
He tenido muchos problemas con entradas ocultas y no visibles durante la última década, a veces las cosas son mucho más simples de lo que pensamos.
He tenido un pequeño deseo con IE 5,6,7,8 y 9 de no admitir la opacidad y, por lo tanto, la entrada del archivo cubriría la imagen de carga, sin embargo, el siguiente código css ha resuelto el problema.
El siguiente recorte se prueba en Chrome, IE 5,6,7,8,9,10, el único problema en IE 5 es que no admite el margen automático.
Ejecute el fragmento, simplemente copie y pegue el CSS y HTML modifique el tamaño a su gusto.
fuente