带有滚动区域的嵌套弹性盒

2023-11-23

我正在尝试在最新的 Chrome、Firefox 和 IE11 中实现这种布局:

Layout example

我可以通过以下方式让它工作:

html {
  box-sizing: border-box;
}
*, *:before, *:after { 
  box-sizing: inherit;
}

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

p { line-height: 2em; }

header, footer, article { padding: 10px; }

#parent {
    height: 100%;
    display: flex;
    flex-flow: column nowrap;
    background-color: limegreen;
}

#parent > header {
    flex: none;
    background-color: limegreen;
}

#parent > footer {
    flex: none;
}

#child {
    display: flex;
    flex-direction: column;
    background-color: red;
    height: 100%;
    min-height: 0;
}

#child > header {
    flex: none;
    background-color: #aaa;
}
#child > article {
    flex: 1 1 auto;
    overflow-y: auto;
    min-height: 0px;
}
#child > footer {
    flex: none;
    background-color: #aaa;
}
<section id="parent">
    <header>Parent flex header </header>
    
    <section id="child" >
        <header>Child flex header</header>
        <article>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
            <p>Lots of content.</p>
        </article>
        <footer>Child flex footer</footer>
    </section>
    
    <footer>Parent flex footer</footer>
</section>

However我觉得有些 CSS 有点奇怪,我想确保我有最大的机会不生成会在某些浏览器更新中损坏的 CSS。原因是该软件将在实际硬件上运行(有点像路由器管理界面),并且无法像常规网站那样轻松更新。

所以让我烦恼的 CSS 是可滚动的article:

#child {
    display: flex;
    flex-direction: column;
    background-color: red;
    height: 100%;
    min-height: 0;
}

我摆弄着height and min-height使其在这三个方面都发挥作用。本来我有height: 100%只是,但这在 Firefox 中不起作用。指定min-height: 0可以在 Chrome 和 FF 中使用,但不能在 IE 中使用。这个组合似乎让三个人都满意,但谁是正确的呢?我可以合理地确定这不会在下一个 FF 或 Chrome 中出现问题吗?从“规范角度”来看,这段代码有意义吗?


Setting min-height确实是必需的,并且是实现所需布局的正确方法。从规格来看:

默认情况下,弹性项目不会缩小到低于其最小内容大小(最长单词或固定大小元素的长度)。要更改此设置,请设置 min-width 或 min-height 属性。

所以只能通过设置min-height你允许你的<article>实际利用flex-shrink并适合父级弹性容器。

如果我正确地看到了这一点,那么您在 IE 中看到的问题与该错误相符此处描述并承认here:

在 IE 10-11 中,列方向上的 Flex 容器的最小高度声明可用于确定容器本身的大小,但它们的 Flex 项目子项似乎不知道其父项的大小。它们的表现就好像根本没有设定高度一样。

这可能(也可能不)包含有关溢出的问题。

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

