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

试图将一个div覆盖在另一个div之上

鲍驰
2023-03-14

在这段代码中,我试图将一个导航栏(content1)覆盖在另一个导航栏(content)之上,但似乎什么都不起作用。我做错了什么?即使我可以使其覆盖,它们也不是以容器为中心放置的。

null

css prettyprint-override">* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.container {
  width: 100%;
  background-color: blue;
  height: 70px;
  position: relative;
}

#content {
  max-width: 1200px;
  background-color: blue;
  display: flex;
  margin: 0 auto;
  position: absolute;
  z-index: 9;
}

#content1 {
  max-width: 1200px;
  background-color: red;
  display: flex;
  margin: 0 auto;
  z-index: 0;
}

.logo {
  display: flex;
  align-items: center;
  color: white;
  font-size: 23px;
  font-weight: 900;
  margin: 15px;
  font-family: 'Roboto Slab', serif;
}

.container .nav {
  display: flex;
  padding: 10px 10px 10px 100px;
  align-items: center;
  height: 70px;
}

.nav li {
  margin: 20px;
  list-style-type: none;
  color: white;
  font-family: 'Roboto Slab', serif;
  display: flex;
}

.nav {
  margin-left: 150px;
}

.search {
  background-color: red;
  opacity: 0.90;
  height: 70px;
  display: flex;
  align-items: center;
  padding: 10px 10px 10px 390px;
  color: white;
}
<div class="container">
  <div id="content">
    <div class="logo">Google</div>
    <ul class="nav">
      <li>Home</li>
      <li>Services</li>
      <li>Products</li>
      <li>Feedback</li>
    </ul>
    <div class="search"><i class="fas fa-search"></i></div>
  </div>
  <div id="content1">
    <div class="logo">Google</div>
    <ul class="nav">
      <li>Home</li>
      <li>Services</li>
      <li>Products</li>
      <li>Feedback</li>
    </ul>
    <div class="search"><i class="fas fa-search"></i></div>
  </div>
</div>

null

只是想知道如何将我的导航条覆盖在另一个导航条之上并使其在容器中居中,

共有2个答案

窦涵忍
2023-03-14

由于这两个对象已经在一个容器中,因此它们从其父对象继承了一个Z索引。如果您只有两个,重新排序就足够简单了。

我相信,将两个容器中的一个发送到后台,将它们层叠在一起会更容易。由于您正在尝试将第二个容器覆盖在第一个容器之上,因此第一个容器的位置应设置为absolute
完成此操作后,只需将第一个容器设置为z-index:-1;并且将第二个容器设置为任何非负值即可。

这应该起作用:

#content {
  max-width: 1200px;
  background-color: blue;
  display: flex;
  margin: 0 auto;
  position: absolute;
  z-index: -1;
}
#content1 {
  max-width: 1200px;
  background-color: red;
  display: flex;
  margin: 0 auto;
  z-index: 0;
}

解决这个问题的一个更好的方法是将两个Navbar包装在一个容器中,并使用类将它们设置成相同的。然后,使用position:absolute;简单地修改要覆盖的navbar的位置。

下面是一个大致的示例:
HTML

<div class="container">
  <div id="wrap">
  
    <div id="content" class="contents">
      <div class="logo">Google</div>
      <ul class="nav">
        <li>Home</li>
        <li>Services</li>
        <li>Products</li>
        <li>Feedback</li>
      </ul>
      <div class="search"><i class="fas fa-search"></i></div>
    </div>
    
    <div id="content1" class="contents">
      <div class="logo">Google</div>
      <ul class="nav">
        <li>Home</li>
        <li>Services</li>
        <li>Products</li>
        <li>Feedback</li>
      </ul>
      <div class="search"><i class="fas fa-search"></i>test</div>
    </div>
    
  </div>
</div>

CSS

.container {
  width: 100%;
  background-color: blue;
  height: 70px;
  position: relative;
}

#wrap {
  display: flex;
  position: relative;
  max-width: 1200px;
  height: 100%;
  margin: 0 auto;
  background-color: green;
}

.contents {
  top: 0;
  left: 0;
  margin: 0 auto;
  height: 100%;
  width: 100%;
}

#content {
  background-color: blue;
  z-index: 0;
}

