将Font Awesome图标制作成一个圆圈吗?


134

我在某些项目上使用了真棒字体,但是我想对真棒字体图标做一些事情,我可以很容易地这样调用一个图标:

<i class="fa fa-lock"></i>

是否所有图标都始终处于带边框的圆形圆圈中?像这样,我有一张照片:

在此处输入图片说明

使用

i {
  background-color: white;
  border-radius: 50%;
  border: 1x solid grey;
  padding: 10px;
}

会产生效果,但是问题是图标总是比旁边的文本或元素大,有解决方案吗?

Answers:


175

i.fa {
  display: inline-block;
  border-radius: 60px;
  box-shadow: 0px 0px 2px #888;
  padding: 0.5em 0.6em;

}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<i class="fa fa-wrench"></i>


JsFiddle的旧答案:http ://fiddle.jshell.net/4LqeN/


6
有东西,但不是圆的吗?
施耐德

border-radius要圆的元素。您使用什么浏览器?将以前缀更新我的答案
Nico O

4
但这不是解决方案。仅在i具有内容时有效。通常,对于FA,您在i-tag中没有内容,但是图标稍后由CSS呈现:<i class="fa fa-lock"></i>这就是@Schneider实际要求的内容。
1

@Jan我明天将对此进行调查。但是我看不到问题。没错,标签没有内容,但是内容将通过css添加。即使Icon无法加载,您也会看到一个圆圈。能否将您看到的问题做成jsFiddle?
Nico O

4
不,这是问题的答案。看到问题的图像。有一个阴影,而不是一个困难的圈子。
Nico O

230

有了Font Awesome,您可以轻松地使用堆叠的图标,如下所示:

<span class="fa-stack fa-2x">
  <i class="fas fa-circle-thin fa-stack-2x"></i>
  <i class="fas fa-lock fa-stack-1x fa-inverse"></i>
</span>

请参阅字体真棒堆叠的图标

更新:-拨弄堆叠的图标


6
堆叠的图标最多只能使用2倍。如果您想要更大的空间,那将不起作用
J Lee

15
希望这是公认的答案,它是用fontawesome做到这一点的“正确”方法。接受的答案是调整得不好的骇客。
ask_io 2014年

4
与数字相同<span class="fa-stack fa-lg"> <i class="fa fa-circle-thin fa-stack-2x"></i> <i class="fa fa-stack-1x">1</i> </span>
m3nda 2015年

2
@emrah-这是唯一真正的字体,不是自定义css的选项,因此比这里的任何内容都更精确。
ask_io

1
非常优雅的解决方案。@mmativ,如果您是在圆上表示背景颜色,则只需执行<i class =“ fa fa-circle-thin fa-stack-2x” style =“ color:blue”> </ i>
J.Kirk。

34

您不需要它的CSS或HTML技巧。Font Awesome 为此内置了类 -fa-circle要将多个图标堆叠在一起,可以在父div上使用fa-stack类

<span class="fa-stack fa-lg">
  <i class="fa fa-circle fa-stack-2x"></i>
  <i class="fa fa-flag fa-stack-1x fa-inverse"></i>
</span> 

//我们现在在圆圈内有facebook图标:)


2
萨姆帕特·巴德(Sampat Badhe)在两年多以前的回答中都说了同样的话。为什么在写答案之前不阅读其他答案?
Taras Yaremkiv

嘿,对不起Sampat,我没有看到他的答案,我将尝试修改答案并添加更多解决方案或有用的信息。
Vasyl Gutnyk '17年

1
这是一个很好的解决方案,但是它为每个图标提供了蓝色背景。有什么解决方法吗?
Jamshaid Kamran

@CodeIt只需使用CSS清除它或添加新的背景色即可。这不应该是一个问题。
Vasyl Gutnyk

27

圆圈中的字体图标em用作基本度量

如果您使用ems进行测量,包括line-heightfont-sizeborder-radiustext-align: center它会使事情变得很可靠:

#info i {
  font-size: 1.6em;
  width: 1.6em;
  text-align: center;
  line-height: 1.6em;
  background: #666;
  color: #fff;
  border-radius: 0.8em; /* or 50% width & line-height */
}

13

更新:宁可使用flex。

如果您想要精确度,这就是方法。

小提琴。转到播放-> http://jsfiddle.net/atilkan/zxjcrhga/

这是HTML

<div class="sosial-links">
    <a href="#"><i class="fa fa-facebook fa-lg"></i></a>
    <a href="#"><i class="fa fa-twitter fa-lg"></i></a>
    <a href="#"><i class="fa fa-google-plus fa-lg"></i></a>
    <a href="#"><i class="fa fa-pinterest fa-lg"></i></a>
</div>

这是CSS

.sosial-links a{
    display: block;
    float: left;
    width: 36px;
    height: 36px;
    border: 2px solid #909090;
    border-radius: 20px;
    margin-right: 7px; /*space between*/

} 
.sosial-links a i{
    padding: 12px 11px;
    font-size: 20px;
    color: #909090;
}

玩得开心


添加text-align:center; 使得它与几乎所有甚至FA-信息工作
马尔西奥

垂直对齐怎么样?
localhoost

9

您也可以这样做。我想在我的icomoon图标周围添加一个圆圈。这是代码。

span {
font-size: 54px;
border-radius: 50%;
border: 10px solid rgb(205, 209, 215);
padding: 30px;
}