带有滚动区域的嵌套弹性盒 的相关文章

  • 自定义字体在 IE 中仍然不起作用

    我试图显示自定义字体 Duke Fill 的网页是http www hamlinforcongress com helpout php http www hamlinforcongress com helpout php 我在用着 font
  • 使用 CSS3 在屏幕上移动图像

    我浏览网页已经有一段时间了 试图找到一种方法 让图标在加载页面时移动到屏幕上 从左侧移动到 body div 的中心 如何才能做到这一点 这是我到目前为止所拥有的 CSS3 a rotator text decoration none pa
  • Jquery 在页面加载时滚动到偏移目标 div

    我正在尝试滚动到 URL 中的 div 它可能是 21 个 ID 之一 例如 url com test lite1 url com test lite2 url com test lite3 我需要在页面加载时发生这种情况 用户来自电子书
  • 使用 javascript 暂停 CSS 动画并跳转到动画中的特定位置

    我有一个完全用CSS动画构建的无尽滑块 我希望能够使用javascript onlcick和键盘输入 来操纵动画 我希望能够从一帧快速运行动画 即加速到另一帧 以便在按下引用滑块中特定图像的按钮时产生跳跃效果 另外 我希望能够通过键盘输入逐
  • 无论单元格中的文本量如何,都将表格列宽设置为恒定吗?

    在我的表格中 我将列中第一个单元格的宽度设置为100px 但是 当该列中的一个单元格中的文本太长时 该列的宽度将变得超过100px 我怎样才能禁用这个扩展 我玩了一会儿 因为我很难弄清楚 您需要设置单元格宽度 th or td工作 我设置了
  • 使用 twitter-bootstrap 时使文本区域缩放到网页

    我正在尝试根据页面大小调整文本区域的比例 即我试图使文本区域填充第二个容器和页脚之间的空间 HTML
  • 如何为 p 标签中的星号第一个字符着色

    我认为这会很容易使用 first letter伪元素 但它不起作用 I have p Required Fields p 我希望 是红色的 有任何想法吗 请注意 我无法更改 html http jsfiddle net 3ducS http
  • VS2010中是否可以更改CSS验证方案

    我正在 VS2010 中编辑一个简单的 CSS 文件 编辑器似乎对 CSS 的理解相当有限 例如 my rule position relative 生成警告 Validation CSS 1 0 position is not a kno
  • 尝试制作Linux终端但失败

    这可能是一个愚蠢的问题 可能很容易找到 但我对这一切都很陌生 我似乎找不到我要找的东西 或者至少我不知道我需要寻找什么 所以我在这里 所以我想做的是创建一种 Linux 终端 这就是我到目前为止所得到的 我所坚持的是实际输入文本部分 我一直
  • 第二个内联块 div 上方的空白

    我确信我在这里忽略了一些东西 但无法解决 我的第二个内联块 div 上方有空白 只有当右侧 div 中的 文本此处 长度小于左侧 div 时 才会发生这种情况 js小提琴 http jsfiddle net B2S4r 2 http jsf
  • IE8 中的 CSS 属性选择器错误?

    指定为CSS 2 1 http www w3 org TR CSS2 selector html attribute selectors input type submit or input type submit 必须匹配 type 属性
  • CSS,堆叠圆圈

    我想制作一些圆形 div 就像下面代码中的那样 不过 我希望它们彼此堆叠在一起 所以我想要一个蓝色圆圈 展开 在当前红色圆圈后面 但中心与红色圆圈相同 红色的必须在上面 这是我当前的代码 circles margin right auto
  • 对象适合不影响图像

    我一直在尝试使用object fit放在里面的一些图像article元素 但似乎根本不影响它们 的期望值object fit财产将是cover 但截至目前 其他值似乎都不起作用 当我改变它的值时 它们不会缩小 不会增长 不会 什么都没有 如
  • 在 Bootstrap 中将图像居中

    我正在使用 bootstrap 3 0 创建一个网站 我是引导新手 我想要什么 当浏览器尺寸特别小时 我希望图像位于 div 的中心 我有这个代码 div class col lg 10 ccol lg offset 1 col md 12
  • 为什么 Microsoft Outlook 在发送 HTML 电子邮件时不遵循列表样式?

    我有以下代码 但我一生都无法让它在 Microsoft Outlook 中工作 ul style margin left 50px line height 50px list style none li style font size 6
  • HTML 对齐文本

    我想在页面上显示文本 如下所示 My Text Text Here My Text More Text Here Text from line above continued here 我有以下标记只是为了测试
  • 如何用CSS让物体移动?

    我在页面中间并排设置了两个图像 对象 我希望它们彼此移动 就好像它们将要碰撞一样 并在它们放置在每个图像旁边时停止 因此 对于右侧的对象 我编写了以下代码 认为该对象应该从左向右移动 但结果与我的预期相去甚远 是否可以通过过渡来做到这一点
  • 内联块元素和块元素之间的空间

    这两个 div 之间的空间是多少 我什至删除了 html 中的空白 div div div div http jsfiddle net 9thpuvwa http jsfiddle net 9thpuvwa 现在 如果第一个 div asd
  • 如何使用 CSS3 更改图像的颜色?

    这有效 a color hsla 0 100 50 0 2 这并不 img color hsla 0 100 50 0 2 有没有类似的东西img opacity 1 允许定义图像的 hsl 值 文本和图像是两个不同的东西 文本由浏览器根据
  • Angular 2:将路由器出口设计为宽度 < 100%

    我正在构建一个 Angular 2 应用程序 该应用程序将为宽度超过 500 的屏幕提供侧导航栏 为宽度小于 500 的屏幕提供底部导航栏 现在 我尝试为侧栏分配 20 的宽度 即 80 应用内容 我遇到的问题是路由器出口内容 即实际的应用

