Flexbox固定头,固定左导航液内容区域

时间:2018-01-06 01:10:36

标签: css twitter-bootstrap css3 flexbox bootstrap-4

我正在尝试使用Flexboox和Bootstrap 4实现此布局:

  • 顶部固定标题
  • 修正了左侧边栏
  • 流体含量区域

我不知道如何修复标题和侧边栏。到目前为止,其他所有工作都是我想要的:

HTML:

<header>
    header
</header>
<app>
    <nav>
        nav
    </nav>
    <article>
        Content
    </article>
</app>

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;

    background: white;
    box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.24);
}

app {
    flex: 1;
    display: flex;
}

nav {
    background: #FAF9F8;
    flex: 0 0 256px;
    order: 0;
    border-right: 1px solid #d9d9d9;
}

article {
    background: #F3F3F5;
    flex: 1 1 100px;
    order: 1;

    // Simulate large height
    height: 2000px;
}

http://jsfiddle.net/LLfcL28u/203/

2 个答案:

答案 0 :(得分:1)

以下是使用flexbox的解决方案:http://jsfiddle.net/loic294/7hbjq82w/

修复问题的想法是删除正文中的主滚动条:

<article>
  <div>
    Content
  </div>
</article>

还添加一个div以使主要部分可滚动:

div {
   height: 2000px;
}
overflow-y: auto; // Adds scrollbar

并添加此CSS以使其全部工作:

* def json = { foo: 'world', hey: 'ho', zee: [1, 2, 3] }
* remove json.hey
* match json == { foo: 'world', zee: [1, 2, 3] }

答案 1 :(得分:0)

我根本不会使用flexbox,而是固定元素的固定位置:

&#13;
&#13;
html,
body {
  margin: 0;
  height: 100%;
}
header {
  position: fixed;
  z-index: 2;
  top: 0;
  left: 0;
  width: 100%;
  height: 20px;
  background: white;
  box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.24);
}
nav {
  position: fixed;
  z-index: 1;
  top: 20px;
  left: 0;
  width: 200px;
  height: calc(100% - 20px);
  background: #FAF9F8;
  border-right: 1px solid #d9d9d9;
}

article {
  background: #F3F3F5;
  position: relative;
  top: 20px;
  left: 200px;
  width: calc(100% - 200px);
  /* Simulate large height */
  height: 2000px;
}
&#13;
<header>
  header
</header>
<nav>
  nav
</nav>
<article>
  Content
</article>
&#13;
&#13;
&#13;