Bueno, técnicamente no es posible obtener :beforey los :afterpseudo 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 inputetiquetas 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 spanconjunto a position: relative;y luego posicionar absolutamente el icono utilizando :afterseudo.
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 contentpropiedad 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 :aftercontenido 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;