如何在输入框placeholder中添加Font Awesome图标?
在输入框Placeholder中添加Font Awesome图标解决方案
首先修正你代码里的CSS拼写错误:CSS中颜色相关属性是美式拼写color,背景色是background-color,不是colour,这会导致部分样式不生效。
接下来解决图标问题:<input>属于替换元素,浏览器不支持直接给它添加:before/:after伪元素;直接在placeholder里用Unicode无效,通常是因为字体未正确加载或字体权重设置不对。下面给出两种可靠的实现方式:
方法一:用容器包裹输入框(推荐,兼容性更好)
通过容器承载输入框和图标,利用容器的伪元素实现图标效果,视觉上和placeholder融合:
HTML代码
<div class="search-wrap"> <input type="text" name="search bar" placeholder="search"> </div>
CSS代码
/* 容器定位,替代原input的绝对定位 */ .search-wrap { position: absolute; right: 188px; top: 24px; width: 4%; } .search-wrap input { width: 100%; background-color: #000; color: antiqueWhite; padding-left: 22px; /* 给图标留出左侧空间,避免文字覆盖 */ border: none; /* 可根据需求调整边框样式 */ } /* 用容器伪元素添加Font Awesome图标 */ .search-wrap::before { content: "\f002"; /* 搜索图标的Unicode,可替换为你需要的图标代码 */ font-family: "Font Awesome 6 Free"; /* 对应你使用的Font Awesome版本,如FA5则写"Font Awesome 5 Free" */ font-weight: 900; /* 实心图标需设置900权重,空心图标用400 */ position: absolute; left: 6px; top: 50%; transform: translateY(-50%); color: antiqueWhite; font-size: 14px; /* 根据输入框大小调整图标尺寸 */ } ::placeholder { color: antiqueWhite; }
方法二:直接在Placeholder中使用Unicode(需注意兼容性)
如果坚持直接用placeholder实现,需确保Font Awesome字体已正确引入,同时给placeholder设置对应字体和权重:
HTML代码
<input type="text" name="search bar" placeholder=" search">
CSS代码
input { width: 4%; position: absolute; right: 188px; top: 24px; background-color: #000; /* 把Font Awesome字体放在前面,确保图标正确渲染 */ font-family: "Font Awesome 6 Free", sans-serif; } ::placeholder { color: antiqueWhite; font-family: "Font Awesome 6 Free", sans-serif; font-weight: 900; /* 对应图标的权重要求 */ }
注意事项
- 必须先引入Font Awesome的样式文件(本地或官方资源均可),否则图标无法显示。
- 不同版本的Font Awesome字体名称和图标Unicode可能有差异,需根据使用版本调整。
内容的提问来源于stack exchange,提问作者Josh Brook
相关产品推荐
相关产品推荐

