为什么在 HTML 中居中 div 如此困难?

Why is it so hard to center divs in HTML?

为什么这段代码没有将所有三个元素置于外部 div 的中心?

.center 
{
  margin-left: auto;
  margin-right: auto;
  width: 70%;
}
<div class="center">
  <h1 class="center">Headline</h1>

  <div class="center"><span>Some text</span></div>

  <form class="center">
    <button>Button</button>
  </form>
</div>

如何在不指定绝对值的情况下执行此操作? 为什么用 margin-left: auto;margin-right: auto; 这样的 hack 很难将 divs 集中在 HTML 中?

要居中对齐文本或行内元素,您只需要使用 text-align: center;

自动边距设置为与内联块或块级元素的某些固定宽度元素对齐。

因此,在您的情况下,以下内容以 div 元素而非文本为中心:

.center {
  margin-left: auto;
  margin-right: auto;
  width: 70%;
} 

添加 text-align: center 也会对齐文本:

.center {
  margin-left: auto;
  margin-right: auto;
  width: 70%;
  text-align: center;
}

  .center {
 margin-left: auto;
 margin-right: auto;
 width: 70%;
 text-align: center;
}
<div class="center">
  <!-- container -->
  <h1 class="center">Headline</h1>

  <div class="center">Some text</div>

  <form class="center">
    <button>Button</button>
  </form>
</div>

首先,您可以使用 <center> 元素将其内容居中对齐。

不幸的是,CSS 目前还没有办法完整复制 <center> 布局管理器。

<center>
  <!-- container -->
  <h1 class="center">Headline</h1>

  <div class="center">Some text</div>

  <form class="center">
    <button>Button</button>
  </form>
</center>

更新:技术上 <center> 在 HTML5 中已弃用,但它适用于所有浏览器。并且会一直工作到 CSS 没有匹配的功能。

但您可能会对此感到满意:

.center {
  text-align:center;
}
<div class="center">
  <!-- container -->
  <h1 class="center">Headline</h1>

  <div class="center">Some text</div>

  <form class="center">
    <button>Button</button>
  </form>
</div>

当使用具有 auto 属性的边距时,您需要提供一个固定值(不是百分比)作为宽度。

例如,如果您将百分比更改为 px、cm、in 或 em 值,您的代码将正常工作。

        .center
        {
            margin-left: auto;
            margin-right: auto;
            width: 70px;
        }

https://jsfiddle.net/s1napggb/

然而,为了使具有浮动值的元素居中,需要 flexbox、CSS 媒体查询或一些 Javascript。

Here是一个例子,这是你要找的吗?

Here 是居中元素的好指南

我认为您应该将元素分开,而不是尝试使用一刀切 class,特别是当您想要引用 div 和文本时,它可能会随着项目的缩放而变得更脏。但是,上面的示例使用了您的代码,因为您似乎想对所有项目使用相同的 class。我使用 display: block 以防元素不是块项目。

上面的项目居中。

请记住

CSS

.center {
  display: block;
  width: 70%;
  text-align: center;
  margin: 0 auto;
}

只需添加 text-align: center

这是一个例子 https://jsfiddle.net/txtz8duL/

.center {
  margin-left: auto;
  margin-right: auto;
  width: 70%;
  text-align: center;  
}

这里还有一些变化: https://css-tricks.com/centering-css-complete-guide/

您可以使用 text-align 将任何内容居中,如下所示: <h1 style="text-align:center"> Sample Heading</h1>