html - 使用 calc(100% - x) 会破坏 flex 布局

标签 html css flexbox

<分区>

我正在使用这段代码来确保为其他元素留出足够的空间,但它会跳到 flex 行的新行上。

Nav{
    width:200px;
    padding: 1em;
}

Main{
    max-width: calc(100% - 200px - 2em);
}

预期行为:

--------------------------
|         Header         |
--------------------------
|  |                     |
|N |                     |
|a |       Main          |
|v |                     |
|  |                     |
--------------------------
|          Foot          |
--------------------------

实际行为:

--------------------------
|         Header         |
--------------------------
|  |
|N |
|a |
|v |
|  |
-----------------------
|                     |
|                     |
|       Main          |
|                     |
|                     |
--------------------------
|          Foot          |
--------------------------

正文有 display flex, header, nav, main, foot 有 flex: 1 auto; 而且我发现如果我使用没有百分比的 calc()。

最佳答案

您可以通过将 float:left 添加到导航面板和主面板来解决这个问题。

这是一个 JSFiddle,它说明了这是如何完成的:http://jsfiddle.net/WChBm/3/

好的,您想要一个使用 display:flex 的答案。这是一个新的 fiddle :http://jsfiddle.net/p7zEE/

body, html {
    height: 100%;
}

#header, #footer {
    height: 30px;
    width: 100%;
    background: #4ed;
}

#wrapper {
    height:  calc(100% - 60px);
    display: flex;
}

#nav {
    width: 200px;
    background-color: #999;
    height: 100%;
    display: inline-block;
}

#main {
    display: flex;
    flex: 1;
    background-color: #6f5;
    height: 100%;
}

关于html - 使用 calc(100% - x) 会破坏 flex 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18804340/

相关文章:

php - Mysql中存储的特殊字符

html - 使背景图像可点击

html - 按钮始终右对齐

javascript - 如何在 SAPUI5 中动态地将样式应用于标签元素

html - 如何使用flex将绝对元素居中?

html - 固定的 100% 高度 div 导致窗口增长

html - CSS - 未使用元素的样式?

html - 使用我们的任何尺寸的显示器制作网站布局和内容修复

html - Flex 在 tbody IE 中换行

css - 使用 Flex-box 堆叠列表