html - 仅使用 CSS 在动态大小的元素上设置宽度或高度的方法

标签 html css flexbox

除了使用 flexbox 之外,还有哪些方法可以在同级动态更改其大小的容器中设置高度?仅使用 CSS。

我问的原因是我必须支持一些非常老的浏览器。

例子:

<div class="widget">
    <div class="nav">...</div>
    <div class="content">...</div>
</div>

我不知道小部件的大小,因为客户可以根据需要更改尺寸。 nav 元素也是可定制的。要注意的是,我想在内容超出剩余空间时提供滚动。

最佳答案

希望您可以修改您的 HTML 结构以添加两个容器 <div>元素。这样做将允许您利用 display: table , display: table-rowdisplay: table-cell CSS 属性。

通过在 .nav 上设置较小的高度值单元格,它将自动扩展到其内容所需的任何大小。并且不在 .content 上设置高度单元格,它将填充剩余空间。

最后,使用内部 <div>max-height: 100%overflow-y: scroll ,当内容对于可用空间来说太大时,您可以强制滚动内容。

.widget {
  background-color: lightgrey;
  display: table;
  height: 300px;
  width: 100%;
}

.nav-container,
.content-container {
  display: table-row;
}

.nav {
  background-color: blue;
  display: table-cell;
  height: 1px;  // Set a very small height value, and it'll expand automatically
}

.content {
  background-color: red;
  display: table-cell;
}

.scroll {
  max-height: 100%;
  overflow-y: scroll;
}
<div class="widget">
  <div class="nav-container">
    <div class="nav">
      One<br>Two<br>Three
     </div>
  </div>
  <div class="content-container">
    <div class="content">
      <div class="scroll">
      <p>Lorem ipsum dolor sit amet, pro id volumus efficiendi delicatissimi, cu nullam accommodare mei. At lobortis abhorreant ius. Qui soleat albucius tractatos eu, sed dolorum nonumes scribentur ne, ex mazim feugiat theophrastus has. No vix omnis congue. Et mea volumus postulant, ne qui veritus complectitur.</p>
      
      <p>Lorem ipsum dolor sit amet, pro id volumus efficiendi delicatissimi, cu nullam accommodare mei. At lobortis abhorreant ius. Qui soleat albucius tractatos eu, sed dolorum nonumes scribentur ne, ex mazim feugiat theophrastus has. No vix omnis congue. Et mea volumus postulant, ne qui veritus complectitur.</p>
      
      <p>Lorem ipsum dolor sit amet, pro id volumus efficiendi delicatissimi, cu nullam accommodare mei. At lobortis abhorreant ius. Qui soleat albucius tractatos eu, sed dolorum nonumes scribentur ne, ex mazim feugiat theophrastus has. No vix omnis congue. Et mea volumus postulant, ne qui veritus complectitur.</p>
      
      <p>Lorem ipsum dolor sit amet, pro id volumus efficiendi delicatissimi, cu nullam accommodare mei. At lobortis abhorreant ius. Qui soleat albucius tractatos eu, sed dolorum nonumes scribentur ne, ex mazim feugiat theophrastus has. No vix omnis congue. Et mea volumus postulant, ne qui veritus complectitur.</p>
      
      <p>Lorem ipsum dolor sit amet, pro id volumus efficiendi delicatissimi, cu nullam accommodare mei. At lobortis abhorreant ius. Qui soleat albucius tractatos eu, sed dolorum nonumes scribentur ne, ex mazim feugiat theophrastus has. No vix omnis congue. Et mea volumus postulant, ne qui veritus complectitur.</p>
      
      <p>Lorem ipsum dolor sit amet, pro id volumus efficiendi delicatissimi, cu nullam accommodare mei. At lobortis abhorreant ius. Qui soleat albucius tractatos eu, sed dolorum nonumes scribentur ne, ex mazim feugiat theophrastus has. No vix omnis congue. Et mea volumus postulant, ne qui veritus complectitur.</p>
      </div>
    </div>
  </div>
</div>

关于html - 仅使用 CSS 在动态大小的元素上设置宽度或高度的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52845633/

相关文章:

html - 以不同的顺序排列div

html - 如何使我的菜单响应 Bootstrap 导航

javascript - Html/CSS 星级反馈

css - 边框底部显示在侧边框下

css - 扩展背景图像高度

html - 如何创建像 Apple 一样的导航栏?

javascript - 使用图像更改箭头 Accordion Bootstrap

html - 包裹在 div 中的 vss 垂直图未在其父 div 中垂直居中

html - CSS 移动图像

html - flexbox wrap 忽略最大宽度