8

更新

在最近学习flex时,有一种更简洁的方法(没有表且CSS更少)。将包装器设置为,display: flex;然后将其居中设置为子级,为它align-items: center;提供(垂直)和justify-content: center;(水平)居中的属性。

看到这个更新的JS小提琴


奇怪的是,以前没有人建议过这个。.我总是使用表来做到这一点。
只需使包装纸display: table内部具有中心位置即可text-align: center进行水平和vertical-align: middle垂直对齐。

<div class='wrapper'>
  <i class='icon fa fa-bars'></i>
</div>

还有像这样的无礼

.wrapper{
  display: table; 

  i{
    display: table-cell;
    vertical-align: middle;
    text-align: center;
  }

}

或者看这个JS小提琴


这是一个非常好的,干净的,小巧的!这是用CSS代替SCSS的小提琴 jsfiddle.net/bqtkmy0s
摘要

@summsel这与我的原始答案完全不一样吗?您只是在scss中而不是在css中编写了代码。
nclsvh

是的,当然是。我在css中尝试了您的解决方案,并且有很多人更喜欢css。那么,为什么不发布此CSS版本的jsfiddle。
摘要

5

这是您不需要使用的方法padding,只需将height和设置width为,a然后flex使用即可margin: 0 auto

.social-links a{
  text-align:center;
	float: left;
	width: 36px;
	height: 36px;
	border: 2px solid #909090;
	border-radius: 100%;
	margin-right: 7px; /*space between*/
    display: flex;
    align-items: flex-start;
    transition: all 0.4s;
    -webkit-transition: all 0.4s;
} 
.social-links a i{
	font-size: 20px;
    align-self:center;
	color: #909090;
    transition: all 0.4s;
    -webkit-transition: all 0.4s;
    margin: 0 auto;
}
.social-links a i::before{
  display:inline-block;
  text-decoration:none;
}
.social-links a:hover{
  background: rgba(0,0,0,0.2);
}
.social-links a:hover i{
  color:#fff;
}
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"/>

<div class="social-links">
    <a href="#"><i class="fa fa-facebook fa-lg"></i></a>
    <a href="#"><i class="fa fa-twitter fa-lg"></i></a>
    <a href="#"><i class="fa fa-google-plus fa-lg"></i></a>
    <a href="#"><i class="fa fa-pinterest fa-lg"></i></a>
</div>


4

下面的例子对我来说不是很有效,这是我工作的版本!

HTML:

<div class="social-links">
    <a href="#"><i class="fa fa-facebook fa-lg"></i></a>
    <a href="#"><i class="fa fa-twitter fa-lg"></i></a>
    <a href="#"><i class="fa fa-google-plus fa-lg"></i></a>
    <a href="#"><i class="fa fa-pinterest fa-lg"></i></a>
</div>

CSS:

.social-links {
    text-align:center;
}

.social-links a{
    display: inline-block;
    width:50px;
    height: 50px;
    border: 2px solid #909090;
    border-radius: 50px;
    margin-right: 15px;

}
.social-links a i{
    padding: 18px 11px;
    font-size: 20px;
    color: #909090;
}

3

试试这个

HTML:

<div class="icon-2x-circle"><i class="fa fa-check fa-2x"></i></div>

CSS:

i {
    width: 30px;
    height: 30px;
}

.icon-2x-circle {
    text-align: center;
    padding: 3px;
    display: inline-block;
    -moz-border-radius: 100px;
    -webkit-border-radius: 100px;
    border-radius: 100px;
    -moz-box-shadow: 0px 0px 2px #888;
    -webkit-box-shadow: 0px 0px 2px #888;
    box-shadow: 0px 0px 2px #888;
}

2

字体真棒图标插入为:before。因此,你可以风格或者您的还是一个像这样:

.i {
   background: #fff;
   border-radius: 50%;
   display: inline-block;
   height: 20px;   
   width: 20px;
}

<a href="#"><i class="fa fa-facebook fa-lg"></i></a>

2

您可以使用以下代码简单地获取圆形图标:

<a class="facebook-share-button social-icons" href="#" target="_blank">
    <i class="fab fa-facebook socialicons"></i>
</a>

现在,您的CSS将是:

.social-icons {
display: inline-block;border-radius: 25px;box-shadow: 0px 0px 2px #888;
padding: 0.5em;
background: #0D47A1;
font-size: 20px;
}
.socialicons{color: white;}

0

我喜欢戴夫·埃弗里特(Dave Everitt)的“ line-height”答案,但只能通过指定“ height”来起作用,然后我们必须在line-height中添加“!important” ...

.cercle {
    font-size: 2em;
    width: 2em;
    height: 2em;
    text-align: center;
    line-height: 2em!important;
    background: #666;
    color: #fff;
    border-radius: 2em;
}

线条高度为我解决了问题
摄影机

添加!important只是一个创可贴,而不是解决方案。这意味着您在其他地方有另一个CSS属性会覆盖您的属性。
TylerH

0

到目前为止,这是我找到的最好,最精确的解决方案。

CSS:

.social .fa {
      margin-right: 1rem;
      border: 2px #fff solid;
      border-radius: 50%;
      height: 20px;
      width: 20px;
      line-height: 20px;
      text-align: center;
      padding: 0.5rem;
    }
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.