html - 网格元素在必要时占用尽可能多的空间

标签 html css css-grid

我想按如下方式创建 View : small left box, right extended box in one row, then second row, one box which takes whole area

我只能用它来实现那个Grid View的功能(没有flexbox)。

现在我准备了如下网格:

.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;
  }
<div class="grid-container">
  <div class="item1">left</div>
  <div class="item2">right</div>
  <div class="item3">content</div>
</div>

这是 js fiddle :https://jsfiddle.net/d32phsyu/3/

我在左侧、右侧和内容网格模板区域的位置。

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

不说还剩多少像素可以吗?

如果是,那么如何实现?

最佳答案

您需要定义列宽,第一个为 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;
}
<div class="grid-container">
  <div class="item1">left</div>
  <div class="item2">right</div>
  <div class="item3">content</div>
</div>

关于html - 网格元素在必要时占用尽可能多的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53544254/

相关文章:

html - 高度100%误差

javascript - 为什么内联事件处理程序属性在现代语义 HTML 中不是一个好主意?

jquery - Algolia 自动完成 - 如何做出响应

html - 如何计算()网格模板中的行数?

CSS Grid水平滚动,在滚动项前后添加空间

css - 为什么我在网格行中有额外的空间?

html - GitHub 托管的网站链接缩略图未显示在 WhatsApp 上

python使用lxml解析html表

css - 为什么 Facebook 移动评论插件有过多的空格?

javascript - 使用 JavaScript 定义元素高度的问题