gpt4 book ai didi

css - 如何在 CSS 网格中滚动?

转载 作者:行者123 更新时间:2023-12-04 11:59:06 27 4
gpt4 key购买 nike

我有一个嵌入在 css-grid 中的组件。
在堆栈 Blitz 中,我有一个 3 行的外部网格。其中一行具有最小宽度。如果视口(viewport)小于最小宽度,如何让它水平滚动?
在中间行中,我有一个组件,它本身使用 2 列网格。列中的 div 具有最小高度。
我正在寻找的是,如果视口(viewport)的大小使得整个内部组件(红色框)不可见,则红色框是可滚动的。
这是一个堆栈 Blitz :
https://stackblitz.com/edit/angular-q4geyk
这是另一个例子:

html {
box-sizing: border-box;
}

*,
*:before,
*:after {
box-sizing: inherit;
}

.content {
display: grid;
grid-template-rows: 2em 1fr 1px;
grid-gap: 0.5rem;
height: 20em;
}

.my-panel {
border: 1 green solid;
background-color: red;
padding: 0.25rem;
}

.my-component {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 0.5rem;
padding: 0.25rem;
height: 100%;
}

header {
border: green solid 1px;
padding: 4px;
}

main {
border: blue solid 1px;
padding: 1rem;
}

main div {
border: red solid 1px;
height: 100%;
}

footer {
border-bottom: black solid 1px;
}
<div class="content">
<header>
<div>Component Showcase</div>
</header>

<main>
<div>
<section class="my-component">
<div class="my-panel">&nbsp;</div>
<div class="my-panel">&nbsp;</div>
</section>
</div>
</main>

<footer></footer>
</div>

最佳答案

您遇到了两个主要问题与布局:

第一 ,默认情况下,网格项不能小于其内容。默认值为 min-width: automin-height: auto .因此,main元素,它是 app-root 中的网格项,需要覆盖。

添加 min-width: 0main .

更完整的解释在这里:Prevent content from expanding grid items

第二 ,您将两列的红色框设置为:

grid-template-columns: 1fr 1fr

这意味着每列将共享容器中的可用空间的均等分布。这些列中没有任何内容,两列都可以简单地缩小到 0 宽度,永远不会触发溢出。因此,没有滚动条。

如果您这样做,也会存在同样的问题:
grid-template-columns: 50% 50%

因此,除非这些列中总是有内容强制最小宽度,否则我会推荐这样的东西:
grid-template-columns: minmax(250px, 1fr) minmax(250px, 1fr)

https://stackblitz.com/edit/angular-ortstl?file=src/styles.css

关于css - 如何在 CSS 网格中滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61959291/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com