css - 三列,调整最大高度到最后一列,用CSS overflow hidden

标签 css

我想要一个响应式的三列,每列宽度为 33.33%。 最后一栏为主,整个内容的高度不能高于最后一栏的高度。但是,前两列逐个显示带有文本的 div 列表,并且它们的高度可能高于第三列。我想隐藏前两列的溢出,如果某些文本 div 不可见,我很好。最具挑战性的是在内容底部隐藏部分可见的文本 div。

我做了这样的事情:

.content { width: 800px; display: table; table-layout: fixed; background-color: #fff}
.oneandtwo {width: 66.66%; display: table-cell; position: relative; overflow: hidden; vertical-align: top;}
.oneandtwocontainer {display: table; table-layout: fixed; position: absolute; }
.one, .two {width: 50%; display: table-cell; vertical-align: top;}
.third {width: 33.33%; display: table-cell; background-color: #ddd; vertical-align: top;}
.text {padding: 10px; border: 1px dotted black}
.shouldbehidden {background-color: #fca2a2 }
<div class="content">
  <div class="oneandtwo">
    <div class="oneandtwocontainer">
		 <div class="one">
		 
			<div class="text"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>
    		<div class="text"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>
			<div class="text shouldbehidden" > Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>
    		<div class="text shouldbehidden"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>
			<div class="text shouldbehidden"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>
    		<div class="text shouldbehidden"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>

			
		 </div>
		 <div class="two">
		 
			<div class="text"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>
    		<div class="text"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>
			<div class="text shouldbehidden"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>
    		<div class="text shouldbehidden"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>
			<div class="text shouldbehidden"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>
    		<div class="text shouldbehidden"> Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.  </div>



		 </div>
	 </div>
  </div>
  <div class="third">
       <div class="text"> Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna.  </div>

  </div>
</div>

由于位置 - 相对/绝对和溢出:隐藏,内容的高度正在调整为第三列的高度。但是,我希望此示例中的所有红色文本框都变得不可见 - 截断的文本看起来很糟糕。

我想我可以用 flex 布局来做到这一点,但不知 Prop 体怎么做。

我知道 javascript 可以解决这个问题(例如使用 jQuery outerHeight() 计算),但首先我想尝试使用纯 css。

有什么想法吗?

最佳答案

是这样的吗?

* {
  box-sizing: border-box;
}
.content {
  position: relative;
  overflow: hidden;
}
.one,
.two,
.three {
  width: 33.3%;
  padding: 0 1em;
}
.one,
.two {
  position: absolute;
}
.one {
  left: 0;
}
.two {
  left: 33.3%
}
.three {
  position: relative;
  left: 66.6%;
}
<div class="content">
  <div class="oneandtwo">
    <div class="oneandtwocontainer">
      <div class="one">

        <div class="text">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>
        <div class="text">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>
        <div class="text shouldbehidden">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>
        <div class="text shouldbehidden">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>
        <div class="text shouldbehidden">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>
        <div class="text shouldbehidden">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>


      </div>
      <div class="two">

        <div class="text">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>
        <div class="text">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>
        <div class="text shouldbehidden">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>
        <div class="text shouldbehidden">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>
        <div class="text shouldbehidden">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>
        <div class="text shouldbehidden">Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.</div>



      </div>
    </div>
  </div>
  <div class="three">
    <div class="text">Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Maecenas malesuada elit lectus felis, malesuada ultricies.
      Curabitur et ligula. Ut molestie a, ultricies porta urna.</div>

  </div>
</div>

关于css - 三列,调整最大高度到最后一列,用CSS overflow hidden ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37723116/

相关文章:

jquery - 绝对图像覆盖其他div

html - 高度为 100% 图像的 Chrome 随机不保持纵横比并拉伸(stretch)图像。

html - CSS 和 float 中的 float

javascript - 将响应度添加到图像 slider

css - jQuery Mobile - 页脚 - 导航栏 - 当渲染显示为三列和两行网格布局时

css - Bootstrap 仅覆盖 1 种导航颜色

html - 需要 CSS 帮助 |悬停图像 |放大效果

javascript - SVG foreignObject 不在 Safari 中显示

html - CSS:如果页面滚动,则 Div 向下 float

html - CSS 如何找到子元素?