css - 缩小 CSS 网格单元的宽度以为侧边栏腾出空间

标签 css flexbox css-grid

我有一个两列的网格布局,我正在努力实现想要的效果。 block A 是固定大小的。 Block B 是固定宽度的,但它的高度可以根据内容变化。而C block 是固定高度的。这是 B 展开时的当前样子:

A A B
A A B
C C C

 -->

A A B
A A B
    B
C C C

但是,我想要实现的是,一旦 B 变得比 A 高,C 也应该收缩到 A 的宽度,以便 B 可以自由生长。

A A B
A A B
C C C

 -->

A A B
A A B
C C B

这有可能通过 CSS grid/flexbox/两者的组合来实现吗?我可以完全控制标记和 CSS,因此我可以根据需要更改它们。

最佳答案

我认为这不是您 100% 想要的,但它可能会起作用。这是使用 css 网格和位置完成的:相对于重叠“C”。 看看下面的代码:

.container{
	display: grid;
	grid-template-columns: repeat(3,1fr);
	grid-template-rows: 20vh 20vh 20vh;
	grid-column-gap: 20px;
	grid-row-gap: 20px;
}

.grid-item:nth-of-type(1){
	grid-column: 1/3;
	grid-row: 1/3;
	background: green;
}

.grid-item:nth-of-type(2){
	grid-column: 3;
	grid-row: 1/-1;
	background: pink;
	position: relative;
	height: calc(60vh + 40px);
}

.grid-item:nth-of-type(3){
	grid-column: 1/-1;
	grid-row: 3;
	background-color: red;
}
<div class="container">
		<div class="grid-item">A</div>
		<div class="grid-item">B</div>
		<div class="grid-item">C</div>
	</div>

关于css - 缩小 CSS 网格单元的宽度以为侧边栏腾出空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57479745/

相关文章:

html - css 网格增长超过 100% 宽度与 fr 但不是与 minmax

css - 基于窗口宽度的 Jssor slider 可变宽度

CSS 下划线小于标题宽度?

html - Flexbox - 旧设备上的 flex-wrap

html - Flexbox - 控制 span 和文本之间的空间

html - 在 IE/Edge 中将 <HR> 向右对齐

css - 1px 间隙在 CSS 网格中不一致

CSS 网格无法按预期工作(网格区域)

html - 左边距出现在我不想要的 html 中

css - Google map 在 Chrome 中打印不正确