div中的中心图标 - 水平和垂直[重复]

Posted

技术标签:

【中文标题】div中的中心图标 - 水平和垂直[重复]【英文标题】:Center icon in a div - horizontally and vertically [duplicate] 【发布时间】:2013-10-08 02:08:28 【问题描述】:

我在父 div 中将图标(垂直和水平)居中时遇到问题。我的页面上有许多大小不同的父 divs,因此我希望能够按比例将图标放置在每个父 div 的中心。这是问题的 JSFiddle:

JsFiddle

HTML

<div class="img_container">
  <i class="icon-play-circle"></i>
</div>
<br>
<div class="img_container2">
  <i class="icon-play-circle"></i>
</div>

CSS

.img_container
    width:100px;
    height:100px;
    position:relative;
    background:red;


.img_container2
    width:100px;
    height:50px;
    position:relative;
    background:blue;


.icon-play-circle
    position:absolute;
    top:45%;
    left:45%;
    color: white;

【问题讨论】:

【参考方案1】:

这是一种在任何情况下都可以将内容垂直和水平居中的方法,当您不知道宽度或高度或两者时,这很有用:

CSS

#container 
    display: table;
    width: 300px; /* not required, just for example */
    height: 400px; /* not required, just for example */


#update 
    display: table-cell;
    vertical-align: middle;
    text-align: center;

HTML

<div id="container">
    <a id="update" href="#">
        <i class="icon-refresh"></i>
    </a>
</div>

JSFiddle

请注意,此处的宽度和高度值仅用于演示,您可以将它们更改为您想要的任何值(或完全删除它们),它仍然可以工作,因为这里的垂直居中是table-cell 方式的产物显示属性有效。

【讨论】:

【参考方案2】:

由于它们已经是inline-block 子元素,您可以在父元素上设置text-align:center,而不必在子元素上设置widthmargin:0px auto。这意味着它将适用于具有不同 widths 的动态生成的内容。

.img_container, .img_container2 
    text-align: center;

这将使孩子在两个 div 容器中居中。

更新:

对于垂直居中,假设图标的高度已知,您可以使用calc() 函数。

.img_container > i, .img_container2 > i 
    position:relative;
    top: calc(50% - 10px); /* 50% - 3/4 of icon height */

jsFiddle demo - 有效。

对于它的价值 - 你也可以使用 vertical-align:middle 假设 display:table-cell 设置在父级上。

【讨论】:

这不是让孩子水平居中(而不是垂直居中吗?) 是的,很抱歉我没有澄清。主要问题是让它垂直居中。 @scientiffic 我更新了它以包含 calc() jsfiddle.net/aHUtM/6 假设图标的高度是已知的。 谢谢,乔希,我不知道 calc!效果很好。你能把它添加为答案,我会标记它是正确的吗? 我猜这是“最好的”解决方案。 :D【参考方案3】:

水平居中很简单:

text-align: center

当容器为已知高度时垂直居中:

height: 100px;
line-height: 100px;
vertical-align: middle

当容器不是已知高度时垂直居中并且您可以在背景中设置图像:

background: url(someimage) no-repeat center center;

【讨论】:

以上是关于div中的中心图标 - 水平和垂直[重复]的主要内容,如果未能解决你的问题,请参考以下文章

div中的垂直对齐div [重复]

使用CSS垂直和水平对齐(中间和中心)[重复]

如何制作垂直和水平居中的盒装div容器[重复]

将元素水平和垂直对齐到页面的中心[重复]

垂直和水平居中 div 没有定义的高度 [重复]

在任何浏览器维度的中间居中垂直和水平可扩展的 div [重复]