html - 阻止 CSS 网格内容扩展以填充单元格
问题描述
我正在编写一个带有 CSS 网格内可折叠侧边栏的 Web 应用程序。CSS 网格将整个 UI 划分为多个部分,侧边栏面板是其中一个部分的子组件。
我遇到的问题是我希望侧面板自动缩小到其内容的最小尺寸,在添加到 CSS 网格单元之前它会很好,此时它会扩展以填充整个单元格。
这是该问题的一个简单示例:
<style>
#myGrid{
display: grid;
grid-template-areas:
"g1 g2";
}
#panel{
grid-area: g2;
display: inline-block;
background: #FFAAAA;
height: 100%;
width: auto;
min-width: minmax(0, 1fr);
}
#panelContents{
display: flex;
flex-direction: row;
height: 100%;
}
#collapseArrow{
align-self: center;
right: 0;
top: 50%;
}
#block{
grid-area: g1;
width: 200px;
height: 100%;
background: #AAAAFF;
}
</style>
<body>
<div id="myGrid">
<div id="block">
Contents
</div>
<div id="panel">
<div id="panelContents">
<div id="collapseContents">
<div class="item">
Item1
</div>
<div class="item">
Item2
</div>
<div class="item">
Item3
</div>
<div class="item">
Item4
</div>
<div class="item">
Item5
</div>
</div>
<div id="collapseArrow"><</div>
</div>
</div>
</div>
</body>
知道如何解决这个问题吗?我试图让红色面板缩小以适应它的内容。我尝试将最小宽度更改为 0,但这似乎没有帮助。
编辑:这是 HTML5 游戏引擎的更复杂的 UI。左侧网格单元格是资产浏览器,红色面板是右侧编辑器窗口(右侧网格单元格)的简单属性面板,我试图仅在单元格的左侧部分显示,所以其余的右侧单元格可以是编辑器窗口。
解决方案
使用另一列将面板压缩到其内容宽度。
#myGrid {
display: grid;
grid-template-columns: 1fr auto; /* 1fr consumes all free space on the row */
grid-template-areas: "g1 g2";
}
#block {
grid-area: g1;
background: #AAAAFF;
}
#panel {
grid-area: g2;
background: #FFAAAA;
}
#panelContents {
display: flex;
}
#collapseArrow {
align-self: center;
}
<div id="myGrid">
<div id="block">
Contents
</div>
<div id="panel">
<div id="panelContents">
<div id="collapseContents">
<div class="item">Item1</div>
<div class="item">Item2</div>
<div class="item">Item3</div>
<div class="item">Item4</div>
<div class="item">Item5</div>
</div>
<div id="collapseArrow"><</div>
</div>
</div>
</div>
推荐阅读
- ffmpeg - 使用 ffmpeg 为视频添加背景音乐
- django - Django rest框架中/api/addorderitem的ValueError格式错误的十六进制UUID字符串
- python - 不写入 pyaudio 流时同步音频数据
- node.js - 未找到电子应用程序抛出未捕获的异常绑定。但没有显示哪个包抛出错误
- camera-calibration - 计算归一化的内在相机矩阵(裁剪图像)
- webvtt - WebVTT:Firefox 87.0 的转义和字幕
- flutter - 有没有办法在 pubspec.yaml 中引用名称?
- html-table - XQuery 到 HTML 表:生成列
- wordpress - WordPress Gutenberg 块类别未加载
- angular - Angular ag 网格在左侧显示“无数据”消息