【发布时间】:2021-08-09 19:02:03
【问题描述】:
我想要一个看起来像这样的 CSS 网格:
┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ │ │ │ │ │
│ │ item │ item │ item │ │
│ │ │ │ │ │
│ ├─────────┼─────────┼─────────┤ │
│ │ │ │ │ │
│firstcol │ item │ item │ item │ lastcol │
│ │ │ │ │ │
│ ├─────────┼─────────┼─────────┤ │
│ │ │ │ │ │
│ │ item │ item │ item │ │
│ │ │ │ │ │
└─────────┴─────────┴─────────┴─────────┴─────────┘
可以响应调整大小:
┌─────────┬─────────┬─────────┬─────────┐
│ │ │ │ │
│ │ item │ item │ │
│ │ │ │ │
│ ├─────────┼─────────┤ │
│ │ │ │ │
│ │ item │ item │ │
│ │ │ │ │
│ ├─────────┼─────────┤ │
│ │ │ │ │
│firstcol │ item │ item │ lastcol │
│ │ │ │ │
│ ├─────────┼─────────┤ │
│ │ │ │ │
│ │ item │ item │ │
│ │ │ │ │
│ ├─────────┼─────────┤ │
│ │ │ │ │
│ │ item │ │ │
│ │ │ │ │
└─────────┴─────────┘ └─────────┘
或更窄或更宽,等等。
对于包含的 DIV,我尝试了重复...
.container {
display: grid;
grid-template-columns: 100px repeat( auto-fit, minmax(250px, 1fr) ) 100px;
grid-auto-flow: row; /* or column really ;-) - either is ok */
}
...我已经尝试过媒体查询:
.container {
display: grid;
grid-template-columns: 100px 1fr 100px;
grid-auto-flow: column;
}
@media (min-width: 600px) {
.container {
grid-template-columns: 100px 1fr 1fr 100px;
}
}
@media (min-width: 800px) {
.container {
grid-template-columns: 100px 1fr 1fr 1fr 100px;
}
}
@media (min-width: 1200px) {
.container {
grid-template-columns: 100px 1fr 1fr 1fr 1fr 100px;
}
}
对于容器,我试过了:
.firstcol {
grid-column: 1 / span 1 ;
grid-row: 1 / -1;
}
.lastcol {
grid-column: -2 / -1 ;
grid-row: 1 / -1;
}
...以及地区的变化。我似乎无法动态指定第一列和最后一列区域。
我错了吗? grid-row: 1 / -1; 不是是指第一行到最后一行,还是?
【问题讨论】:
-
可以通过3个
divs的混合来完成。中间的应该是flex box