对于 Font Awesome 5,我发现我需要稍微更新 Ashley 的答案,方法是删除内联样式并将 fas(Font Awesome solid)类(或您的图标具有的任何一个)添加到输入像这样:
@Html.TextBoxFor(m => m.Email, new { @class = "form-control fas", @placeholder = "\uf0e0 Email Address" })
话虽如此,我还没有弄清楚如何使用这种方法更改文本的字体样式,并且我被占位符文本的粗衬线字体困住了。
更新:
要在文本输入中包含一个很棒的字体图标并保持占位符字体与文档流的其余部分相同的样式(或其他样式)需要一种完全不同的方法,但我发现一个我认为还不错的方法(它仍然有些基本)。为此,我像往常一样将字体真棒图标放在自己单独的 <i></i> 元素中的文本输入前面,但随后将其绝对定位在文本输入中(因此它不会中断文档流)。
HTML/Razor:
<i class="fas fa-envelope placeholder"></i>@Html.TextBoxFor(m => m.Email, new { @class = "form-control icon", @placeholder = "Email Address" })
这是 CSS/样式:我在 <i></i> 标记中添加了一个类 (.placeholder) 用于定位,这使图标成为绝对的,同时垂直居中并从左侧移动一点(注意:您可能需要根据您的文本输入大小或多或少地调整您的顶部和左侧)。我还在文本输入中添加了另一个类 (.icon),它在文本输入的前面/内部添加了文本缩进,以将占位符文本推出与图标重叠。这使两者分开,以便占位符文本可以设置为您想要的任何字体(或保留您已经使用的默认字体)。
CSS:
.placeholder {
position: absolute;
color: gray;
top: 10px;
left: 25px;
}
.icon {
text-indent: 20px;
}
我不介意这种方法有一个警告(实际上我认为它更多是一种好处)。现在图标在输入文本时不会消失,而是停留在左侧(我觉得这使得输入在输入文本后不那么模糊,我认为这是一件好事)。