如何在CSS网格中获得滚动?
我在css网格中嵌入了一个组件 在堆栈闪电战中,我有一个3行的外部网格。其中一行具有最小宽度。如果视口小于最小宽度,如何使其水平滚动 在中间一行中,我有一个组件,它本身使用2列网格。列中的div具有最小高度 我要寻找的是,如果视口的大小使整个内部组件(红色框)不可见,则红色框是可滚动的 下面是一个堆栈闪电战: 下面是另一个例子:如何在CSS网格中获得滚动?,css,scroll,css-grid,Css,Scroll,Css Grid,我在css网格中嵌入了一个组件 在堆栈闪电战中,我有一个3行的外部网格。其中一行具有最小宽度。如果视口小于最小宽度,如何使其水平滚动 在中间一行中,我有一个组件,它本身使用2列网格。列中的div具有最小高度 我要寻找的是,如果视口的大小使整个内部组件(红色框)不可见,则红色框是可滚动的 下面是一个堆栈闪电战: 下面是另一个例子: <!DOCTYPE html> <html lang="en"> <head> <meta charset="
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Showcase</title>
<base href="/" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/x-icon" href="./shared/favicon.ico" />
<style>
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;
}
</style>
</head>
<body>
<div class="content">
<header>
<div>Component Showcase</div>
</header>
<main>
<div>
<section class="my-component">
<div class="my-panel"> </div>
<div class="my-panel"> </div>
</section>
</div>
</main>
<footer></footer>
</div>
</body>
</html>
玻璃陈列柜
html{
框大小:边框框;
}
*,*:之前,*:之后{
框大小:继承;
}
.内容{
显示:网格;
网格模板行:2em 1fr 1px;
网格间距:0.5雷姆;
高度:20em;
}
.我的小组{
边框:1绿色实心;
背景色:红色;
填充:0.25rem;
}
.我的部件{
显示:网格;
网格模板柱:1fr 1fr;
网格间距:0.5雷姆;
填充:0.25rem;
身高:100%;
}
标题{
边框:绿色实心1px;
填充:4px;
}
主要{
边框:蓝色实心1px;
填充:1rem;
}
主要部门{
边框:红色实心1px;
身高:100%;
}
页脚{
边框底部:黑色实心1px;
}
组件展示
您在布局方面遇到了两个主要问题:
首先,默认情况下,网格项不能小于其内容。默认值为min-width:auto
和min-height:auto
。因此,main
元素是app root
中的网格项,需要重写
将minwidth:0
添加到main
更完整的解释如下:
第二个,两列的红色框都设置为:
grid-template-columns: 1fr 1fr
这意味着每个列将在容器中共享相等的可用空间分布。如果这些列中没有任何内容,这两个列可以简单地收缩到0宽度,而不会触发溢出。因此,没有滚动条
如果您这样做,同样的问题也会存在:
grid-template-columns: 50% 50%
因此,除非这些列中总是有内容强制使用最小宽度,否则我建议如下:
grid-template-columns: minmax(250px, 1fr) minmax(250px, 1fr)
}
通过这种方式,您可以根据需要添加任意多的子项,在网格系统中,使用模板时总是很难维护动态内容,
当您无法预测将获得多少项时,请使用网格自动流
✌
.the_div_you_want_to_scroll{
display: grid ;
align-items: center ;
grid-auto-flow: row ;
grid-auto-rows: 25% ; // play with this to change height of the children, 50% will fill half
grid-template-columns: unset; // do not set template columns and rows
grid-template-rows: unset;
overflow: scroll;