【问题标题】:Pushing a Div Below Another将 div 推到另一个下方
【发布时间】:2017-01-04 06:55:42
【问题描述】:

我有一个 div 部分 (#section1),我想保持 100% 的高度,但如果需要可以扩展以适应其他内容。宽度为 100%。当您向下滚动页面 (#section2) 时,我在其下方有另一个 div,相同的原则是 100% 高度和宽度,高度根据需要扩展。我的问题是,第二个不会一直向下推,因为第一个 div 是绝对的。相反,它上面有第一部分。有人有建议吗?我正在为这个项目使用 Bootstrap 4。

header {
  line-height: 100px;
  height: 100px;
  width: 100%;
  background: #f3f3f3;
  position: fixed;
  top: 0;
  z-index: 2;
}
html {
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
  min-height: 100%;
  height: 100%;
}
body {
  background: none;
  height: 100%;
}
p {
  font-size: 20px;
  margin: 0;
}
#section1 {
  padding: 0;
  margin: 0;
  background-color: #292929;
  margin: 0 auto;
  min-height: 100%;
  width: 100%;
  position: absolute;
}
#section2 {
  padding: 0;
  margin: 0;
  background-color: red;
  margin: 0 auto;
  min-height: 100%;
  width: 100%;
}
#section2 p {
  background-color: inherit;
  max-width: 600px;
  margin: 0 auto;
}
#section2 a {
  background-color: #2eb233;
  color: #ffffff;
  font-weight: 700;
  font-size: 20px;
  padding: 15px 40px;
}
#section2 a:hover {
  text-decoration: none;
  background-color: hsl(122, 79%, 38%);
}
<!--Header-->
<header></header>

<!--Section 1-->
<div id="section1">
  <div class="container">
    <div class="row">
      <div class="col-md-6 push-md-6">
        <div id="quote-section">
          <h1>What our customers <br> have to say...</h1>
          <div id="quote-box">
            <p><em>"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore repellat eos quas, similique tempora at magni ab cumque blanditiis labore provident quae dolorem optio nobis vel debitis quasi, rem recusandae!"</em>
            </p>
            <p id="quote-location">(Location)</p>
          </div>

          <a class="call-to-action" href="#">Find A Location</a>
          <div id="border-section-off"></div>
          <a class="call-to-action" href="#">Order Our Home Study Course</a>
        </div>
      </div>
    </div>
  </div>
</div>

<!--Section 2-->
<div id="section2">
  <h1>Who We Are...</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nemo quaerat odit cumque assumenda voluptates ipsum nisi, aliquid consequuntur obcaecati commodi aperiam sequi officiis illo adipisci inventore, beatae, ex ab eveniet.Lorem ipsum dolor sit amet,
    consectetur adipisicing elit. Nemo quaerat odit cumque assumenda voluptates ipsum nisi, aliquid consequuntur obcaecati commodi aperiam sequi officiis illo adipisci inventore, beatae, ex ab eveniet. Lorem ipsum dolor sit amet, consectetur adipisicing
    elit. Consequuntur iste suscipit deserunt ipsum officia, rerum. Aliquam distinctio, quia placeat praesentium, nesciunt fugiat, provident assumenda voluptates voluptate esse totam, nam vero!Lorem ipsum dolor sit amet, consectetur adipisicing elit.
    Magni quia officia quasi voluptas animi ex delectus reiciendis, commodi, voluptatum nemo, ullam sequi saepe! Ut dicta quidem odit cupiditate. Reprehenderit, id.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero quibusdam in laborum nobis
    harum aspernatur, quidem repellat non nostrum, error dolore beatae saepe deserunt atque nemo repudiandae praesentium dolorem. Autem?</p>
</div>

【问题讨论】:

  • 只删除第一部分的position:absolute - 它没有任何作用。
  • 如果我的回答不符合您的需要,请告诉我

标签: html css


【解决方案1】:

根据您需要支持的浏览器,您可以从部分中删除绝对位置和最小高度并使用:

height: 100vh;

这会将部分设置为浏览器视口高度的 100%。

