【问题标题】:Center Content horizontally and vertically in <main> Part not on Full Page在 <main> 部分中水平和垂直居中内容不在整页上
【发布时间】:2020-12-29 22:28:37
【问题描述】:

所以我已经在&lt;header&gt; 部分创建了一个导航栏,并在我的网站上创建了一个页脚。我的&lt;main&gt; 部分中还有一个&lt;div class="UUDiv"&gt;,其中包含一个段落和一个标题。现在,我想将&lt;div class="UUDiv"&gt; 水平和垂直居中,但只在主要部分。使用下面的代码,我只将它集中在整个页面的中心,所以我的 Div 与我的页脚重叠......这是我的代码:\

html {
  height: 100%;
}

body {
  margin: 0;
  min-height: 100%;
  display: flex;
  flex-direction: column;
}

.UUDiv {
  text-align: center;
  position: absolute;
  right: 50%;
  bottom: 50%;
  transform: translate(50%, 50%);
}
<header class="RestHeader">
  <nav class="navigation">Navigation...with
    <ul>
      <li> List </li>
    </ul>etc.</nav>
</header>
<main>
  <div class="UUDiv">
    <h1>Headline</h1>
    <p>Text</p>
  </div>
</main>
<footer>
  <div class="footer">Footer...with
    <ul>
      <li> Another List </li>
    </ul> etc.</div>
</footer>

感谢您的帮助!

【问题讨论】:

  • 如果你使用position: absolute,你也需要设置页脚的位置
  • @RicardoPontual 好的,我尝试将页脚相对定位,但它就在我的主要内容之上。我也尝试定位我的
    相对位置,但随后内容走出了我的窗口......我的窗口顶部只有几行......这有点奇怪,我是 html 和 css 的新手所以我真的不知道该怎么办。

标签: html css centering


【解决方案1】:

您可以使用 flexbox 来代替绝对定位您的 div。 给你的&lt;main&gt; 一个display: flex 并像这样将它的内容居中:

main {
  display: flex;
  align-items: center;
  justify-content: center;
}
.UUDiv {
  text-align: center;
}

然后它将保持在您的&lt;main&gt; 的中心。

完整示例:

html {
  height: 100%;
}

body {
  margin: 0;
  min-height: 100%;
  display: flex;
  flex-direction: column;
}

main {
  display:flex;
  align-items:center;
  justify-content:center;
}
.UUDiv {
  text-align: center;
}
<header class="RestHeader">
  <nav class="navigation">Navigation...with
    <ul>
      <li> List </li>
    </ul>etc.</nav>
</header>
<main>
  <div class="UUDiv">
    <h1>Headline</h1>
    <p>Text</p>
  </div>
</main>
<footer>
  <div class="footer">Footer...with
    <ul>
      <li> Another List </li>
    </ul> etc.</div>
</footer>

【讨论】:

  • 感谢您的回答。我认为它与上面的非常相似,所以你的也应该可以,但是我上面的页脚也有同样的问题。我试图找出另一种方法让我的页脚停留在页面底部,以便您的答案有效。
【解决方案2】:

试试下面的代码片段。

html {
  min-height: 100%;
}

body {
  margin: 0;
  min-height: 100%;
  display: flex;
  flex-direction: column;
}

.UUDiv {
  text-align: center;
  display:flex;
  justify-content:center;
  align-items:center;
}
  
 ul{
   display:flex;
   list-style:none;
 }
 ul li{
  margin-left:1rem;
 }
<header class="RestHeader">
  <nav class="navigation">Navigation...with
    <ul>
      <li> List </li>
      <li> List </li>
    </ul>
 </nav>
</header>
<main>
  <div class="UUDiv">
    <h1>Headline</h1>
    <p>Text</p>
  </div>
</main>
<footer>
  <div class="footer">Footer...with
    <ul>
      <li> Another List </li>
      <li> Another List </li>
    </ul> 
  </div>
</footer>

【讨论】:

  • 首先谢谢。我认为这应该可行,但对我来说有点不...所以我看到了内容,它没有重叠,但它也不在中心...它在我的导航栏下有一点距离.
  • 我现在明白了为什么它不适合我。我的页面底部有一个页脚,就像在我的身体中显示的那样,最小高度为 100%,显示 flex 和 flex-direction 列。在我的页脚中,我有margin-top auto,所以它总是被向下推。这个边距现在占用了我的内容应该在的空间。
猜你喜欢
  • 2011-09-04
  • 2012-09-23
  • 1970-01-01
  • 2020-05-28
  • 2013-03-19
  • 2012-02-22
  • 1970-01-01
  • 2015-09-16
  • 2012-08-31
相关资源
最近更新 更多