当前位置: 首页 > 知识库问答 >
问题:

在div中居中图标-水平和垂直[复制]

翟曦
2023-03-14

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

JSFIDLE公司

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;
}

共有3个答案

瞿子濯
2023-03-14

水平居中非常简单:

text-align: center

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

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

垂直居中当容器高度未知时,可以在背景中设置图像:

background: url(someimage) no-repeat center center;
汪胡非
2023-03-14

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

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>

JSFIDLE公司

请注意,此处的宽度和高度值仅用于演示,您可以将其更改为任何需要的值(或完全删除),并且仍然可以使用,因为此处的垂直居中是表格单元格显示属性工作方式的产物。

诸葛奇玮
2023-03-14

由于它们已经是内联块子元素,因此可以在父元素上设置文本对齐:居中,而无需在子元素上设置宽度或边距:0px自动。这意味着它将适用于动态生成的具有不同宽度的内容。

.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演示-它的工作原理。

值得一提的是,您还可以使用垂直对齐:中间,假设显示:table-cell设置在父级上。

 类似资料:
  • 问题内容: 我弹出一个包含ASP.NET表单的弹出窗口,单击链接“请求信息”,然后出现该表单。 但是,具有链接“请求信息”以触发弹出窗口的页面包含很多内容,因此需要滚动才能看到该链接。 如果用户滚动阅读内容,则需要始终居中,否则,如果他们不滚动,弹出窗口仍将居中显示在屏幕上。 在绝对定位,整个页面宽度与边距设置为。 问题答案: 如果div具有固定的宽度和高度,请使用:(如果width = 120p

  • 问题内容: 有没有办法在 垂直和水平方向上输入一个DIV, 但这很重要, 当窗口小于内容时,内容将不会被剪切 。div必须具有背景色,宽度和高度。 我总是将div的中心定位为绝对位置和负边距,如提供的示例所示。但是它有一个问题,那就是削减内容的顶部。有没有一种方法可以将div.content居中而不会出现此问题? CSS: HTML: 我的问题不是重复的“如何在水平和垂直方向上居中放置元素?”1-

  • 问题内容: 如何使用flexbox在容器内水平和垂直居中div。在下面的示例中,我希望每个数字都彼此相邻(按行),并水平居中。 问题答案: 我认为您想要以下内容。 你的元素应该是块级(而非)如果你想要的高度和顶部/底部填充,以正常工作。 另外,在上,将宽度设置为而不是。 您的属性很好。 如果您希望垂直居中于视口中,请为和分配100%的高度,然后将页边距清零。 请注意,需要一个高度才能看到垂直对齐效

  • 如何使用FlexBox在容器内水平和垂直地居中div。在下面的例子中,我希望每一个数字在彼此下面(在行中),水平居中。 null null http://codepen.io/anon/pen/zlxbo

  • 问题内容: 我正在尝试在屏幕的正中央为我的网站中心的目标网页创建一个div,但是它不起作用。 这是我的代码 CSS: HTML: 谢谢。 问题答案: 注意: 如果您尝试将div水平和垂直居中放置,建议您查看flexbox。您仍然需要提供后备支持,但是flexbox是未来,这太神奇了。 更新: 现在所有现代浏览器都支持flexbox 。 首先,您需要给div静态宽度和高度。 其次,你必须设置和那么你