淘先锋技术网

首页 1 2 3 4 5 6 7

尝试使用CSS网格创建以下布局,其中只有主元素应该是可滚动的。

<header>header</header>
  <div>
    <aside></aside>
    <main>
    </main>
  </div>
  <footer>footer</footer>

这是一个stackblitz: https://stackblitz.com/edit/web-platform-p4nanm?file=index.html,styles.css

这是当前的CSS尝试:

body {
  height: 100vh;
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: auto 1fr auto;
  padding: 0px;
  margin: 0px;
}

header {
  background-color: gold;
}
div {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: 1fr;
  background-color: burlywood;
  overflow: hidden;
}
aside {
  max-width: 10rem;
}
main {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr;
  overflow: auto;
}
footer {
  background-color: aqua;
}

p {
  background-color: lightgreen;
}

main p {
  background-color: gray;
}

& quot怪异& quot问题是如果我加上:

overflow: auto;

到side元素CSS规则,那么side和main元素都将滚动,并按照我预期的方式工作。

但是如果溢出:auto规则从旁边移除,那么主元素中的大部分内容都会消失,并且也不会滚动。

怎么才能做到只有主元素滚动?

该解决方案将被设置为搁置{最小高度:0;},因为默认情况下它有auto,不会从中收缩。或者除了visible之外的任何溢出值。

body {
  height: 100vh;
  display: grid;
  grid-template-rows: auto 1fr auto;
  padding: 0px;
  margin: 0px;
}

header {
  background-color: gold;
}

div {
  display: grid;
  grid-template-columns: auto 1fr;
  background-color: burlywood;
  overflow: hidden;
}

aside {
  max-width: 10rem;
  min-height: 0; /*