如何在 Firefox 中强制溢出未定义大小的 flexbox 元素?
How can I force overflow on an undefined-size flexbox element in Firefox?
以下代码在 Chrome 中可以完美运行,但在 Firefox 中不行。您会注意到页眉、页脚和边栏的高度未定义,但边栏仍会沿 y 轴溢出内容。这在 Chrome 40.0.2214.94 64 位中是正确的,但在 Firefox 35.0.1 中不是这样。我应该对此应用什么 CSS 才能使其发挥作用?
此外,如果您无法 运行 以下代码段,here is a CodePen-hosted version。
html,
body {
font-size: 14px;
}
* {
box-sizing: border-box;
}
.container {
width: 100vw;
display: -webkit-box;
display: -moz-box;
display: box;
display: -webkit-flex;
display: -moz-flex;
display: -ms-flexbox;
display: flex;
height: 100vh;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
box-orient: vertical;
-webkit-flex-direction: column;
-moz-flex-direction: column;
flex-direction: column;
-ms-flex-direction: column;
max-height: 100vh;
overflow: auto;
}
header,
footer {
padding: 1rem;
width: 100%;
}
header {
background: tomato;
}
.sidebar-1,
.sidebar-2 {
padding: 1rem;
overflow-y: scroll;
max-width: 20vw;
}
.content-container {
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
-webkit-flex: 1;
-moz-flex: 1;
-ms-flex: 1;
flex: 1;
display: -webkit-box;
display: -moz-box;
display: box;
display: -webkit-flex;
display: -moz-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
box-orient: horizontal;
-webkit-flex-direction: row;
-moz-flex-direction: row;
flex-direction: row;
-ms-flex-direction: row;
}
.sidebar-1 {
-webkit-box-ordinal-group: 3;
-moz-box-ordinal-group: 3;
box-ordinal-group: 3;
-webkit-order: 3;
-moz-order: 3;
order: 3;
-ms-flex-order: 3;
background: #afc5cf;
}
.main-content {
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
-webkit-flex: 1;
-moz-flex: 1;
-ms-flex: 1;
flex: 1;
-webkit-box-ordinal-group: 2;
-moz-box-ordinal-group: 2;
box-ordinal-group: 2;
-webkit-order: 2;
-moz-order: 2;
order: 2;
-ms-flex-order: 2;
background: #e6e6e6;
}
.sidebar-2 {
-webkit-box-ordinal-group: 1;
-moz-box-ordinal-group: 1;
box-ordinal-group: 1;
-webkit-order: 1;
-moz-order: 1;
order: 1;
-ms-flex-order: 1;
background: #cfafaf;
}
footer {
background: #bacfaf;
}
<div class="container">
<header>
<h1>Hello</h1>
</header>
<div class="content-container">
<aside class="sidebar-1">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
</aside>
<aside class="sidebar-2">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
</aside>
<section class="main-content"></section>
</div>
<footer>
<h2>world</h2>
</footer>
</div>
.container {
overflow: auto !important;
}
我意识到 .content-container
没有溢出 属性。添加修复它!
以下代码在 Chrome 中可以完美运行,但在 Firefox 中不行。您会注意到页眉、页脚和边栏的高度未定义,但边栏仍会沿 y 轴溢出内容。这在 Chrome 40.0.2214.94 64 位中是正确的,但在 Firefox 35.0.1 中不是这样。我应该对此应用什么 CSS 才能使其发挥作用?
此外,如果您无法 运行 以下代码段,here is a CodePen-hosted version。
html,
body {
font-size: 14px;
}
* {
box-sizing: border-box;
}
.container {
width: 100vw;
display: -webkit-box;
display: -moz-box;
display: box;
display: -webkit-flex;
display: -moz-flex;
display: -ms-flexbox;
display: flex;
height: 100vh;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
box-orient: vertical;
-webkit-flex-direction: column;
-moz-flex-direction: column;
flex-direction: column;
-ms-flex-direction: column;
max-height: 100vh;
overflow: auto;
}
header,
footer {
padding: 1rem;
width: 100%;
}
header {
background: tomato;
}
.sidebar-1,
.sidebar-2 {
padding: 1rem;
overflow-y: scroll;
max-width: 20vw;
}
.content-container {
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
-webkit-flex: 1;
-moz-flex: 1;
-ms-flex: 1;
flex: 1;
display: -webkit-box;
display: -moz-box;
display: box;
display: -webkit-flex;
display: -moz-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
box-orient: horizontal;
-webkit-flex-direction: row;
-moz-flex-direction: row;
flex-direction: row;
-ms-flex-direction: row;
}
.sidebar-1 {
-webkit-box-ordinal-group: 3;
-moz-box-ordinal-group: 3;
box-ordinal-group: 3;
-webkit-order: 3;
-moz-order: 3;
order: 3;
-ms-flex-order: 3;
background: #afc5cf;
}
.main-content {
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
-webkit-flex: 1;
-moz-flex: 1;
-ms-flex: 1;
flex: 1;
-webkit-box-ordinal-group: 2;
-moz-box-ordinal-group: 2;
box-ordinal-group: 2;
-webkit-order: 2;
-moz-order: 2;
order: 2;
-ms-flex-order: 2;
background: #e6e6e6;
}
.sidebar-2 {
-webkit-box-ordinal-group: 1;
-moz-box-ordinal-group: 1;
box-ordinal-group: 1;
-webkit-order: 1;
-moz-order: 1;
order: 1;
-ms-flex-order: 1;
background: #cfafaf;
}
footer {
background: #bacfaf;
}
<div class="container">
<header>
<h1>Hello</h1>
</header>
<div class="content-container">
<aside class="sidebar-1">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
</aside>
<aside class="sidebar-2">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam ipsa officia, officiis, atque nam nobis aut est odit dolorem quo voluptatibus reprehenderit illum, rerum sint dolores beatae eaque, ea minima!</p>
</aside>
<section class="main-content"></section>
</div>
<footer>
<h2>world</h2>
</footer>
</div>
.container {
overflow: auto !important;
}
我意识到 .content-container
没有溢出 属性。添加修复它!