虽然这是一个相当新的添加,所以请查看http://caniuse.com/viewport-units/

【讨论】:

  • 我希望支持所有主流浏览器,包括 Chrome、Internet Explorer、Firefox 和 Opera。
  • IE8 将是唯一的拦截器。
【解决方案2】:

为什么您需要第 1 节是绝对的,如果您删除该属性,一切都会正常运行以下代码:

header {
  line-height: 100px;
  height: 100px;
  width: 100%;
  background: #f3f3f3;
  position: fixed;
  top: 0;
  z-index: 2;
}
html {
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
  min-height: 100%;
  height: 100%;
}
body {
  background: none;
  height: 100%;
}
p {
  font-size: 20px;
  margin: 0;
}
#section1 {
  padding: 0;
  margin: 0;
  background-color: #292929;
  margin: 0 auto;
  min-height: 100%;
  width: 100%;
  //position: absolute;
}
#section2 {
  padding: 0;
  margin: 0;
  background-color: red;
  margin: 0 auto;
  min-height: 100%;
  width: 100%;
}
#section2 p {
  background-color: inherit;
  max-width: 600px;
  margin: 0 auto;
}
#section2 a {
  background-color: #2eb233;
  color: #ffffff;
  font-weight: 700;
  font-size: 20px;
  padding: 15px 40px;
}
#section2 a:hover {
  text-decoration: none;
  background-color: hsl(122, 79%, 38%);
}
<!--Header-->
<header></header>

<!--Section 1-->
<div id="section1">
  <div class="container">
    <div class="row">
      <div class="col-md-6 push-md-6">
        <div id="quote-section">
          <h1>What our customers <br> have to say...</h1>
          <div id="quote-box">
            <p><em>"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore repellat eos quas, similique tempora at magni ab cumque blanditiis labore provident quae dolorem optio nobis vel debitis quasi, rem recusandae!"</em>
            </p>
            <p id="quote-location">(Location)</p>
          </div>

          <a class="call-to-action" href="#">Find A Location</a>
          <div id="border-section-off"></div>
          <a class="call-to-action" href="#">Order Our Home Study Course</a>
        </div>
      </div>
    </div>
  </div>
</div>

<!--Section 2-->
<div id="section2">
  <h1>Who We Are...</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nemo quaerat odit cumque assumenda voluptates ipsum nisi, aliquid consequuntur obcaecati commodi aperiam sequi officiis illo adipisci inventore, beatae, ex ab eveniet.Lorem ipsum dolor sit amet,
    consectetur adipisicing elit. Nemo quaerat odit cumque assumenda voluptates ipsum nisi, aliquid consequuntur obcaecati commodi aperiam sequi officiis illo adipisci inventore, beatae, ex ab eveniet. Lorem ipsum dolor sit amet, consectetur adipisicing
    elit. Consequuntur iste suscipit deserunt ipsum officia, rerum. Aliquam distinctio, quia placeat praesentium, nesciunt fugiat, provident assumenda voluptates voluptate esse totam, nam vero!Lorem ipsum dolor sit amet, consectetur adipisicing elit.
    Magni quia officia quasi voluptas animi ex delectus reiciendis, commodi, voluptatum nemo, ullam sequi saepe! Ut dicta quidem odit cupiditate. Reprehenderit, id.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero quibusdam in laborum nobis
    harum aspernatur, quidem repellat non nostrum, error dolore beatae saepe deserunt atque nemo repudiandae praesentium dolorem. Autem?</p>
</div>

【讨论】:

  • 我正在使用绝对位置使第一部分一直到顶部,标题在顶部。基本上我想要做的是让第一部分默认填充浏览器高度,并在需要时扩展。第二部分以及我计划添加的其他部分也将填充浏览器高度。
  • 感谢您的帮助!我之前尝试过这个,但我一定没有以同样的方式看待它。当我回到它时,我能够找到如何修复它上面的未知空白,这是由于删除了绝对定位引起的。
  • 感谢 Colton,我也建议你研究一下 bootstrap,它是一个很好的框架,会让你的事情变得简单。 Bootstrap examples
猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
相关资源
最近更新 更多