代码之家  ›  专栏  ›  技术社区  ›  Jonathan Fogelström

使用百分比表示的高度时,DIV的位置不正确

  •  1
  • Jonathan Fogelström  · 技术社区  · 9 年前

    我不确定这个问题以前是否被发布过,但我不知道如何有效地问这个问题。

    在我的网站上,我创建了两个大的部分,一个接一个(不指标签),一个高度设置为100%,另一个设置为90%。我在第二部分的正下方添加了一个div。为了使div保持不变,我将“top”设置为190%,以模拟两个部分的长度。尽管我已经为每个部分设置了最小高度,这使得当分区停止调整大小时,div会在分区下方爬行。

    在使用元素的“位置:绝对”时,如何避免这种情况?

    html示例(使用一个更大的部分):

    <html>
        <body>
            <div class="section1"></div>
            <div class="box"></div>
        </body>
    </html>
    

    css示例:

    .section1 {
        display: inline-block; width: 100%; height: 100%; min-height: 500px;
        position: absolute;
    }
    .box {
        width: 100%; height: 200px;
        position: absolute; top: 100%; margin-top: 50px;
    }
    

    谢谢

    乔纳森

    1 回复  |  直到 9 年前
        1
  •  1
  •   Jacob G    9 年前

    只是不要使用 position:absolute .

    我假设您使用它的原因是因为您需要视口的100%高度,而不使用JS。你可以使用 vh 单元,但它没有最好的支持/可靠性。

    最简单的方法是简单地设置 html body height:100%; :

    body,
    html {
      margin: 0;
      height: 100%;
    }
    .full {
      height: 100%;
      background: teal;
    }
    .shorter {
      height: 90%;
      background: #fbfbfb;
    }
    footer {
      background: #222021;
      color: white;
      text-align: center;
      padding: 10px;
    }
    <section class="full"></section>
    <section class="shorter"></section>
    <footer>Made with love by a kitten</footer>

    注意,我确实添加了额外的CSS用于样式设计。