Ну, технічно неможливо отримати, :before
а :after
псевдоелементи працюють над input
елементами
Від W3C :
12.1 Псевдоелементи: до і після
Автори визначають стиль та розташування створеного контенту за допомогою: перед та: після псевдоелементів. Як вказують їх назви, псевдоелементи: до та: після вказують розташування вмісту до та після вмісту дерева документа. Властивість "content" спільно з цими псевдоелементами визначає, що вставлено.
Тож у мене був проект, де я мав кнопки для надсилання у вигляді input
тегів, і чомусь інші розробники обмежили мене використовувати <button>
теги замість звичайних кнопок подачі вводу, тож я придумав інше рішення - обгортати кнопки всередині span
набору до, position: relative;
а потім абсолютно позиціонувати піктограму за допомогою :after
псевдо.
Примітка. Демонстраційна скрипка використовує код вмісту для FontAwesome 3.2.1, тому вам може знадобитися відповідно змінити значення content
властивості.
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
Тепер тут все само собою пояснюється, про одну властивість, тобто pointer-events: none;
я використав це, тому що, якщо навести курсор на :after
псевдогенерований вміст, ваша кнопка не буде натискати, тому використання значення " none
сила" змусить дію клацання пройти через цей вміст .
Від мережі розробників Mozilla :
Крім вказівки на те, що елемент не є ціллю подій миші, значення жодне не вказує події миші пройти "через" елемент і націлити все, що знаходиться "під ним".
Наведіть курсор / піктограму серця Demoі подивіться, що станеться, якщо ви НЕ використовуєтеpointer-events: none;