【问题标题】:Overlay Not Covering Entire Header覆盖不覆盖整个标题
【发布时间】:2019-02-07 22:02:58
【问题描述】:

我不太确定如何表达这个问题,但我会尝试。 所以,我试图在背景图像的顶部进行叠加,标题本身占用 100vh,但是当我放置包含图像的叠加层时,导航中的一些填充将背景颜色推到下方视口似乎。我试图从导航元素中删除边距,它使背景上升了一点,但不是一直。也许我在这里遗漏了一些非常简单的东西,但我似乎无法理解它。

这是codepen的链接(我知道代码有点乱,只是一个测试):https://codepen.io/Jmp93/pen/BMJwov

<nav id="main-nav">
    <h3>TEST|Web</h3>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>
  <header>
    <h1>Test Text Sample</h1>
    <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Sunt dolores, dolorum minima id beatae aperiam saepe
      sapiente animi quas earum?</p>
  </header>

  <section id="start-section">
    <div class="container">
      <h1 class="m-heading">Some Text</h1>
      <p class="lead">Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta possimus dolore temporibus aut,
        reiciendis voluptatum voluptate consequatur ducimus. Sunt minus nihil nulla in commodi. In officiis, harum amet
        eos nesciunt illum rerum aliquam quasi modi natus quis laudantium qui quae?</p>
    </div>
  </section>
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: Arial, Helvetica, sans-serif;
  background: #333;
  color: #fff;
  margin: 0;
  line-height: 1.5;
}

.m-heading {
  font-size: 2rem;
  margin-bottom: .75rem;
}

.lead {
  font-size: 1.2rem;
}

header {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-content: center;
  height: 100vh;
  text-align: center;
}

header:before {
  content: '';
  background: url('https://source.unsplash.com/1600x900/?nature,water') no-repeat center center/cover;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0.2;
  z-index: -1;
}

header h1 {
  font-size: 4rem;
  margin: 1rem;
}

#main-nav {
  display: flex;
  position: sticky;
  top: 0;
  left: 0;
  justify-content: space-between;
}

#main-nav h3 {
  font-size: 2rem;
  margin: 2rem;
}

#main-nav ul {
  display: flex;
  justify-items: center;
  font-size: 1.2rem;
  margin: 2rem;
}

#main-nav ul li {
  list-style: none;
}

#main-nav ul li a {
  color: #fff;
  text-decoration: none;
  padding: 1rem;
}

#main-nav ul li a:hover {
  background: #444;
  border-radius: 25px;
}

.container {
  max-width: 900px;
  margin: 0 auto;
  padding: 2rem;
}

#start-section {
  background: #fff;
  color: #000;
  text-align: center;
}

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: html css background position overlay


    【解决方案1】:

    尝试应用相对于标题本身的位置 :) 通常如果您使用绝对位置,包含它的主要元素应该是相对的。这是使绝对元素定位在其父元素的宽度和高度的 100% 并且在没有参考的情况下不浮动的正确方法。

    【讨论】:

    • 嗨,我确实尝试过,但它似乎产生了相反的效果,因为它推动了背景并向下叠加,导致同样的问题,但在顶部而不是底部!不知道为什么仍然会发生这种情况。非常感谢您的回答!
    • 如果我看到的和你看到的一样,那是因为标题在导航之后开始。所以,因为它是一个之前的伪元素,它覆盖了整个标题,它只是没有覆盖导航栏区域。所以我的建议是,即使我不喜欢负边距:给你的主导航栏一个高度,然后给标题一个边距顶部:-yournavbarheight。在标题上保持相对位置。希望它有效:)
    • 我刚刚在阅读本文之前发现它是导航,感谢您的解决方案,它运行良好!但是,是否有另一种不需要负边距的解决方案?或者这将是在这种情况下解决它的最明智的方法吗?非常感谢您的帮助!
    • 其实不需要另一种解决方案,这个完美地完成了这项工作。再次感谢您的帮助! :)
    • 我想我会在标题中插入导航栏,这样背景就可以覆盖这两个区域。实际上,我认为从语义上讲,这样是有意义的。您可以尝试一下,看看结果是否如您所愿。没问题,我很高兴它成功了!
    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多