Jon*_*Jon 20 html css css3 flexbox
我正在尝试使用Flexbox构建"Holy Grail"布局.
见下文:
除了标题下方"app"区域的高度外,我一切正常.现在它是100vh(视口高度的100%),但这包括64px标题.
我尝试计算(100vh - 64px),但这与flex不相符.
这是我的基本HTML结构:
<main>
<header></header>
<app>
<nav>Left Nav</nav>
<article>Content</article>
<aside>Right Nav</aside>
</app>
</main>
Run Code Online (Sandbox Code Playgroud)
和支持CSS:
main {
display: flex;
flex-direction: column;
}
header {
z-index: 0;
flex: 0 0 64px;
display: flex;
}
app {
flex: 1 1 100vh;
display: flex;
}
nav {
flex: 0 0 256px;
order: 0;
}
article {
flex: 1 1 100px;
order: 1;
}
aside {
flex: 0 0 256px;
order: 2;
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*Jon 19
弄清楚了!
结果发现有一些CSS冲突<main>
和<body>
,而我所要做的就是删除<main>
包装器,然后将flex定义直接添加到页面主体.
新的HTML结构:
<body>
<header></header>
<app>
<nav>Left Nav</nav>
<article></article>
<aside>Right Nav</aside>
</app>
</body>
Run Code Online (Sandbox Code Playgroud)
新的支持CSS:
html, body {
margin: 0;
height: 100%;
min-height: 100%;
}
body {
margin: 0;
display: flex;
flex-direction: column;
}
header {
z-index: 0;
flex: 0 64px;
display: flex;
}
app {
flex: 1;
display: flex;
}
nav {
flex: 0 0 256px;
order: 0;
}
article {
flex: 1;
order: 1;
overflow: auto;
}
aside {
flex: 0 0 256px;
order: 2;
}
Run Code Online (Sandbox Code Playgroud)
随意使用它作为您的应用程序的基础!请享用!