@IvanSokalskiy Eso supone que alguien está usando Bootstrap. ¡No todos los que se encuentren con esto usarán Bootstrap!
Barry Michael Doyle
Respuestas:
394
El sitio que vinculó utiliza una combinación de trucos CSS para lograr esto. Primero, usa una imagen de fondo para el <input>elemento. Luego, para empujar el cursor, utiliza padding-left.
¿Podría describir más sobre los parámetros superior e izquierdo (7px 7 px) y otros atributos? Eso debe ser útil.
QMaster
262
Consejo: deje de usar y apoyar IE 8.
un codificador
3
¿Cómo puedo alinear la imagen con el extremo derecho del campo de entrada?
ishanbakshi
3
El problema con las imágenes de fondo es que el autocompletado de Chrome elimina la imagen de fondo y hace que el fondo se vuelva completamente amarillo
Cătălin Rădoi
1
Para alinearse con el uso correcto: background-position: right;
Raison
52
Las soluciones CSS publicadas por otros son la mejor manera de lograr esto.
Si eso le causa algún problema (lea IE6), también puede usar una entrada sin bordes dentro de un div.
Una buena adición a esta respuesta. a veces es decir, da problemas y esta es una buena manera de resolver uno de ellos. funcionó para mí, aunque con un lapso en su lugar.
Ross
¡Buena manera de agregar estructuras más complejas dentro de las entradas!
jonhue
@ Jonhue, no recomendaría esto a menos que todavía vivas en la década anterior y necesites soportar IE6. Incluso entonces, no lo llamaría "limpio".
harpo
@harpo ¿Cómo incluirías enlaces dentro de las entradas?
Estoy apoyando la sangría de texto porque el relleno izquierdo aumentará el ancho del campo y se desbordará del elemento principal.
Kostiantyn
1
¿por qué pusiste el estilo en línea en lugar de en el #icon css?
Wylliam Judd
@WylliamJudd Eso es solo para fines de demostración :)
Rust
¿Por qué usaste id en lugar de clase?
Majid Savalanpour
9
Una manera simple y fácil de colocar un icono dentro de una entrada es usar la propiedad de posición CSS como se muestra en el código a continuación. Nota: he simplificado el código por motivos de claridad.
Cree el contenedor que rodea la entrada y el ícono.
Establecer la posición del contenedor como relativa
Establezca el icono como posición absoluta. Esto posicionará el icono en relación con el contenedor circundante.
Use arriba, izquierda, abajo, derecha para colocar el icono en el contenedor.
Establezca el relleno dentro de la entrada para que el texto no se superponga con el icono.
Limpio y simple, sí. También debe eliminar el borde de entrada con input { border: none; }y agregar el borde para #input-container { border: 1px solid #000; }que parezca que la imagen está dentro y es parte de la entrada.
Mario Werner
1
@MarioWerner empujó la imagen dentro de la entrada, no es necesario hacer hacks de borde, esa es la belleza. Voy a usar la idea.
input.valid {border-color:#28a745;padding-right:30px;background-image:url('https://www.stephenwadechryslerdodgejeep.com/wp-content/plugins/pm-motors-plugin/modules/vehicle_save/images/check.png');background-repeat: no-repeat;background-size:20px20px;background-position: right center;}
Tuve una situación como esta. No funcionó por eso background: #ebebeb;. Quería poner el fondo en el campo de entrada y esa propiedad se mostraba constantemente en la parte superior de la imagen de fondo, ¡y no podía ver la imagen! Entonces, moví la backgroundpropiedad para que esté por encima de la background-imagepropiedad y funcionó.
Esto es muy antiguo y espero que hayas aprendido desde hace más de un año, pero backgroundes un nombre de propiedad abreviado que usas para cubrir todas las propiedades de fondo a la vez: background: [color] [image url] [repeat] [position]y es por eso que tu color estaba sobrescribiendo todo. También podría haberlo dejado en su lugar y renombrar la propiedad abackground-color
borbulon
@borbulon sí, tienes razón. casi siempre es mejor usar el nombre abreviado de la propiedad, totalmente de acuerdo en eso. Pero el propósito de esta publicación es señalar que el orden de las propiedades a veces es importante, y esas reglas CSS 'pequeñas' pueden ser muy frustrantes, especialmente para los recién llegados en desarrollo.
fantja
1
Totalmente de acuerdo, pero el punto sigue en pie: backgroundes un nombre de propiedad abreviado. Una solución mejor hubiera sido no usar la taquigrafía, sino usarla background-colorpara la propiedad de color (suponiendo que desea tanto un color como una imagen).
Respuestas:
El sitio que vinculó utiliza una combinación de trucos CSS para lograr esto. Primero, usa una imagen de fondo para el
<input>
elemento. Luego, para empujar el cursor, utilizapadding-left
.En otras palabras, tienen estas dos reglas CSS:
fuente
Las soluciones CSS publicadas por otros son la mejor manera de lograr esto.
Si eso le causa algún problema (lea IE6), también puede usar una entrada sin bordes dentro de un div.
No como "limpio", pero debería funcionar en navegadores antiguos.
fuente
Una solución sin imágenes de fondo:
fuente
Puedes probar esto:
fuente
Me parece la mejor y más limpia solución. Usar sangría de texto en el
input
elementoCSS:
HTML:
fuente
Una manera simple y fácil de colocar un icono dentro de una entrada es usar la propiedad de posición CSS como se muestra en el código a continuación. Nota: he simplificado el código por motivos de claridad.
fuente
input { border: none; }
y agregar el borde para#input-container { border: 1px solid #000; }
que parezca que la imagen está dentro y es parte de la entrada.agregue las etiquetas anteriores en su archivo CSS y use la clase especificada.
fuente
Esto funciona para mi:
fuente
Puede probar esto: Bootstrap-4 Beta
https://www.codeply.com/go/W25zyByhec
fuente
Simplemente use la propiedad de fondo en su CSS.
fuente
Tuve una situación como esta. No funcionó por eso
background: #ebebeb;
. Quería poner el fondo en el campo de entrada y esa propiedad se mostraba constantemente en la parte superior de la imagen de fondo, ¡y no podía ver la imagen! Entonces, moví labackground
propiedad para que esté por encima de labackground-image
propiedad y funcionó.La solución para mi caso fue:
Solo por mencionar,
border
,padding
ytext-align
propiedades no son importantes para la solución. Acabo de replicar mi código original.fuente
background
es un nombre de propiedad abreviado que usas para cubrir todas las propiedades de fondo a la vez:background: [color] [image url] [repeat] [position]
y es por eso que tu color estaba sobrescribiendo todo. También podría haberlo dejado en su lugar y renombrar la propiedad abackground-color
background
es un nombre de propiedad abreviado. Una solución mejor hubiera sido no usar la taquigrafía, sino usarlabackground-color
para la propiedad de color (suponiendo que desea tanto un color como una imagen).Utilizando con font-icon
O
fuente
use esta clase css para su entrada al inicio, luego personalícela en consecuencia:
fuente
Por ejemplo, puede usar esto: etiqueta con entrada oculta (el icono está presente).
fuente
Esto funciona para mí para formas más o menos estándar:
fuente