如何停止div.content与标头重叠?

时间:2019-01-19 13:48:50

标签: html css

.myHeader{
    display: block;
    position: fixed;
    height: auto;
    width: 100%;
    z-index: 100;
}    
h1 {
    font-size: 39px;
    color: rgba(255, 255, 255, 0.842);
    /* border-bottom: 2px solid #f6f4f84d; */
    text-align: center;
    margin-top: 0;
    padding: 15px 18px;
  }
  ul {
    list-style-type: none;
    position: fixed;
    top: 80px;
    width: 100%;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
  }


  li a {
    display: block;
    color: white;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
  }

  .content{
    display: block;
    color: white;
  }
<body>
    <header class="myHeader">
        <h1>The Foreign Journal</h1>
        <ul>
          <li><a href="#intro">Intro</a></li>
          <li><a href="#projects">Projects</a></li>
          <li><a href="#contact">Contact</a></li>
        </ul>
    </header>
    <div class="content">
     something something
    </div>
</body>

我创建了一个带有类的标头,用于在页面顶部修复h1和nav列表。现在,每次我在其他body div中加载任何内容时,它们都会与第一个div重叠。有什么建议吗?

我试图将显示从块更改为内联块,但我现在只是被卡住,似乎无法解决。

<body>
    <header class="myHeader">
        <h1>The Foreign Journal</h1>
        <ul>
          <li><a href="#intro">Intro</a></li>
          <li><a href="#projects">Projects</a></li>
          <li><a href="#contact">Contact</a></li>
        </ul>
    </header>
    <div class="content">
     something something
    </div>

then on css 


.myHeader{
    display: block;
    position: fixed;
    height: auto;
    width: 100%;
    z-index: 100;
}    
h1 {
    font-size: 39px;
    color: rgba(255, 255, 255, 0.842);
    /* border-bottom: 2px solid #f6f4f84d; */
    text-align: center;
    margin-top: 0;
    padding: 15px 18px;
  }
  ul {
    list-style-type: none;
    position: fixed;
    top: 80px;
    width: 100%;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
  }


  li a {
    display: block;
    color: white;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
  }

  .content{
    display: block;
    color: white;
  }

2 个答案:

答案 0 :(得分:1)

解决方案1:

为标头设置固定高度,并添加具有相同值的“正文”边距:

例如:

body {
    margin-top: 200px;
}
.myHeader{
    height: 200px;
    display: block;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 100;
}   

解决方案2:
1.从ul选择器中删除“位置”和“顶部”属性。
2.在“ .myHeader”类中添加“顶部”和“左侧”属性。
3.添加一个jQuery脚本来动态设置页面的上边距。

<style>
ul {
    list-style-type: none;
    width: 100%;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
}

.myHeader{
    display: block;
    position: fixed;
    height: auto;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 100;
}  
</style>

<script>
    $(document).ready(() => {
        let headerHeight = $('.myHeader').height();
        $('body').css({
            'margin-top': headerHeight + 'px'
        });
    });
</script>

答案 1 :(得分:0)

如果您将标题固定在页面顶部,则该标题将与未固定的内容重叠,例如,可以通过为内容设置顶部间隙来避免这种情况。

我将尝试编写一段代码向您展示。

在以下示例中,您将看到div与固定标头重叠,第二个标头将保留在其下方,希望对您有所帮助!

在这里您可以看到您的身体从标头下方开始,如果您希望标头始终固定,这很好。

body{
  margin-top: 100px;
}

header{
  width: 75%;
  background-color: red;
  position: fixed;
  top:0;
  height: 100px;
}

.firstdiv{
  width: 100%;
  background-color: blue;
  height: 100px;
}

.seconddiv{
  width: 50%;
  background-color: yellow;
  height: 100px;
}
<body>
  <header>Your header goes here</header>
  <div class="firstdiv">The rest of your website goes here</div>
  <div class="seconddiv">The rest of your website goes here</div>
</body>

您可以在此处看到,如果将第二个div的位置降低了100px,则第二个div将保留在标题下。

header{
  width: 75%;
  background-color: red;
  position: fixed;
  height: 100px;
}

.seconddiv{
  position: relative;
  top: 100px;
  width: 50%;
  background-color: yellow;
  height: 100px;
}
<body>
  <header>Your header goes here</header>
  <div class="seconddiv">The rest of your website goes here</div>
</body>

当您不将内容移动到标题下方时,此代码段显示div与标题重叠

body{
  margin: 0;
}

header{
  width: 75%;
  background-color: red;
  position: fixed;
  top:0;
  height: 100px;
}

.firstdiv{
  width: 100%;
  background-color: blue;
  height: 100px;
}
<body>
  <header>Your header goes here</header>
  <div class="firstdiv">The rest of your website goes here</div>
</body>