使用Font Awesome图标的项目符号点,带有单个列表项元素


131

我们希望能够使用Font Awesome(http://fortawesome.github.com/Font-Awesome/)图标作为CMS中无序列表的项目符号。

CMS上的文本编辑器仅输出原始HTML,因此无法添加其他元素/类。

这意味着在标记看起来像这样时显示图标:

<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>

我可以看到的第一个问题是Font Awesome是否需要一个不同的font-family属性,而这需要一个单独的元素。

使用纯CSS是否可能?还是我必须使用类似jQuery的元素将其附加到每个列表项的开头?

我意识到我们可以使用背景图像的后备,但是如果可能的话,最好使用Font Awesome。

Answers:


248

解:

http://jsfiddle.net/VR2hP/

ul li:before {    
    font-family: 'FontAwesome';
    content: '\f067';
    margin:0 5px 0 -15px;
    color: #f00;
}

这是一篇博客文章,深入介绍了此技术。


18
从这些字体真棒图标到css值的翻译列表,请参见:astronautweb.co/snippet/font-awesome
Scott C Wilson

24
您需要包括此选项以删除默认的项目符号点ul { list-style-type: none; }
Edd 2014年

当我在同一页面上有两个列表时,为什么此方法不起作用?
deKajoo 2014年

6
很好,我建议将事情排列得更好些的唯一方法是使用margin: 0 0.2em 0 -1.2em;两个值增加/减少相同的量,以获得所需的间距。如果您使用的固定像素值与字体不正确对应,则会发现多行列表项之间存在差异。
2015年

我为此添加了ul前缀,否则,如果客户端使用cms创建有序(编号)列表,则它将尝试执行此操作
rtpHarry

154

新的fontawesome(版本4.0.3)使此操作变得非常容易。我们只使用以下类:

<ul class="fa-ul">
  <li><i class="fa-li fa fa-check-square"></i>List icons (like these)</li>
  <li><i class="fa-li fa fa-check-square"></i>can be used</li>
  <li><i class="fa-li fa fa-spinner fa-spin"></i>to replace</li>
  <li><i class="fa-li fa fa-square"></i>default bullets in lists</li>
</ul>

按照这个(新的)URL:http : //fontawesome.io/examples/#list


12
对于新的fa版本,这应该是正确的答案。做得很好,谢谢您的解释。
大卫

23
我不同意,这个问题要求使用纯CSS中的单个列表解决方案。这将使用其他HTML以及类。虽然这绝对是FA文档指定执行此操作的方式,但从技术上讲,这并不是解决问题的方法,并且如果您希望在不修改HTML输出的情况下执行此操作,则该功能就没有用。
Ryan

我知道你要干什么-但是在无法修改HTML的情况下不是经常编写纯CSS的人???(严重的是,请查看更改您的Web框架)将需要他们的Google查询内存刷新器链接到“正确”字体的真棒文档方式,并与“实际”答案并列,彼此相邻来决定。我的意思不是说“不仅是对这个问题的正确答案”,但还没有……
大声笑

1
这种方法不适用于将列表元素包装成多行的情况,因为其他行的标识不会扩展为包括图标的宽度。
Lars Haugseth

2
可能值得添加,在FA 4.3(可能还有其他版本)和Bootstrap 3中,由于项目是绝对放置的,因此需要设置ulli项目。否则,它们将全部浮动到左上方。position: relativefa-li
杰里米·哈里斯

14

我想在上面和其他地方给出的一些答案的基础上,建议将绝对定位:before伪类一起使用。上面的许多示例(以及类似的问题)都在使用自定义HTML标记,包括Font Awesome的处理方法。这与最初的问题背道而驰,并非严格必要。

此处演示

ul {
  list-style-type: none;
  padding-left: 20px;
}

li {
  position: relative;
  padding-left: 20px;
  margin-bottom: 10px
}

li:before {
  position: absolute;
  top: 0;
  left: 0;
  font-family: FontAwesome;
  content: "\f058";
  color: green;
}

基本上就是这样。您可以在Font Awesome速查表上获取ISO值以用于CSS内容。只需使用以反斜杠为前缀的最后4个字母数字即可。所以[&#xf058;]变成\f058


4

示例页面上,有一个示例如何使用Font Awesome以及无序列表。

<ul class="icons">
  <li><i class="icon-ok"></i> Lists</li>
  <li><i class="icon-ok"></i> Buttons</li>
  <li><i class="icon-ok"></i> Button groups</li>
  <li><i class="icon-ok"></i> Navigation</li>
  <li><i class="icon-ok"></i> Prepended form inputs</li>
</ul>

如果尝试此代码后找不到它,则说明您没有正确包含该库。根据他们的网站,您应该包括以下库:

<link rel="stylesheet" href="../css/bootstrap.css">
<link rel="stylesheet" href="../css/font-awesome.css">

还可以在其网站CSS Tricks上查看异想天开的Chris Coyier关于图标字体的帖子

这是的截屏视频,同时也谈到了如何创建自己的图标字体。


2
您不需要额外的标记:li:before可以拥有与li本身不同的字体系列。
cimmanon 2012年

@cimmanon:虽然您确实是对的,但Font Awesome的文档建议您应该使用额外的标记。从技术上讲,它不是必需的,但是,我认为可能需要对字体的字形进行一些挖掘,以找出将哪个键映射到哪个符号。这将需要一些时间和耐心,但是可以肯定的是,您的解决方案也可以正常工作。
谷物盗窃

@cereallarceny-我们遇到的问题是CMS的HTML编辑器(TinyMCE)产生了我在问题中给出的格式。因此,从这个角度来看,我们无法控制列表HTML。除非我们将TinyMCE配置为包括i元素(并且不将其删除为空元素)。
BaronGrivet

因此,您无权访问HTML,可以访问CSS吗?
谷物窃听2012年

是的,完全访问CSS。
BaronGrivet 2012年

1

@Tama,您可能需要检查以下答案:使用Font Awesome图标作为项目符号

基本上,您可以仅使用CSS来完成此操作,而无需FontAwesome和此处的其他答案所建议的额外标记。

换句话说,您可以使用在初始文章中提到的相同基本标记来完成所需的工作:

<ul>
  <li>...</li>
  <li>...</li>
  <li>...</li>
</ul>

谢谢。


1

我的解决方案使用标准<ul><i>内部<li>

  <ul>
    <li><i class="fab fa-cc-paypal"></i> <div>Paypal</div></li>
    <li><i class="fab fa-cc-apple-pay"></i> <div>Apple Pay</div></li>
    <li><i class="fab fa-cc-stripe"></i> <div>Stripe</div></li>
    <li><i class="fab fa-cc-visa"></i> <div>VISA</div></li>
  </ul>

在此处输入图片说明

此处演示


1

在Font Awesome 5中,可以使用纯CSS来完成,如上述某些答案中所做的一些修改。

ul {
  list-style-type: none;
}

li:before {
  position: absolute;
  font-family: 'Font Awesome 5 free';
          /*  Use the Name of the Font Awesome free font, e.g.:
           - 'Font Awesome 5 Free' for Regular and Solid symbols;
           - 'Font Awesome 5 Brand' for Brands symbols.
           - 'Font Awesome 5 Pro' for Regular and Solid symbols (Professional License);
          */
  content: "\f1fc"; /* Unicode value of the icon to use: */
  font-weight: 900; /* This is important, change the value according to the font family name
                       used above. See the link below  */
  color: red;
}

没有正确的字体粗细,它将仅显示一个空白方块。

https://fontawesome.com/how-to-use/on-the-web/advanced/css-pseudo-elements#define

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.