¿Por qué no hay un botón de carga de elemento de archivo elegante para Twitter Bootstrap? Sería bueno si el botón primario azul se implementara para el botón de carga. ¿Es posible incluso refinar el botón de carga usando CSS? (parece un elemento de navegador nativo que no puede ser manipulado)
css
forms
twitter-bootstrap
input-type-file
jkushner
fuente
fuente
Respuestas:
Aquí hay una solución para Bootstrap 3 y 4.
Para hacer un control de entrada de archivo funcional que se parezca a un botón, solo necesita HTML:
HTML
Esto funciona en todos los navegadores modernos, incluido IE9 +. Si también necesita soporte para IE antiguo, utilice el enfoque heredado que se muestra a continuación.
Esta técnica se basa en el
hidden
atributo HTML5 . Bootstrap 4 usa el siguiente CSS para calzar esta característica en navegadores que no son compatibles. Es posible que deba agregar si está utilizando Bootstrap 3.Enfoque heredado para IE antiguo
Si necesita soporte para IE8 y versiones inferiores, use el siguiente HTML / CSS:
HTML
CSS
Tenga en cuenta que el IE antiguo no activa la entrada del archivo cuando hace clic en un
<label>
, por lo que el "bloat" de CSS hace un par de cosas para evitarlo:<span>
Comentarios y lecturas adicionales
He publicado más detalles sobre este método, así como ejemplos de cómo mostrarle al usuario qué / cuántos archivos están seleccionados:
http://www.abeautifulsite.net/whipping-file-inputs-into-shape-with-bootstrap-3/
fuente
<label>
elemento. Como la mejor solución :)Me sorprende que no se mencionara el
<label>
elemento.Solución:
No hay necesidad de ningún JS o css funky ...
Solución para incluir el nombre del archivo:
La solución anterior requiere jQuery.
fuente
for
si está envolviendo el elemento de destino con la etiqueta.Sin necesidad de un complemento adicional, esta solución de arranque funciona muy bien para mí:
manifestación:
http://jsfiddle.net/haisumbhatti/cAXFA/1/ (bootstrap 2)
http://jsfiddle.net/haisumbhatti/y3xyU/ (bootstrap 3)
fuente
Está incluido en el tenedor de arranque de Jasny.
Se puede crear un botón de carga simple usando
Con el complemento de carga de archivos puede crear widgets más avanzados. Echa un vistazo a http://jasny.github.io/bootstrap/javascript/#fileinput
fuente
Los botones de carga son difíciles de aplicar porque dan estilo a la entrada y no al botón.
pero puedes usar este truco:
http://www.quirksmode.org/dom/inputfile.html
Resumen:
Tome un normal
<input type="file">
y póngalo en un elemento conposition: relative
.Para este mismo elemento padre, agregue una imagen normal
<input>
y otra, que tengan los estilos correctos. Coloque estos elementos absolutamente, de modo que ocupen el mismo lugar que el<input type="file">
.Establezca el índice z de
<input type="file">
a 2 para que quede encima de la entrada / imagen con estilo.Finalmente, establezca la opacidad de
<input type="file">
0. El<input type="file">
ahora se vuelve efectivamente invisible y los estilos de entrada / imagen brillan, pero aún puede hacer clic en el botón "Examinar". Si el botón se coloca en la parte superior de la imagen, el usuario parece hacer clic en la imagen y obtiene la ventana normal de selección de archivos. (Tenga en cuenta que no puede usar la visibilidad: oculto, porque un elemento verdaderamente invisible tampoco se puede hacer clic y necesitamos que se pueda hacer clic)fuente
Funciona para mi:
Actualizar
Estilo del complemento jQuery :
fuente
Respuesta simplificada usando partes de otras respuestas, principalmente user2309766 y dotcomsuperstar.
caracteristicas:
split
para eliminar la ruta del archivo utiliza expresiones regulares y delimitadores '\' y '/'.Código:
fuente
Con algo de inspiración de otras publicaciones anteriores, aquí hay una solución completa que combina lo que parece un campo de control de formulario con un complemento de grupo de entrada para un widget de entrada de archivo limpio que incluye un enlace al archivo actual.
fuente
Esto funciona perfectamente para mi
fuente
Por favor, consulte la entrada de archivo Bootstrap de Twitter . Utiliza una solución muy simple, solo agregue un archivo javascript y pegue el siguiente código:
fuente
Una solución simple con un resultado aceptable:
Y el estilo:
fuente
Solución para carga múltiple
Modifiqué dos respuestas anteriores para incluir múltiples cargas. De esta forma, la etiqueta muestra el nombre del archivo, si solo se selecciona uno, o
x files
en el caso contrario.También puede aplicarse para cambiar el texto del botón y la clase.
fuente
He creado un botón de carga personalizado para aceptar solo imágenes, que pueden modificarse según sus requisitos.
¡¡Espero que esto ayude!! :)
(Marco Bootstrap usado)
Codepen-link
HTML
CSS
JS
fuente
Este es el mejor estilo de carga de archivos que me gusta:
puedes obtener demo y más estilos en:
http://www.jasny.net/bootstrap/javascript/#fileinput
pero con esto, debe reemplazar el programa de arranque de twitter con archivos de arranque de jasny.
Saludos.
fuente
Basado en la solución absolutamente brillante de @claviska, a quien se le debe todo el crédito.
Entrada de archivo Bootstrap 4 con todas las funciones con validación y texto de ayuda.
Según el ejemplo del grupo de entrada , tenemos un campo de texto de entrada ficticio utilizado para mostrar el nombre de archivo al usuario, que se completa desde el
onchange
evento en el campo del archivo de entrada real oculto detrás del botón de etiqueta. Además de incluir la validación bootstrap 4 soporte de , también hemos hecho posible hacer clic en cualquier lugar de la entrada para abrir el cuadro de diálogo del archivo.Tres estados de la entrada del archivo
Los tres estados posibles no están validados, son válidos e inválidos con el
required
conjunto de atributos de etiqueta de entrada html ficticia .Marcado HTML para la entrada
Introducimos solo 2 clases personalizadas
input-file-dummy
yinput-file-btn
para diseñar y conectar correctamente el comportamiento deseado. Todo lo demás es el marcado estándar de Bootstrap 4.Disposiciones de comportamiento de JavaScript
La entrada ficticia debe ser de solo lectura, según el ejemplo original, para evitar que el usuario cambie la entrada que solo se puede cambiar a través del diálogo de abrir archivo. Desafortunadamente, la validación no ocurre en los
readonly
campos, por lo que alternamos la editabilidad de la entrada en foco y desenfoque ( eventos jqueryonfocusin
yonfocusout
) y nos aseguramos de que se vuelva a validar una vez que se selecciona un archivo.Además de hacer que se pueda hacer clic en el campo de texto, al activar el evento de clic del botón, @claviska imaginó el resto de la funcionalidad de llenar el campo ficticio.
Ajustes de estilo personalizados
Lo más importante es que no queremos que el
readonly
campo salte entre el fondo gris y el blanco, por lo que nos aseguramos de que permanezca en blanco. El botón span no tiene un cursor de puntero, pero debemos agregar uno para la entrada de todos modos.nJoy!
fuente
Yo uso http://gregpike.net/demos/bootstrap-file-input/demo.html :
o
fuente
/ * * Bootstrap 3 filestyle * http://dev.tudosobreweb.com.br/bootstrap-filestyle/ * * Copyright (c) 2013 Markus Vinicius da Silva Lima * Actualizar bootstrap 3 por Paulo Henrique Foxer * Versión 2.0.0 * Con licencia bajo la licencia MIT. * * /
fuente
Modifiqué la respuesta de @claviska y funciona como me gusta (Bootstrap 3, 4 no probado):
fuente
El siguiente código hace como arriba la imagen
HTML
Javascript
fuente
Tengo el mismo problema y lo intento así.
El CSS
El JS
Espero que hayas encontrado la mejor solución ...
fuente
Intenta seguir en Bootstrap v.3.3.4
fuente
Aquí hay un truco alternativo, no es la mejor solución, pero solo te da una opción
Código HTML:
Javascript:
fuente
Con respecto a la respuesta de claviska: si desea mostrar el nombre del archivo cargado en una carga básica de archivos, puede hacerlo en el
onchange
evento de entradas . Solo usa este código:Este código jquery JS es responsable de recuperar el nombre del archivo cargado:
O con vainilla JS:
fuente
Pensé agregar mi valor de tres peniques, solo para decir cómo la entrada predeterminada
.custom-file-label
y elcustom-file-input
archivo BS4 y cómo se puede usar.La última clase está en el grupo de entrada y no es visible. Mientras que la primera es la etiqueta visible y tiene un pseudoelemento después de que se parece a un botón.
No puede agregar clases a psuedoelements, pero puede diseñarlas en CSS (o SASS).
fuente
No se requiere shiz elegante:
HTML:
JS:
PRECAUCIÓN: Los tres elementos de formulario en cuestión DEBEN ser hermanos entre sí (.image-file-elegido, .image-file-button, .image-file)
fuente
http://markusslima.github.io/bootstrap-filestyle/
O
fuente