响应式网格(网格模板列)

Posted

技术标签:

【中文标题】响应式网格(网格模板列)【英文标题】:responsive grid (grid-template-columns) 【发布时间】:2021-01-24 21:11:37 【问题描述】:

你好,我已经习惯了 CSS 中的网格并且我已经使用了

display: grid;
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));

很多次,但是如果我希望里面的 div 以特定宽度开始呢?我有这样的东西

<div class="wrapper">
    <div class="right-content">

    </div>
    <div class="left-content">

    </div>
</div>

.wrapper
        width: 100vw;
        height: 100vh
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
    

我怎么说.right-content 的起始大小应该是 .wrapper 的 70%,因为如果我做宽度 70%,他会得到模板列属性给他的 1fr 的 70%。 ...有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

如果我们只关注 leftright 内容,那么repeat(auto-fit, minmax(...)) 可能过于复杂了。

当 repeat() 函数设置为自动适应或自动填充时,网格容器会在不溢出容器的情况下创建尽可能多的网格轨道(列/行)。

由于我们只需要 2 列,因此您可能正在寻找 grid-template-columns: 1fr minmax(70%, 1fr)

.wrapper 
  width: 100vw;
  height: 100vh;
  display: grid;
  grid-template-columns: 1fr minmax(70%, 1fr);


.right-content 
  background-color: red;


.left-content 
  background-color: blue;
<div class="wrapper">
  <div class="left-content"></div>
  <div class="right-content"></div>
</div>

【讨论】:

以上是关于响应式网格(网格模板列)的主要内容,如果未能解决你的问题,请参考以下文章

响应式两列网格

如何创建响应式(可变列数)Angular-Material 卡片网格

在 Vuetify 中制作响应式卡片网格

具有列顺序的响应式多列列表

响应式正方形网格内的响应式正方形网格

如何用一简单的CSS制作响应式HTML网页