如何在输入字段中添加“真棒字体”图标?


89

如何使用“真棒字体”中包含的搜索图标进行输入?我的网站上有一个搜索功能(基于PHPmotion),我想将其用于搜索。

这是代码:

<div id="search-bar">

      <form method="get" action="search.php" autocomplete="off" name="form_search">
        <input type="hidden" name="type" value="videos" />
            <input autocomplete="on" id="keyword" name="keyword" value="Search Videos" onclick="clickclear(this,
            'Search Videos')" onblur="clickrecall(this,'Search Videos')" style="font-family: verdana; font-weight:bold;
            font-size: 10pt; height: 28px; width:186px; color: #000000; padding-left: 2px; float:left; border: 1px solid black; background-color:
            #ffffff" />
            <input type="image" src="http://viddir.com/themes/default/images/search.jpg" height="30" width="30" border="0" style="float:right;"/>
        <div id="searchBoxSuggestions"></div>
        </form>
        </div>

Answers:


113

您可以使用其他标记代替,input并以常规方式应用FontAwesome。

可以使用以下命令代替您input的类型image

<i class="icon-search icon-2x"></i>

快速CSS

.icon-search {
    color:white;
    background-color:black;
}

这是一个小提琴: DEMO

您可以对其样式进行一些改进,并向i对象添加事件功能,这可以通过使用<button type="submit">对象而不是i或使用javascript来实现。

按钮的解决方案是这样的:

<button type="submit" class="icon-search icon-large"></button>

CSS

.icon-search {
    height:32px;
    width:32px;
    border: none;
    cursor: pointer;
    color:white;
    background-color:black;
    position:relative;
}

这是我的小提琴而不是我更新的按钮: 演示


更新:在任何标签上使用FontAwesome

FontAwsome的问题在于其样式表使用:before伪元素将图标添加到元素-伪元素不起作用/不允许在input元素上使用。这就是为什么使用FontAwesome不能正常使用的原因input

但是有一个解决方案-您可以像这样将FontAwesome用作常规字体:

CSS:

input[type="submit"] {
    font-family: FontAwesome;
}

HTML:

<input type="submit" class="search" value="&#xf002;" />

字形可以作为value属性的值传递。可以在FontAwesome css文件中找到各个字母/图标的ascii代码,只需要将它们更改为HTML ascii数字\f002即可&#xf002;,它应该可以工作。

链接到FontAwesome ASCII码cheatsheet文件):fortawesome.github.io/Font-Awesome/cheatsheet

可以通过轻松调整图标的大小font-size

请参阅上面的示例,使用inputjsfidde中的元素:

演示


更新:FontAwesome 5

对于FontAwesome版本5,此解决方案所需的CSS已更改-字体系列名称已更改,并且必须指定字体粗细:

input[type="submit"] {
    font-family: "Font Awesome 5 Free"; // for the open access version
    font-size: 1.3333333333333333em;
    font-weight: 900;
}

请参阅@WillFastie的评论,其中包含更新的提琴风箱的链接。谢谢!


2
@HTMLDeveloper的问题是FontAwesome的正常应用方式...因为使用它:before,因此无法与inputorimg标记一起使用...但是有一个简单的解决方案-即,将FontAwesome用作常规字体...请参阅我更新的解决方案以上。我希望我能赢得投票;-)
Martin Turjak 2014年

11
嘘,您@HTMLDeveloper ...他在回答中明确指出(在所有编辑中,我都检查过),您不能将Font Awesome样式应用于输入标签。然后,他继续发布了几种不同的解决方案,其中只有一个包含使用按钮。然后,您可以自己使用他的确切答案。格式错误。
o_O 2014年

1
链接到ascii码的cheatsheet):fortawesome.github.io/Font-Awesome/cheatsheet
Vadorequest

1
@Vadorequest谢谢!好主意...我将链接添加到答案^ _ ^
Martin Turjak 2014年

2
+1 fkn绝招!谢谢,我想知道为什么&#xf002; 由于您意识到这是添加font-family:FontAwesome,因此没有在输入中显示;你救了我:D
itsme 2014年

44

这是一个使用简单CSS和标准字体超赞语法的解决方案,不需要unicode值等。

  1. 创建一个<input>标签,然后创建一个<i>带有所需图标的标准标签。

  2. 将相对定位与较高的图层顺序(z索引)一起使用,并将图标移至输入字段上方和上方。

  3. (可选)您可以通过标准JS激活图标,以提交数据。

有关HTML / CSS / JS,请参见下面的三个代码段。

