使第二行的弹性项目占据容器的剩余高度

2023-12-31

我正在尝试创建一个布局,顶部有标题,下面有侧边栏和主要内容。

我想让侧边栏和内容视图占据标题留下的垂直空间。问题是标题可以动态调整大小,所以我无法执行calc()。我的解决方案是使用弹性盒方案。

我将视口水平分成两部分。一个是标题,一个是侧边栏和主要内容的包装。

侧边栏向左浮动并给出宽度的百分比,内容向右浮动并给出其余部分。

问题是我试图使侧边栏始终为包装器的 100% 高度。

I tried height: 100% and min-height: 100%但这些都不起作用。

我不希望绝对定位它,因为如果包装器溢出主要内容,侧边栏将不会相应扩展。

这是我的笔:http://codepen.io/markt5000/pen/JXNXpW http://codepen.io/markt5000/pen/JXNXpW

正如您所看到的,橙色是标题,红色空间是带有侧边栏和内容的包装。

这是布局

<div class="header">
</div>

<div class="row">

  <div id="sidebar">
  </div>

 <div id="main-content">
 </div>

</div>

没有必要:

  • height, min-height or calc在你的弹性项目上
  • 绝对定位
  • 浮动(事实上,它们没有用,因为在 Flex 格式化上下文中浮动被忽略 https://www.w3.org/TR/2016/CR-css-flexbox-1-20160301/#flex-containers)

Flex 属性拥有使布局正常工作所需的全部功能。关键是要使用flex: 1使物品扩展容器的整个可用长度。

因此,标题的高度可以是动态的,侧边栏和主要内容可以消耗剩余的高度。没有滚动条。

这是经过一些修改的代码:

html { height: 100%; }

body {
  height: 100%;
  margin: 0;
  padding: 0;
}

.outer-flex-container {
  height: 100%;
  display: flex;
  flex-direction: column;  /* main flex container stacks items vertically */
}

.header {
  height: 80px;            /* demo purposes; from your original code */
  background-color: orange;
}

.nested-flex-container {
  display: flex;           /* inner flex container stacks items horizontally */
  flex: 1;                 /* KEY RULE: tells this second flex item of main container
                                  to consume all available height */
  align-items: stretch;    /* KEY RULE: default setting. No need to include. Tells
                                  children to stretch the full length of the container
                                  along the cross-axis (vertically, in this case). */
}

.sidebar {
  flex-basis: 20%;        /* set width to 20% */
  background-color: aqua;
}

.content {
  flex: 1;                /* set width to whatever space remains */
  background: magenta;
}
<div class="outer-flex-container">

     <div class="header">HEADER</div><!-- main flex item #1 -->

     <div class="nested-flex-container"><!-- main flex item #2 -->
    
          <div class="sidebar">SIDEBAR</div><!-- inner flex item #1 -->
    
          <div class="content">MAIN CONTENT</div><!-- inner flex item #2 -->
    
     </div><!-- close inner flex container -->

</div><!-- close outer flex container -->

修订版代码笔 http://codepen.io/anon/pen/LNyZYQ?editors=1100

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使第二行的弹性项目占据容器的剩余高度 的相关文章

  • 如何在没有 AM/PM 的情况下使用 datetime-local?

    我想使用以下代码
  • 输入类型=图像 - onclick(),将触发其事件,但在 jquery 中的函数上表现不佳

    我认为这可能是两篇文章 2个问题 所以如果你对此发表评论 我会将它们分开 主要问题实际上是 我怎样才能为按钮设置图像背景 简单且正确 我想现在我可以确定这些事实了 因为我在将图像设置为按钮背景时遇到了 小 问题 我想 好吧 如果很难设置的话
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • 根据变量值将 LESS 编译为多个 CSS 文件

    有一个指定颜色的变量variables less文件 例如 themeColor B30F55 和一个 json构成实体列表的文件 其中每个键是一个实体 ID 键的值是该实体的颜色 例如 8ab834f32 B30F55 3cc734f31
  • CSS:水平滚动时背景不存在

    好的 我的背景设置如下 HTML div div CONTENT HERE div div CSS container background url image gif content width 800px margin auto 因此
  • 使用 jQuery 清除 IMG

    我正在尝试从 a 中删除加载的图像 img 元素 但清除或删除 src 不会执行此操作 该怎么办 HTML img src https www google com images srpr logo3w png JQUERY img att
  • 如何通过单击图像预览上的“x”从文件输入中删除图像?

    我目前有一个文件输入 一旦用户上传图像 就会显示图像预览 在图像预览上 有一个 x 可以从列表中删除图像预览 单击此 x 后 有什么方法可以从输入中的文件集中删除图像吗
  • 调整文本区域大小

    我需要使用文本区域来显示一些文本 问题是 如果我放置 4 5 行文本 就会出现滚动条 如何使用 CSS HTML 使文本区域与其内容一样大 没有滚动条 文本区域不需要动态更改其大小 我仅使用它来显示文本 我也可以使用禁用的文本区域 我希望文
  • 来自 JSON 的 Angular 8 动态表单

    我正在尝试从 JSON 模式递归生成动态表单 但我正在努力解决找不到表单控件的问题 这是代码示例 我收到这个错误 错误错误 找不到名称为 createdAt 的控件 我尝试了不同的方法 但仍然存在问题 我知道我错过了一些东西 所以请帮忙 任
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • Modernizr - 加载 polyfills / 使用自定义检测的正确方法

    我想在网页上使用一些新的 HTML5 表单属性和输入类型 有些浏览器已经支持它们 有些浏览器不支持 也永远不会支持 这就是我想使用 Modernizr 的原因 这就是我的麻烦开始的原因 据我了解 Modernizr 本身并不是一个 poly
  • 如何为背景图像添加边距?

    我想向背景图像添加边距 以便将其与屏幕中间保持距离 但将其添加到该类中会为整个主体添加边距 body poppage background url Imagenes tip3 png 50 200px no repeat E2E4E9 我怎
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 悬停时为 SVG 制作动画

    我正在尝试在悬停时为 SVG 文件设置动画 默认情况下 它可以使用 svg 函数实现出色的动画效果 例如
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 显示覆盖以覆盖整个页面

    我有一个正在加载的网络应用程序iframe 我需要显示一个覆盖 div 来覆盖整个页面 问题是叠加层当前仅显示在iframe区域而不覆盖整个页面 我们的应用程序 子应用程序 是加载的一组应用程序的一部分iframe 你可以做这样的事情 di
  • 带显示块的SPAN

    和默认有什么区别 div 元素和默认值 span 元素与display block HTML 元素的有效性和语义存在差异 否则它们是相同的 div and span两者都被定义为通用容器 在 HTML 方面没有更深层次的含义 一个默认为块显

随机推荐

  • JSONException: java.lang.String 类型的值无法转换为 JSONObject

    我有一个 JSON 文件 其中包含 2 个 JSON 数组 一组用于路线 一组用于景点 一条路线应该由用户导航到的几个景点组成 不幸的是我收到错误 JSONException java lang String 类型的值无法转换为 JSONO
  • Identity Server 4 未向控制器返回错误描述

    我有一个 Identity server 4 项目 它遵循有关如何显示错误的文档 家庭控制器 public class HomeController Controller private readonly IIdentityServerIn
  • 从 JS 中的构造函数返回 this

    如果我在 JavaScript 中有一个构造函数 我希望能够显式返回一些内容 以便在团队中工作时一切都清楚 我读到 如果你在 JS 中使用函数作为构造函数 如果你返回任何内容 那么使用 new 关键字将是浪费精力 但我想知道你是否可以回来t
  • 如何处理D3中多层嵌套的数据?

    我有以下数据结构 key a values key a0 values key a00 values key a01 values key a1 values key b values 我
  • 当一个值与其他值不同时,SQL Server

    我有这个表的表结构prices CREATE TABLE prices id int priceFrom int priceUp int INSERT INTO prices id priceFrom priceUp VALUES 1 23
  • Swift 枚举不等式

    我已经习惯了能够治疗enums 作为数值 因此使用像这样的运算符 gt lt 对于大多数枚举用途来说 这可能不是必需的 但有一种情况是这样的 objc public enum MyState Int case Loading 0 case
  • 没有 Angular-cli“localhost:4200”的 Access-Control-Allow-Origin

    我有一个与 CORS 和所需标头相关的问题 Setup我运行一个 Angular 项目和 Angular cli localhost 4200 我想通过 HTTP 请求从 WebService 访问 JSON 当我直接在浏览器中使用 URL
  • 在 Selenium 中测试后处理网络错误

    问题 我在 C 中搜索了很多解决方案 但没有一个适合我 我无法使用它们 因为缺少无法导入的对象或这些对象已被弃用 例如所需的能力 我想做的事 我想做的就是在执行测试后 检查测试过程中是否出现问题 当出现问题时 测试应该失败并显示消息 断言
  • Flash:同一页面上有许多相同的 SWF

    Summary 我正在尝试制作一个包含多个相同 SWF 的网页 我遇到的问题是加载速度太慢 不过下载时间还不错 我的每个单元格中有一个 4x4 表格 iframe 中嵌入了一个 swf 文件 注 4 X 4 表 gt 16 SWFS 我的
  • SparkR 作业 100 分钟超时

    我编写了一个有点复杂的sparkR脚本并使用spark submit运行它 脚本基本上做的是逐行读取基于 hive impala parquet 的大表 并生成具有相同行数的新 parquet 文件 但似乎工作在大约 100 分钟后停止 这
  • 在 Windows 上安装 SQLite3 for Ruby - 目前最简单的方法是什么?

    我是 Ruby 新手 希望让 Redmine 在 WinServer08 sp1 上运行 我在这里阅读了一些主题 详细介绍了让 Ruby 和 SQLite 相互兼容所需的步骤和解决方法 Ruby 将运行 sqlite3 的 dll 和 ap
  • 如何始终在 RowsFragment 中显示标题

    我正在尝试创建一个类似于 Youtube 应用程序的 Android 电视应用程序 我正在使用Sofa https github com dextorer Sofa库来做到这一点 现在 当我尝试显示中各个项目的标题时 问题就出现了RowsF
  • travis-lint:为什么它抱怨 java 语言字段

    我有这个非常简单的 travis yml https github com emeraldjava emeraldjava blob master travis yml对于一个java项目 当我对文件运行 travis lint 时会抱怨
  • 如何捕获 Observable.forkJoin(...) 中的错误?

    I use Observable forkJoin 在两个 HTTP 调用完成后处理响应 但如果其中任何一个返回错误 我该如何捕获该错误 Observable forkJoin this http post
  • 尽管 useTable = false,CakePHP 仍要求模型表

    我正在创建一个联系表单以将电子邮件发送到指定地址 我正在尝试利用 CakePHP 模型验证 并且由于我不需要联系人模型的表 因此我在联系人模型中将 useTable 设置为 false 然而 我在执行发送的控制器函数中遇到错误 错误是 缺少
  • Qucikblox 错误:[错误的身份验证数据] 在 Android 中登录 Twitter

    我已经集成了Quickblox SDK V2 2 5在我的 Android 应用程序中使用Social Integration Twitter但它会抛出错误 errors 错误的身份验证数据 以下是我的代码 If in the below
  • Oracle和PostgreSQL中的Write Skew异常不回滚事务

    我注意到 Oracle 和 PostgreSQL 中都发生了以下情况 考虑到我们有以下数据库架构 create table post id int8 not null title varchar 255 version int4 not n
  • FMU FMI模拟,设置某类参数时不修改结果

    我为该示例开发了一个基于 MSL 流体库的简单 Modelica 模型 我将 MassFlowSource 与管道和 Boundary PT 连接为接收器功能 如下图所示 http www casimages com img php i 1
  • 如何从各种未知的数字类型转换为双精度[重复]

    这个问题在这里已经有答案了 我的代码将从各种来源获取各种数字类型的大量数据 这些数据全部作为类型到达object 为了便于使用 我想将其全部转换为double 这足以表示输入数据的全部范围 并且不需要极高的精度 我当然能够解决这个问题 但我
  • 使第二行的弹性项目占据容器的剩余高度

    我正在尝试创建一个布局 顶部有标题 下面有侧边栏和主要内容 我想让侧边栏和内容视图占据标题留下的垂直空间 问题是标题可以动态调整大小 所以我无法执行calc 我的解决方案是使用弹性盒方案 我将视口水平分成两部分 一个是标题 一个是侧边栏和主