You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在input输入框的placeholder占位符中插入自定义图标?

原生<input>的placeholder属性仅支持纯文本,无法直接插入自定义图标DOM元素,可通过以下两种方案实现需求:

方案1:嵌套容器+图标固定(最常用,可直接复用现有图标代码)

实现逻辑:给input外层套相对定位的容器,将图标绝对定位在输入框内部左侧,给input加左侧内边距避免输入内容遮挡图标,图标会一直显示在输入框左侧。
改造后代码:

<form action="" onSubmit={onSubmit}>
  {/* 父容器相对定位,宽度和原输入框保持一致 */}
  <div className="relative" style={{ width: 301 }}>
    {/* 搜索图标垂直居中固定在左侧 */}
    <span className="flex border-0 absolute left-3 top-1/2 -translate-y-1/2 z-10">
      <img src={SearchIcon} alt="搜索" />
    </span>
    <input
      ref={inputEl}
      type="text"
      className="py-1 border-0 rounded-sm flex-1 placeholder-base-6 pl-10" 
      placeholder="Search app by name, type, or category"
      style={{
        width: '100%',
        height: 44,
        background: 'rgba(235, 236, 239, 0.7)',
      }}
      value={isSearch}
      onChange={(e) => setIsSearch(e.target.value)}
    />
  </div>
</form>

如果需要图标和占位符一样,用户输入内容后自动隐藏,只需要给图标加显隐判断即可:

{!isSearch && <span className="flex border-0 absolute left-3 top-1/2 -translate-y-1/2 z-10">
  <img src={SearchIcon} alt="搜索" />
</span>}

方案2:CSS背景图实现(无需额外DOM元素)

如果你的搜索图标是可直接访问的静态资源,也可以直接把图标设为输入框的背景图实现效果:

<input
  ref={inputEl}
  type="text"
  className="py-1 border-0 rounded-sm flex-1 placeholder-base-6"
  placeholder="Search app by name, type, or category"
  style={{
    width: 301,
    height: 44,
    background: 'rgba(235, 236, 239, 0.7) url(替换为你的SearchIcon静态资源路径) 12px center no-repeat',
    paddingLeft: '40px',
    backgroundSize: '16px 16px', // 可根据需求调整图标大小
  }}
  value={isSearch}
  onChange={(e) => setIsSearch(e.target.value)}
/>

内容的提问来源于stack exchange,提问作者NicoGulo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:15:00