随机推荐

  • AngularJS 指令中自定义 HTML 标签的后果

    假设我写了一个自定义gravatarAngularJS 中的指令绑定到email范围上的属性 该指令将替换此 HTML
  • 如何扩展谷歌分析来跟踪 AJAX 等(根据 H5BP 文档)

    我正在尝试安装google analytics augments中确定的extend mdH5BP 文件 https github com h5bp html5 boilerplate blob v4 3 0 doc extend md 它
  • p:ajax 事件用于惰性 p:dataTable 分页

    当我的列表在延迟加载数据表期间更新时 我无法找到将执行我的 javascript 的 ajax 事件 该 JavaScript 负责根据我的列表更新图像封面流 该列表在初始数据表加载期间 进行分页以及更改页面上的记录数时重新填充 非常感谢您
  • 创建 NULL 数据库表最佳实践

    不确定处理问题的最佳实践是什么NULL当我有一个表时的值 其中两个字段有时只填充创建很多NULL行中的值 是否应该将这两个字段移动到一个单独的表中 创建两个没有任何字段的表NULL values 这两个表之间的联接只会返回一个与我的原始表相
  • 如何在android中运行openCV相关应用程序,而不使用OpenCV管理器

    在我的 Android 应用程序中 我使用 OpenCV 库的静态加载 IE OpenCVLoader initDebug 在模拟器上运行时它将返回 true 但是返回错误在 移动 设备上运行时 如果我使用 OpenCVLoader ini
  • 使用 JMH 控制方法的顺序

    我在我的项目中使用 JMH 基准测试 我用 Benchmark注释了方法1和方法2 我希望顺序是 method1 method2 mehod1 method2 等等 这意味着 我希望方法 2 会立即遵循方法 1 有没有办法这样做 谢谢你 J
  • 如何让 Materialise 选择下拉列表与 React 一起使用?

    添加以下模板代码由物化提供不能立即在 React 组件中工作 div class input field col s12 div
  • 如何在AdvancedCustomDrawItem期间绘制TTreeView的样式选择矩形?

    我是做定制的TTreeView使用从头开始绘制OnAdvancedCustomDrawItem事件 我想知道如何在我的所有者绘制项目的背景中正确渲染这些选择和热矩形 它们是 Vista 7 风格的 所以我不能简单地用纯色填充背景 我尝试在以
  • 生成唯一的 6 位数代码

    我正在根据以下字符生成 6 位代码 这些将用于在贴纸上盖印 它们将以 10k 或更少的批次生成 在打印之前 我预计总数不会超过 1 200 万 可能要少得多 生成批量代码后 我将检查现有代码的 MySQL 数据库以确保没有重复 exclud
  • 透明 SCNFloor 上的 SceneKit 阴影()

    我有一个floor node 我需要在其上投射阴影directional light 该节点需要是透明的 用于AR环境 当我使用时这效果很好ARKit 但使用相同的设置SceneKit没有显示任何阴影或反射 我怎样才能投下阴影SceneKi
  • 为整个应用程序设置 CurrentCulture 的简单方法?

    在 net 2 winforms 应用程序中 为整个应用程序设置区域性的好方法是什么 为每个新线程设置 CurrentThread CurrentCulture 是重复的且容易出错 理想情况下 我想在应用程序启动时设置它并忘记它 NET 中
  • Spring Boot 中 Thymeleaf 的几个模板位置

    现在Spring Boot允许一个值Thymeleaf模板位置与spring thymeleaf prefix财产 默认值为classpath templates 我想要为 thymeleaf 模板设置另一个位置 但保留默认位置 在 jar
  • 从套接字描述符恢复 IP/端口

    我在写inetd 的克隆我必须运行一个服务器来打印连接到它的客户端的 IP 和端口 当我覆盖时STDIN and STDOUT使用套接字描述符 我最初的解决方案这样做是为了恢复sockaddr in结构 其中包含所需的信息 这样做与gets
  • CSS“inner-html”技术? [复制]

    这个问题在这里已经有答案了 我想知道是否有一种方法可以根据元素包含的单词来查询元素 所以 如果我有 div h1 Home h1 div 我想要任何 globalPageHeader h1有这个词Home在其中 有一个display的财产n
  • 如何配置多个格式化程序以在 VSCode 中保存时按顺序运行?

    我正在开发一个 Haskell 项目 该项目的格式必须为both stylish haskell 用于进口重新订购 brittany 用于一般格式 我可以为一种语言设置单一默认格式化程序 haskell editor defaultForm
  • 如何在 Windows 上使用 SSH 详细模式运行 git 命令?

    这是 Windows 版本如何使用 SSH 详细模式运行 git push pull 命令 有时您只需要调试 git 对 SSH 的使用 OpenSSH 有一个 v详细输出的标志 但是如何让 git 使用它呢 如何在 Windows 上使用
  • 将用户名和密码存储在数据库中安全吗?

    我让人们在部落中提交用户名和密码 我需要知道使用此代码将其提交到数据库是否安全 或者在数据库中是否安全 MySQLCon Open Dim SQLADD As String INSERT INTO members username pass
  • 具有许多私有方法的Java测试类[重复]

    这个问题在这里已经有答案了 我有一个类负责将合同从 CSV 导入到数据库 类本身只有一个启动导入的公共方法 其他方法都是私有的 因为只有类本身会使用 并且它们保存逻辑 我开始使用 Spock 对这个类进行测试 并且有很多私有方法 我应该如何
  • 一些使用 PDO 的 ORM?

    我正在寻找一个好的 ORM 即 Active Record 它使用 php 扩展 PDO 作为基础 有什么建议吗 Doctrine or Propel
  • 带有滚动区域的嵌套弹性盒

    我正在尝试在最新的 Chrome Firefox 和 IE11 中实现这种布局 我可以通过以下方式让它工作 html box sizing border box before after box sizing inherit html bo