那么,在技术上这是不可能得到:before
和:after
伪元素上工作input
元素
从W3C:
12.1:before和:after伪元素
作者使用:before和:after伪元素指定生成内容的样式和位置。顾名思义,:before和:after伪元素指定元素的文档树内容之前和之后的内容位置。“ content”属性与这些伪元素一起指定了要插入的内容。
所以我有一个项目,其中我以 input
标签某些原因,其他开发人员限制我使用<button>
标签,而不是通常的输入提交按钮,因此我想出了另一种解决方案,将按钮包装在一span
组中对position: relative;
,然后使用绝对定位图标:after
假。
注意:演示小提琴使用FontAwesome 3.2.1的内容代码,因此您可能需要相应地更改content
property 的值。
的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开发人员网络:
除了指示该元素不是鼠标事件的目标之外,该值none指示鼠标事件“通过”该元素并以该元素“之下”的对象为目标。
将鼠标悬停在心脏字体/图标上Demo,看看如果不使用会发生什么pointer-events: none;