【问题标题】:Center an inline-block element within a div [duplicate]在 div 中居中一个 inline-block 元素[重复]
【发布时间】:2019-08-09 23:29:07
【问题描述】:

我有一个必须在 div 中居中的 inline-block 元素。

<div class="parent">
  <div class="other">
    some stuff that should not be centered
  </div>
  <div class="other2">
    some stuff that should not be centered
  </div>
  <div class="element">
    some element that needs to be centered
  </div>
</div>

我只能访问 CSS 而不能访问 HTML。我不能在父 div 上使用“text-align:center”,因为父 div 中有很多容器。该元素必须保持为 inline-block 元素。

我只想将“元素”居中。我该怎么做?

【问题讨论】:

  • 你不能在.element 类上只使用text-align: center 吗?
  • 对不起,应该指定它不是需要居中的文本。我试图将整个“元素” div 居中,而不是其中的文本。
  • 由于您不/不能使用 Flexbox,我更改了副本。看看这个答案:stackoverflow.com/a/46590898/2827823 ... 另请注意,您可以将position: relative 与这个答案一起使用:stackoverflow.com/a/34071945/2827823

标签: html css


【解决方案1】:

text-align: center 确实是要走的路;这只是找到一个只针对您所追求的元素的选择器的问题。根据你上面的例子,你应该需要的是.element

.element {
  text-align: center;
}
<div class="parent">
  <div class="other">
    some stuff that should not be centered
  </div>
  <div class="other2">
    some stuff that should not be centered
  </div>
  <div class="element">
    some stuff that needs to be centered
  </div>
</div>

假设element 类有多个元素,您可以使用child combinator selector (&gt;) 作为.parent &gt; .element 来专门定位.parent 的直接子元素:

.parent > .element {
  text-align: center;
}
<div class="parent">
  <div class="other">
    some stuff that should not be centered
  </div>
  <div class="other2">
    some stuff that should not be centered
  </div>
  <div class="element">
    some stuff that needs to be centered
  </div>
</div>

您还可以将:nth-of-type 之类的伪选择器与.parent &gt; div:nth-of-type(3) 结合使用,这将针对.parent 的第三个&lt;div&gt; 子级,从而获得相同的结果:

.parent > div:nth-of-type(3) {
  text-align: center;
}
<div class="parent">
  <div class="other">
    some stuff that should not be centered
  </div>
  <div class="other2">
    some stuff that should not be centered
  </div>
  <div class="element">
    some stuff that needs to be centered
  </div>
</div>

如果您希望将整个元素而不只是文本居中,则您正在寻找margin: 0 auto,但请注意&lt;div&gt; 元素默认占据该行的完整width,因此您' 也会想在元素上设置一个width。理想情况下这将是width: fit-content,以确保元素只占用与文本一样多的空间:

.parent > .element {
  margin: 0 auto;
  width: fit-content;
}
<div class="parent">
  <div class="other">
    some stuff that should not be centered
  </div>
  <div class="other2">
    some stuff that should not be centered
  </div>
  <div class="element">
    some stuff that needs to be centered
  </div>
</div>

请注意,margin 仅适用于块级元素(默认情况下是 &lt;div&gt;),因此如果您使用 display: inline-block 手动更改它(或者您正在使用 &lt;span&gt;),您将需要额外设置display: block

【讨论】:

  • 这似乎只是将“元素”内的东西居中对齐。我正在尝试将整个 div 以父级为中心。
  • 那么你正在寻找margin: 0 auto,但请注意你需要给它一个固定的width。我会更新我的答案来提及这一点。
  • 您还需要设置display:block,否则margin:0 auto 将不起作用。
  • @jdfink - &lt;div&gt; 元素默认是块级的,不过我也会指定。
  • @ObsidianAge 我只提到这一点是因为 OP 说它是一个需要居中的内联块元素。您是 100% 正确的,只是为 OP 指出了这一点。
猜你喜欢
  • 2013-05-22
  • 2019-03-27
  • 2013-05-20
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
相关资源
最近更新 更多