垂直和水平居中FontAwesome图标

Nix*_*Nix 41 css twitter-bootstrap font-awesome

我目前正在使用FontAwesome,并且很难将图标垂直和水平地放在容器中.我试过通过定位来做这件事并遇到问题bc图标大小不同.我基本上有水平,我试图得到垂直.

<div class='container'>
    <div class='row'>
        <div class='offset2 span6 loginContainer'>
            <div class='row'>
                <div class='login-icon'>    
                    <i class='icon-user'></i>
                </div>
                <input type="text"  placeholder="Email" />

            </div>
            <div class='row'>
                <div class='login-icon'><i class=" icon-lock "></i></div>
                <input type="password" class="" placeholder="Password" />
            </div>
        </div>
    </div>
</div>

.login-icon{
    font-size: 40px;
    line-height: 40px;
    background-color:black;
    color:white;
    width: 50px;
    height: 50px;

}
.login-icon [class*='icon-']{
  height: 50px;
  width: 50px;
  display: inline-block;
  text-align: center;
  vertical-align: baseline;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/ncapito/e2UPC/

koa*_*dev 44

这就是您所需要的,不需要包装器:

.login-icon{
    display:inline-block;
    font-size: 40px;
    line-height: 50px;
    background-color:black;
    color:white;
    width: 50px;
    height: 50px;
    text-align: center;
    vertical-align: bottom;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/e2UPC/6/

  • 你有硬编码的`line-height`这不是动态的.这里不使用vertical-align. (12认同)

小智 17

我用变换来纠正偏移量.它适用于像生命圈这样的圆形图标.

<span class="fa fa-life-ring"></span>

.fa {
    transform: translateY(-4%);
}
Run Code Online (Sandbox Code Playgroud)

  • @ObsidianAge - 如果换掉11行CSS for 3不是更好的解决方案(对于我们很多人经常遇到的非常普遍的问题),我不知道是什么. (15认同)
  • @ObsidianAge这是一个正确时间的完美示例,可以为旧的,已接受的问题添加新答案. (12认同)
  • 欢迎来到StackOverflow!虽然答案总是受到赞赏,但这个问题在3年前被问到,并且已经有了一个公认的解决方案.请尽量通过提供答案来避免将问题"提出"到顶部,除非问题尚未标记为已解决,或者您发现了一个明显更好的替代方法来解决问题:) (4认同)

小智 9

使图标水平和垂直居中的最简单解决方案:

<div class="d-flex align-items-center justify-content-center">
    <i class="fas fa-crosshairs fa-lg"></i>
</div>
Run Code Online (Sandbox Code Playgroud)


Nix*_*Nix 7

所以我终于明白了(http://jsfiddle.net/ncapito/eYtU5/):

.centerWrapper:before {
    content:'';
    height: 100%;
    display: inline-block;
    vertical-align: middle;
}

.center {
    display:inline-block;
    vertical-align: middle;
}

<div class='row'>
    <div class='login-icon'>
        <div class='centerWrapper'>
            <div class='center'> <i class='icon-user'></i></div>
       </div>
    </div>
    <input type="text" placeholder="Email" />
 </div>
Run Code Online (Sandbox Code Playgroud)