【发布时间】:2018-11-30 07:20:52
【问题描述】:
免责声明:我已经阅读了大量几乎我的用例,但没有找到完全相同的:
我想要一个左侧边栏宽度固定的网格,右侧内容列应该只填满窗口的其余部分而不是更多。
我让它在“纯”弹性盒布局中工作,但由于某些奇怪的原因不在网格内。
发生的情况是 flex 项只会使整个网格比窗口宽并滚动整个内容。
我想要的是只有 flex 容器滚动并且上面的标题保持在原来的位置。
<style media="screen">
* {
margin: 0;
padding: 0;
}
body {
height: 100%;
}
sidebar {
background-color: red;
display: block;
}
main {
display: grid;
grid-template-columns: 300px auto;
width: 100vw;
}
content {
background-color: blue;
display: block;
}
image-container-wrapper {
display: block;
overflow: scroll;
}
image-container {
display: flex;
flex-wrap: nowrap;
overflow-x: auto;
}
my-image {
display: block;
flex: 0 0 auto;
margin-right: 3px;
min-width: 100px;
min-height: 100px;
background-color: grey;
}
</style>
<header>Header</header>
<main>
<sidebar>This should be "fixed"
</sidebar>
<content>
<h1>Slider below</h1>
<image-container-wrapper>
<image-container>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
<my-image></my-image>
</image-container>
</image-container-wrapper>
</content>
</main>
<footer></footer>
【问题讨论】:
-
在我看来,使用
grid-template-columns: 300px minmax(0, 100%);有效。但我承认,我不知道为什么,因为我几乎不使用网格。也许有人可以提供一个正确的答案,或者我稍后会回来调查它。