网格项根据需要占用尽可能多的空间

Pat*_*nik 3 html css css-grid

我想创建视图如下: 左边小盒子,右边扩展盒子排成一排,然后是第二排,一个盒子占据整个区域

我只能使用它来实现网格视图功能(没有弹性盒)。

现在我已经准备了网格,例如:

.item1 { grid-area: left; }
.item2 { grid-area: right; }
.item3 { grid-area: content; }

.grid-container {
  display: grid;
  grid-template-areas:
    'left right'
    'content content';
  grid-gap: 5px;
  background-color: #2196F3;
  padding: 5px;
}
.grid-container > div {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  padding: 5px 0;
  font-size: 30px;
  }
Run Code Online (Sandbox Code Playgroud)
<div class="grid-container">
  <div class="item1">left</div>
  <div class="item2">right</div>
  <div class="item3">content</div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是js小提琴: https: //jsfiddle.net/d32phsyu/3/

我有左侧、右侧和内容网格模板区域。

问题是我希望左侧区域仅占用与其内容一样多的空间(如内联块),而右侧区域则占用所有其他空间。

是否可以不说还需要占用多少像素?

如果是,那么如何实现呢?

Pau*_*e_D 5

您需要定义列宽,第一个为auto,第二个为1fr(其余空间)。

.item1 {
  grid-area: left;
}

.item2 {
  grid-area: right;
}

.item3 {
  grid-area: content;
}

.grid-container {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-areas: 'left right' 'content content';
  grid-gap: 5px;
  padding: 5px;
}

.grid-container>div {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  padding: 5px;
  font-size: 30px;
  border: 2px solid blue;
}
Run Code Online (Sandbox Code Playgroud)
<div class="grid-container">
  <div class="item1">left</div>
  <div class="item2">right</div>
  <div class="item3">content</div>
</div>
Run Code Online (Sandbox Code Playgroud)