121

是否可以在占位符中使用 Font Awesome 图标?我读到占位符中不允许使用 HTML。有解决方法吗?

placeholder="<i class='icon-search'></i>"
4

18 回答 18

256

如果您使用FontAwesome 4.7它应该足够了:

<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>

<input type="text" placeholder="&#xF002; Search" style="font-family:Arial, FontAwesome" />

十六进制代码列表可以在Font Awesome 备忘单中找到。但是,在最新的 FontAwesome 5.0 中,此方法不起作用(即使您使用 CSS 方法结合更新的font-family.

于 2014-06-17T04:17:51.417 回答
65

您无法添加图标和文本,因为您无法将不同的字体应用于占位符的一部分,但是,如果您对仅图标感到满意,那么它可以工作。FontAwesome 图标只是具有自定义字体的字符(您可以查看规则中的转义 Unicode 字符的FontAwesome 备忘单content。在变量中找到的 less 源代码中。挑战将是在输入为不为空。像这样与 jQuery 结合使用。

<form role="form">
  <div class="form-group">
    <input type="text" class="form-control empty" id="iconified" placeholder="&#xF002;"/>
  </div>
</form>

使用这个 CSS:

input.empty {
    font-family: FontAwesome;
    font-style: normal;
    font-weight: normal;
    text-decoration: inherit;
}

而这个(简单的)jQuery

$('#iconified').on('keyup', function() {
    var input = $(this);
    if(input.val().length === 0) {
        input.addClass('empty');
    } else {
        input.removeClass('empty');
    }
});

然而,字体之间的过渡不会是平滑的。

于 2013-10-13T21:12:41.923 回答
21

我用这种方法解决了:

在 CSS 中,我将此代码用于fontAwesome 类

.fontAwesome {
  font-family: 'Helvetica', FontAwesome, sans-serif;
}

在 HTML 中,我在占位符内添加了fontawesome 类fontawesome 图标代码

<input type="text" class="fontAwesome" name="emailAddress" placeholder="&#xf0e0;  insert email address ..." value="">

你可以在CodePen中看到。

于 2016-03-29T14:43:37.903 回答
17

@Elli 的答案可以在 FontAwesome 5 中使用,但它需要使用正确的字体名称并使用您想要的版本的特定 CSS。例如,当使用 FA5 Free 时,如果我包含 all.css,我无法让它工作,但如果我包含 solid.css,它就可以正常工作:

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/solid.css">

<input type="text" placeholder="&#xF002; Search" style="font-family: Arial, 'Font Awesome 5 Free'" />

对于 FA5 Pro,字体名称为“Font Awesome 5 Pro”

于 2019-04-08T15:07:38.347 回答
10

在支持的情况下,您可以将::input-placeholder伪选择器与::before.

请参阅以下示例:

http://codepen.io/JonFabritius/pen/nHeJg

我只是在研究这个并遇到了这篇文章,我从中修改了这些东西:

http://davidwalsh.name/html5-placeholder-css

于 2013-10-20T21:29:33.647 回答
8

我正在使用 Ember(版本 1.7.1),我需要绑定输入的值并有一个占位符,它是一个 FontAwesome 图标。在 Ember 中绑定值的唯一方法(据我所知)是使用内置的帮助器。但这会导致占位符被转义,“”就这样显示出来,文本。

如果您是否使用 Ember,则需要将输入占位符的 CSS 设置为具有 FontAwesome 的字体系列。这是 SCSS(使用Bourbon 作为占位符样式):

    input {
      width:96%;
      margin:5px 2%;
      padding:0 8px;
      border:1px solid #444;
      border-radius: 14px;
      background: #fff;
      @include placeholder {
        font-family: 'FontAwesome', $gotham;
      }
    }

如果您只是使用车把,如前所述,您可以将 html 实体设置为占位符:

<input id="listFilter" placeholder="&#xF002;" type="text">

如果您使用 Ember 将占位符绑定到具有 unicode 值的控制器属性。

在模板中:

{{text-field
  id="listFilter"
  placeholder=listFilterPlaceholder
  value=listFilter}}

在控制器上:

listFilter: null,
listFilterPlaceholder: "\uf002"

并且值绑定工作正常!

占位符示例

占位符 gif

于 2014-11-21T19:06:13.557 回答
6

placeholder="&#xF002;"在您的输入中使用。您可以在 FontAwesome 页面http://fontawesome.io/icons/中找到 unicode 。但是您必须确保添加style="font-family: FontAwesome;"您的输入。

于 2017-06-29T10:06:45.713 回答
5

任何想知道Font Awesome 5实现的人:

不要指定一般的“Font Awesome 5”字体系列,您需要专门以您正在使用的图标分支结束。在这里,我使用分支“Brands”为例。

<input style="font-family:'Font Awesome 5 Brands' !important" 
       type="text" placeholder="&#xf167">

更多细节在输入占位符文本中使用 Font Awesome (5) 图标

于 2018-04-28T04:06:58.697 回答
5

我知道这个问题很老了。但我没有看到任何像我过去使用的简单答案。

您只需将fas类添加到输入中,并在这种情况下为 Font-Awesome 的字形添加一个有效的十六进制,如下所示&#xf002<input type="text" class="fas" placeholder="&#xf002" />

您可以在此处的官网上找到每个字形的 unicode 。

这是一个不需要 css 或 javascript 的简单示例。

input {
  padding: 5px;
}
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
<form role="form">
  <div class="form-group">
    <input type="text" class="fas" placeholder="&#xf002" />
  </div>
</form>

于 2019-01-25T04:14:39.763 回答
4

我通过向fa-placeholder输入文本添加类来做到这一点:

<input type="text" name="search" class="form-control" placeholder="&#xF002;" />

所以,在css中添加这个:

.fa-placholder { font-family: "FontAwesome"; }

这对我来说很有用。

更新:

要在用户输入文本时更改字体,只需在 font awesome 之后添加字体

.fa-placholder { font-family: "FontAwesome", "Source Sans Pro"; }

于 2017-02-08T04:09:26.937 回答
3

忽略 jQuery,这可以使用::placeholder输入元素来完成。

<form role="form">
  <div class="form-group">
    <input type="text" class="form-control name" placeholder="&#xF002;"/>
  </div>
</form>

CSS部分

input.name::placeholder{ font-family:fontAwesome; font-size:[size needed]; color:[placeholder color needed] }

input.name{ font-family:[font family you want to specify] }

最好的部分:您可以为占位符和文本使用不同的字体系列

于 2017-08-02T13:53:29.347 回答
2

我用不同的方式解决了这个问题,它可以通过 html 代码与任何 FA 图标一起使用。我的解决方案不是占位符的所有这些困难,而是:

  1. 以通常的方式放置图标
HTML
<i class="fas fa-icon block__icon"></i>
<input type="text" name="name" class="block__input" placeholder="Some text">
CSS
.block__icon {
  position: absolute;
  margin: some-corrections;
}
.block__input {
  padding: some-corrections;
}
  1. 然后调整占位符的文本(这对每个人来说都是个人的,在我的例子中,一个图标就在文本之前)
HTML
<!-- For example add some spaces in placeholder, to make focused cursor stay before an icon -->
...placeholder="    Some text"...
  1. 这是一个图标在我们的输入上方并阻止光标单击的问题,因此我们应该在我们的 CSS 中再添加一行
CSS
.block__icon {
  position: absolute;
  margin: some-corrections;

  /* The new line */
  pointer-events: none;
}

  1. 但是一个图标不会和占位符一起消失,所以我们需要修复它。这也是我的解决方案的最终版本
HTML
<i class="fas fa-icon block__icon"></i>
<input type="text" name="name" class="block__input" placeholder="    Some text">
CSS
.block__icon {
  position: absolute;
  z-index: 2; /* New line */
  margin: some-corrections;
}
.block__input {
  position: relative; /* New line */
  z-index: 2; /* New line */
  padding: some-corrections;
}
/* New */
.block__input:placeholder-shown {
    z-index: 1;
}

这比我以前想象的要难,但我希望我能帮助任何人。

代码笔: https ://codepen.io/dzakh/pen/YzKqJvy

于 2019-08-15T20:19:07.633 回答
1

Teocci解决方案尽可能简单,因此无需添加任何 CSS,只需为 Font Awesome 5 添加 class="fas",因为它为元素添加了正确的 CSS 字体声明。

这是 Bootstrap 导航栏中搜索框的示例,搜索图标添加到输入组和占位符(当然,为了演示,没有人会同时使用两者)。图片:https://i.imgur.com/v4kQJ77.png > 代码:

<form class="form-inline my-2 my-lg-0">
    <div class="input-group mb-3">
        <div class="input-group-prepend">
            <span class="input-group-text"><i class="fas fa-search"></i></span>
        </div>
        <input type="text" class="form-control fas text-right" placeholder="&#xf002;" aria-label="Search string">
        <div class="input-group-append">
            <button class="btn btn-success input-group-text bg-success text-white border-0">Search</button>
        </div>
    </div>
</form>
于 2019-06-14T16:33:16.413 回答
1

我在占位符中同时添加了文本和图标。

placeholder="Edit &nbsp; &#xf040;"

CSS:

font-family: FontAwesome,'Merriweather Sans', sans-serif;
于 2018-03-20T21:17:32.370 回答
1

如果您可以/想要使用 Bootstrap,则解决方案将是输入组:

<div class="input-group">
 <div class="input-group-prepend">
  <span class="input-group-text"><i class="fa fa-search"></i></span>
  </div>
 <input type="text" class="form-control" placeholder="-">
</div>

看起来像这样:输入带有文本前置和搜索符号

于 2018-12-14T07:41:10.523 回答
1

There is some slight delay and jank as the font changes in the answer provided by Jason. Using the "change" event instead of "keyup" resolves this issue.

$('#iconified').on('change', function() {
    var input = $(this);
    if(input.val().length === 0) {
        input.addClass('empty');
    } else {
        input.removeClass('empty');
    }
});
于 2016-07-06T21:55:29.313 回答
0
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css">
<form role="form">
  <div class="form-group">
    <input type="text" class="form-control empty" id="iconified" placeholder="search">
    <i class="fas fa-search"></i>
  </div>
</form>

.form-group {
  position: relative;
}
i {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  z-index: 999;
}
input {
  padding-left: 1rem;
}
于 2021-10-04T10:22:32.047 回答
0

有时最重要的答案是不醒,当您可以使用以下技巧时

.form-group {
  position: relative;
}

input {
  padding-left: 1rem;
}

i {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
}
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css">

<form role="form">
  <div class="form-group">
    <input type="text" class="form-control empty" id="iconified" placeholder="search">
    <i class="fas fa-search"></i>
  </div>
</form>

于 2020-03-02T07:29:38.580 回答