#content1 {
  position: absolute;
  z-index: 1;
  background-color: red;
}
白星腾
2023-03-14

如果我理解正确,您需要更改#content1z-index属性,并添加position:absolute

如果元素具有绝对位置,则其位置将不依赖于其他元素的位置(https://developer.mozilla.org/en-us/docs/web/css/position)

如果两个元素位于屏幕上的同一位置,则将显示具有较高z-index属性的元素(https://developer.mozilla.org/en/docs/web/css/z-index)

null

css prettyprint-override">* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.container {
  width: 100%;
  background-color: blue;
  height: 70px;
  position: relative;
}

#content {
width:100%;
  background-color: blue;
  display: flex;
  margin: 0 auto;
  position: absolute;
  z-index: 9;
}

#content1 {
  position:absolute;
  width:100%;
  background-color: red;
  display: flex;
  margin: 0 auto;
  z-index: 10;
}

.logo {
  display: flex;
  align-items: center;
  color: white;
  font-size: 23px;
  font-weight: 900;
  margin: 15px;
  font-family: 'Roboto Slab', serif;
}

.container .nav {
  display: flex;
  padding: 10px 10px 10px 10px;
  align-items: center;
  height: 70px;
}

.nav li {
  margin: 20px;
  list-style-type: none;
  color: white;
  font-family: 'Roboto Slab', serif;
  display: flex;
}

.nav {
  margin-left: 150px;
}

.search {
  background-color: red;
  opacity: 0.90;
  height: 70px;
  display: flex;
  align-items: center;
  padding: 10px 10px 10px 10px;
  color: white;
}
<div class="container">
  <div id="content">
    <div class="logo">Google</div>
    <ul class="nav">
      <li>Home</li>
      <li>Services</li>
      <li>Products</li>
      <li>Feedback</li>
    </ul>
    <div class="search"><i class="fas fa-search"></i></div>
  </div>
  <div id="content1">
    <div class="logo">Google</div>
    <ul class="nav">
      <li>Home</li>
      <li>Services</li>
      <li>Products</li>
      <li>Feedback</li>
    </ul>
    <div class="search"><i class="fas fa-search"></i></div>
  </div>
</div>
 类似资料:
  • 问题内容: 在将一个人叠加到另一个人上时,我需要帮助。 我的代码如下所示: 不幸的是,我不能将或嵌套在第一个内部。 如图所示,它必须是两个单独的,但是我需要知道如何将放置在上方和最右侧,并以的顶部为中心。 问题答案: 我建议使用来了解和子元素。

  • 问题内容: 我希望在上面。我尝试使用,但不起作用。 我已经试过这段代码: 问题答案: 您可以同时添加到div和创建 或者您可以使用,现在应该将其放置在 3D空间中, 而不要在平面中展平。 您也可以使用一些随机的像或 也可以,但是它们不好

  • 各位早上好,我正在创建一个产品销售系统,这个话题会有点长,因为我想好好解释一下。 正在用Vaadin+MySQL+springboot+Maven开发的系统 在主屏幕上,我们有一个网格,上面有“新建”、“更改”和“删除”按钮: 当点击new按钮时,将打开一个窗口,开始“销售”产品: 这里的问题是这样的,当我点击“+项”时会出现以下情况: 问题:创建了一个滚动条(在窗口的右边),保存、关闭和+项按钮

  • 我正试图通过隐藏png来显示后面的gif来播放悬停上的gif。我可以在悬停状态下播放gif,问题是它不在div的中心。我在这里试过:

  • 问题内容: 我是角度新手:-)我只是想将一个div的尺寸设置为另一个,请给予任何帮助。 在控制器中,我添加了: 返回宽度和高度,但未应用 问题答案: 我已经为您的问题创建了解决方案。首先,我将向您解释我做了什么以及为什么这样做。 Angular中的一项基本准则是,应避免在控制器中处理div等DOM元素,而应在指令中执行与DOM元素有关的大多数操作。 指令允许您将功能绑定到特定的dom元素。在这种情

  • 问题内容: 我想做一个涵盖整个页面的div。我将CSS样式的高度设置为:100%,但这仅覆盖可见区域。向下滚动时,我希望它也能覆盖该区域。 问题答案: 使用这种方式,您的div将连续保持在整个可见区域内。 给您的div一个类,并在CSS中创建以下规则