【发布时间】:2019-06-17 07:44:49
【问题描述】:
我正在构建一个简单的 CSS 网格布局,看起来像这样......
.container {
display:grid;
grid-template-columns:1fr 1fr 1fr 1fr;
}
.col1 {
padding:20px;
background:red;
color:white;
text-align:center;
}
.col2 {
padding:20px;
background:green;
color:white;
text-align:center;
}
.col3 {
padding:20px;
background:blue;
color:white;
text-align:center;
}
.col4 {
padding:20px;
background:gray;
color:white;
text-align:center;
}
<div class="container">
<div class="col1">
Column 1
</div>
<div class="col2">
Column 2
</div>
<div class="col3">
Column 3
</div>
<div class="col4">
Column 4
</div>
</div>
我正在尝试这样做,以便当任何列悬停时,它们会改变宽度,以便悬停的列占用 2fr。
我知道使用 flexbox 我可以在项目本身中设置项目的宽度,但使用网格我可以在容器上设置项目宽度。
有没有办法在物品上设置它们?
【问题讨论】:
-
您尝试过:
.container>div:hover {width:40vw}来检查您的网格的行为吗? -
相关:stackoverflow.com/a/54834180/8620333(可能是你要找的)
-
首先你可以在悬停的元素上使用
grid-column: 2。现在您可以使用grid-auto-flow: column将网格项流向 切换到列;并使用grid-auto-columns: 1fr将隐式列设置为 1fr - 在悬停时,您现在将有 5 列,而 hovered 将从中取出 2fr...参见 jsfiddle.net/anz3e2t5(如果这是预期的输出,将转换为答案) -
预期的输出是上述评论中最重要的输出吗?