No cóż, technicznie nie jest możliwe uzyskanie :beforei :afterpseudoelementy działają na inputelementach
Z W3C :
12.1: Przed i po pseudoelementach
Autorzy określają styl i lokalizację generowanej treści za pomocą pseudoelementów: before i: after. Jak wskazują ich nazwy, pseudoelementy: before i: after określają lokalizację zawartości przed i po zawartości drzewa dokumentu elementu. Właściwość „content” w połączeniu z tymi pseudoelementami określa, co zostanie wstawione.
Miałem więc projekt, w którym miałem przyciski przesyłania w postaci inputtagów iz jakiegoś powodu inni programiści ograniczyli mnie do używania <button>tagów zamiast zwykłych przycisków wprowadzania, więc wpadłem na inne rozwiązanie, polegające na zawijaniu przycisków w spanzestawie do position: relative;i całkowicie pozycjonowania ikonę za pomocą :afterpseudo.
Uwaga: skrzypce demonstracyjne używa kodu zawartości dla FontAwesome 3.2.1, więc może być konieczna odpowiednia zmiana wartości contentwłaściwości.
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
Teraz wszystko tutaj jest zrozumiałe, dotyczy jednej właściwości, tzn. pointer-events: none;Użyłem tego, ponieważ po najechaniu kursorem na :afterpseudo wygenerowaną treść przycisk nie kliknie, więc użycie wartości nonezmusi akcję kliknięcia do przejścia przez tę treść .
Z sieci deweloperów Mozilla :
Oprócz wskazania, że element nie jest celem zdarzeń myszy, wartość none instruuje, aby zdarzenie myszy „przechodziło” przez element i kierowało na obiekt znajdujący się „pod” tym elementem.
Najedź kursorem na ikonę / czcionkę serca Demoi zobacz, co się stanie, jeśli NIE użyjeszpointer-events: none;