¿Es posible cambiar la apariencia de <input type="file">
?
html
css
file-upload
input
Codificador novato
fuente
fuente
Respuestas:
No puede modificar mucho sobre el
input[type=file]
control en sí.Como hacer clic en un
label
elemento emparejado correctamente con una entrada lo activará / enfocará, podemos usar alabel
para activar el diálogo de exploración del sistema operativo.Aquí sabrás como podrás hacerlo…
El CSS para el control de formulario lo hará parecer invisible y no ocupará espacio en el diseño del documento, pero seguirá existiendo para que pueda activarse a través de
label
.Si desea mostrar la ruta elegida por el usuario después de la selección, puede escuchar el
change
evento con JavaScript y luego leer la ruta que el navegador pone a su disposición (por razones de seguridad, puede mentirle sobre la ruta exacta). Una manera de hacerlo bonito para el usuario final es simplemente usar el nombre base de la ruta que se devuelve (para que el usuario simplemente vea el nombre de archivo elegido).Hay una gran guía de Tympanus para diseñar esto.
fuente
#container { position: relative; width: ...px; height: ...px; overflow: hidden; } #input { position: absolute; right: 0; font-size: <many a>px; opacity: 0; margin: 0; padding: 0; border: none; }
<label>
(como lo muestra Tympanus) es mucho más semántico y menos hacky. Además, esta pregunta se hizo nuevamente unos años más tarde y tiene respuestas mucho mejores allí: estilo personalizado de navegador cruzado para el botón de carga de archivos .¿Algo así quizás?
fuente
display: none
eliminará la entrada del orden de tabulación, haciendo que la página sea menos accesible. El uso<label>
(como lo muestra Tympanus) es mucho más semántico y menos hacky. Además, esta pregunta se hizo nuevamente unos años más tarde y tiene respuestas mucho mejores allí: estilo personalizado de navegador cruzado para el botón de carga de archivos .¿Por qué no? ^ _ ^
Mira el ejemplo aquí
fuente
<label>
(como lo muestra Tympanus) es una solución semánticamente correcta. Además, esta pregunta se hizo nuevamente unos años más tarde y tiene respuestas mucho mejores allí: estilo personalizado de navegador cruzado para el botón de carga de archivos .Si está utilizando bootstrap aquí hay una mejor solución:
Para IE8 y versiones posteriores http://www.abeautifulsite.net/whipping-file-inputs-into-shape-with-bootstrap-3/
Fuente: https://stackoverflow.com/a/18164555/625952
fuente
La manera más fácil..
fuente
En webkit puedes probar esto ...
fuente
en primer lugar es un contenedor:
El segundo, es un estilo CSS, si desea una mayor personalización, solo mantener los ojos abiertos :)
Este ejemplo no tiene estilo para el texto dentro del botón, depende del tamaño de la fuente, solo corrija los valores de altura y relleno del contenedor
fuente
right: 0
, en lugar deleft: 0
? De esa manera, tendría el cuadro de texto de ie fuera del contenedor. Al hacer clic en el cuadro de texto no se abre el cuadro de diálogo Seleccionar archivo. Además, creo que hacer que el archivo de entrada sea grandefont-size
es una idea mucho mejor que usarwidth
yheight
.El truco es ocultar la entrada y personalizar la etiqueta.
HTML:
CSS:
JS:
Puede consultar este ejemplo: https://jsfiddle.net/rjurado/hnf0zhy1/4/
fuente
Es mucho mejor si solo usa
<label>
, oculta<input>
y personaliza la etiqueta.HTML:
CSS:
fuente
display: none
eliminará el elemento del orden de tabulación. Usar<label>
(como lo muestra Tympanus) es la forma semánticamente correcta, pero necesita algunos refinamientos. Además, esta pregunta se hizo nuevamente unos años más tarde y tiene respuestas mucho mejores allí: estilo personalizado de navegador cruzado para el botón de carga de archivos .para mostrar la ruta del archivo seleccionado, puede probar esto en html:
y en javascript:
y estilo:
fuente
Ejemplo de Bootstrap
fuente
Fui por esta opción que aclara cómo personalizar completamente el botón de exploración al incluir un controlador del nombre del archivo cargado, también personalizado. Agrega campos adicionales y controles del lado del cliente en ellos solo para mostrar cómo incluir la exploración en una forma "real", no solo independiente.
Aquí está el codepen: http://codepen.io/emiemi/pen/zxNXWR
JS:
HTML:
fuente
Aquí hay una forma que me gusta porque hace que la entrada llene todo el contenedor. El truco es el "tamaño de fuente: 100 px", y debe ir con el "desbordamiento: oculto" y la posición relativa.
fuente
position: absolute; right: 0; font-size: <many>px;
Puede diseñarlos, pero no puede eliminar los elementos que ya están allí. Si eres creativo, puedes trabajar con eso y hacer algo como esto:
http://jsfiddle.net/zr1x1m2b/1/
Te sugiero que juegues con este código, elimines líneas, agregues el tuyo, ¡hagas lo que sea hasta que obtengas algo que se vea como te gusta!
fuente
<label>
(como lo muestra Tympanus) es semántico y ofrece una personalización completa. Además, esta pregunta se hizo nuevamente unos años más tarde y tiene respuestas mucho mejores allí: estilo personalizado de navegador cruzado para el botón de carga de archivos .Simplemente diseñe un botón normal como desee, utilizando su CSS favorito.
Luego llame a una función JS simple para crear y vincular un elemento de entrada oculto a su botón con estilo. No agregue CSS específico del navegador para hacer la parte oculta.
Observe cómo el código anterior lo vuelve a vincular cada vez que el usuario elige un archivo. Esto es importante porque "onchange" solo se llama si el usuario cambia el nombre del archivo. Pero probablemente desee obtener el archivo cada vez que el usuario lo proporcione.
Para más detalles, investigue las subidas de DropZone y gmail.
fuente
Esta es mi carga / archivo de archivos cliente completamente funcional usando jquery y javascript (Visual studio). ¡Esto será útil!
¡El código estará disponible en la sección de comentarios!
Enlace: https://youtu.be/It38OzMAeig
Disfruta :)
fuente
Aquí hay una solución rápida de CSS puro (funciona en Chrome y tiene una alternativa FireFox incluida), que incluye el nombre del archivo, una etiqueta y un botón de carga personalizado, hace lo que debería: ¡no necesita JavaScript en absoluto! 🎉
Nota: ☝ Esto funciona en Chrome y tiene una alternativa de FireFox; de todos modos, no lo usaría en un sitio web del mundo real, si la compatibilidad del navegador es algo para usted (lo que debería ser). Entonces es más tipo de experimental.
fuente
Aquí hay una manera que descubrí recientemente, con un poco de jQuery
Código HTML:
Para la parte javascript / jQuery:
En este ejemplo, he puesto una etiqueta "ancla" para activar la carga del archivo. Puede reemplazarlo con lo que desee, solo recuerde poner el atributo "onclick" con la función adecuada.
¡Espero que esto ayude!
PD: no olvide incluir jQuery de CDN o cualquier otra fuente
fuente
display: none
eliminará la entrada del orden de tabulación. El uso<label>
(como lo muestra Tympanus) es mucho más semántico y menos hacky. Además, esta pregunta se hizo nuevamente unos años más tarde y tiene respuestas mucho mejores allí: estilo personalizado de navegador cruzado para el botón de carga de archivos .