或与JSFiddle相同:例如:http : //jsfiddle.net/ethanpil/ws1g27y3/

$('#filtersubmit').click(function() {
  alert('Searching for ' + $('#filter').val());
});
#filtersubmit {
  position: relative;
  z-index: 1;
  left: -25px;
  top: 1px;
  color: #7B7B7B;
  cursor: pointer;
  width: 0;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input id="filter" type="text" placeholder="Search" />
<i id="filtersubmit" class="fa fa-search"></i>


10

对于那些想知道如何将FontAwesome图标添加到drupal输入的用户,您必须首先像这样解码:

$form['submit'] = array(
'#type' => 'submit',
'#value' => decode_entities('&#xf014;'), // code for FontAwesome trash icon
// etc.
);

4

将输入更改为按钮元素,即可在其上使用Font Awesome类。在演示中,字形的对齐方式不是很好,但是您可以理解:

http://tinker.io/802b6/1

<div id="search-bar">
  <form method="get" action="search.php" autocomplete="off" name="form_search">
    <input type="hidden" name="type" value="videos" />
        <input autocomplete="on" id="keyword" name="keyword" value="Search Videos" onclick="clickclear(this,
        'Search Videos')" onblur="clickrecall(this,'Search Videos')" style="font-family: verdana; font-weight:bold;
        font-size: 10pt; height: 28px; width:186px; color: #000000; padding-left: 2px; border: 1px solid black; background-color:
        #ffffff" /><!--
        --><button class="icon-search">Search</button>
    <div id="searchBoxSuggestions"></div>
    </form>
</div>

#search-bar .icon-search {
    width: 30px;
    height: 30px;
    background: black;
    color: white;
    border: none;
    overflow: hidden;
    vertical-align: middle;
    padding: 0;
}

#search-bar .icon-search:before {
    display: inline-block;
    width: 30px;
    height: 30px;
}

这样做的好处是,表单仍然可以完全正常工作,而不必为不是按钮但看起来像按钮的元素添加事件处理程序。


1

与顶部答案类似,我在HTML的value =部分中使用了unicode字符,并将FontAwesome用作该输入元素上的字体系列。我唯一要补充的是,最重要的答案没有涵盖,是因为因为我的value元素在图标之后也包含文本,因此将字体系列更改为FontAwesome会使常规文本看起来很糟糕。解决方案只是更改CSS以包括后备字体:

<input type="text" id="datepicker" placeholder="Change Date" value=" Sat Oct 19" readonly="readonly" class="hasDatepicker">

font-family: FontAwesome, Roboto, sans-serif;

这样,FontAwesome将获取图标,但是所有非图标文本都将应用所需的字体。


0
.fa-file-o {
    position: absolute;
    left: 50px;
    top: 15px;
    color: #ffffff
}

<div>
 <span class="fa fa-file-o"></span>
 <input type="button" name="" value="IMPORT FILE"/>
</div>

0

很棒的新字体的简单方法

  <div class="input-group">
                    <input type="text" class="form-control" placeholder="Search" name="txtSearch"  >
                    <div class="input-group-btn">
                        <button class="btn btn-default" type="submit"><i class="fas fa-search"></i></button>
                    </div>
                </div>

-4

要使用unicode或fontawesome进行此操作,您应该使用如下所示的类添加一个span,因为input标签不支持:after之类的伪类。这不是直接的解决方案

在html中:

   <span class="button1 search"></span>
<input name="username">

在CSS中:

.button1 {
    background-color: #B9D5AD;
    border-radius: 0.2em 0 0 0.2em;
    box-shadow: 1px 0 0 rgba(0, 0, 0, 0.5), 2px 0 0 rgba(255, 255, 255, 0.5); 
    pointer-events: none;
    margin:1px 12px;    
    border-radius: 0.2em;    
    color: #333333;
    cursor: pointer;
    position: absolute;
    padding: 3px;
    text-decoration: none;   

}

7
询问输入标签的问题,您回答了跨度标签
o_O 2014年

实际上,关于应用于文本输入而不是按钮的唯一答案是+1。
BorisOkunskiy 2014年

1
@incarnate实际上,此答案并不将样式应用于输入字段,而是应用于跨度,而MartinTurjak上面答案中提供了完整的解决方案(以及其他替代方法)
BobbyZ 2014年

我的意思是在这里输入文本,因为主题是“如何在输入字段中添加“真棒字体”图标?” -并没有提及按钮。MartinTurjak描述了样式按钮而不是文本字段的好方法。
BorisOkunskiy 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.