Bueno, técnicamente no es posible obtener :before
y los :after
pseudo elementos funcionaninput
elementos
De W3C :
12.1 Los pseudoelementos antes y después:
Los autores especifican el estilo y la ubicación del contenido generado con los pseudoelementos antes y después. Como indican sus nombres, los pseudoelementos: before y: after especifican la ubicación del contenido antes y después del contenido del árbol de documentos de un elemento. La propiedad 'contenido', junto con estos pseudo-elementos, especifica lo que se inserta.
Así que tuve un proyecto en el que tenía botones de envío en forma de input
etiquetas y, por alguna razón, los otros desarrolladores me restringieron a usar <button>
etiquetas en lugar de los botones de envío de entrada habituales, así que se me ocurrió otra solución, envolver los botones dentro de un span
conjunto a position: relative;
y luego posicionar absolutamente el icono utilizando :after
seudo.
Nota: El violín de demostración utiliza el código de contenido para FontAwesome 3.2.1, por lo que es posible que deba cambiar el valor de la content
propiedad en consecuencia.
HTML
<span><input type="submit" value="Send" class="btn btn-default" /></span>
CSS
input[type="submit"] {
margin: 10px;
padding-right: 30px;
}
span {
position: relative;
}
span:after {
font-family: FontAwesome;
content: "\f004"; /* Value may need to be changed in newer version of font awesome*/
font-size: 13px;
position: absolute;
right: 20px;
top: 1px;
pointer-events: none;
}
Demo
Ahora aquí todo se explica por sí mismo, sobre una propiedad pointer-events: none;
, es decir , la he usado porque al pasar el cursor sobre el :after
contenido pseudogenerado, su botón no hará clic, por lo que usar el valor denone
forzará la acción de clic para pasar a través de ese contenido .
Desde la red de desarrolladores de Mozilla :
Además de indicar que el elemento no es el objetivo de los eventos del mouse, el valor none indica al evento del mouse que "atraviese" el elemento y apunte a lo que esté "debajo" de ese elemento.
Pase el mouse sobre la fuente / ícono del corazón Demoy vea qué sucede si NO usapointer-events: none;