尽管扩展了内容,但仍希望两个对象的高度匹配

Wanting height of two objects to match in spite of expanding content

我的页面包含三个主要部分:

project-arrow-boxlight-gray 在页面左侧,white-green 在右侧。我希望 light-graywhite-green 的底部在同一点相遇并触及我的页脚。如果出现验证错误或任何情况,我的 white-green 部分将更改大小。在不同的屏幕尺寸上,这两个 div(light-graywhite-green)非常合适。有时 light-gray 超过 white-green ,反之亦然。同样,无论屏幕大小如何,我都希望这两个 div 中的 end/bottom 触摸我的页脚。

我尝试将 bottom: 0; 添加到 light-graywhite-green,但这没有帮助。我将 white-green 的高度设置为自动,因此它可以适应 div 的扩展特性。这发生在页脚之前,因此页脚与这些问题无关。

我该怎么做才能使这成为可能?

.project_arrow_box {
  position: relative;
  /*background: rgb(69,186,149);*/
  background: #00a16d;
  border: 4px solid #00a16d;
  width: 33%;
  height: 800px;
  z-index: 99;
}

#project-content-wrap {
  margin: 30% 13%;
}

.white-green {
  background-color: rgb(241, 250, 247);
  width: 66.56%;
  height: auto;
  z-index: 55;
  margin-left: 33.4%;
  margin-right: 0;
  position: absolute;
  top: 0;
  right: 0;
  text-align: center;
}

#white-green-section {
  position: relative;
  left: 30%;
  text-align: center;
  opacity: 0;
}

.light-gray {
  background-color: #E0E0E0;
  width: 33.5%;
  padding-top: 150px;
  bottom: 0;
  margin-bottom: 0;
}

.light-gray-container {
  left: 15%;
  position: relative;
  width: 80%;
  height: auto;
  padding-bottom: 40px;
}
<div class="project_arrow_box">
  <div id="project-content-wrap">
  </div>
</div>
<div class="white-green">
    <div id="white-green-section">
    </div>
</div>
<div class="light-gray">
    <div class="light-gray-container">
    </div>
</div>

您可以使用 Flexbox

body, html {
  margin: 0;
  padding: 0;
}

.container {
  display: flex;
}

.left {
  display: flex;
  flex-direction: column;
  flex: 0 0 33%;
}

.one {
  background: #A1EB88;
  flex: 100vh;
}

.two {
  flex: 100vh;
  background: #F2BB7C;
}

.three {
  background: lightblue;
  flex: 1;
}

footer {
  height: 50px;
  background: red;
  width: 100%;
}
<div class="container">
  <div class="left">
    <div class="one">One</div>
    <div class="two">Two</div>
  </div>
  <div class="three">Three</div>
</div>
<footer>Footer</footer>

使用 Flexbox 可能是最简单的方法:

HTML:

<div class="container">
  <div class="left-container">
    <div class="project-arrow-box">
      <p>

      </p>
    </div>
    <div class="light-grey">
      <p>

      </p>
    </div>
  </div>
  <div class="white-green">
    <p>

    </p>
  </div>
</div>
<div class="footer">
  <p>
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eos, vero?
  </p>
</div>

CSS:

.container, .left-container, .white-green {
  display: -webkit-box;  /* OLD - iOS 6-, Safari 3.1-6, BB7 */
  display: -ms-flexbox;  /* TWEENER - IE 10 */
  display: -webkit-flex; /* NEW - Safari 6.1+. iOS 7.1+, BB10 */
  display: flex;         /* NEW, Spec - Firefox, Chrome, Opera */
  margin: 0;
}

.left-container {
  display: -webkit-box; 
  display: -ms-flexbox;  
  display: -webkit-flex; 
  display: flex;         
  flex-direction: column;
}

.project-arrow-box {
  background-color: white;
  flex-grow: 1;
  padding: 1em;
}

.light-grey {
  background-color: #aaa;
  flex-grow: 1;
  padding: 1em;
}

.white-green {
  background-color: #ccFFcc;
  flex-grow: 1;
  padding: 1em;
}

.footer {
  background-color: #000;
  color: #fff;
}

参见:https://jsfiddle.net/bL2ymhps/1/