1 回答
TA贡献1946条经验 获得超3个赞
您可以只使用justify-content: flex-start
将所有网格项目对齐到网格容器的左侧-参见下面的演示:
.timelineBox {
border: 1px solid red;
}
.timelineBox>.timeline>div.main {
height: 50px;
display: grid;
justify-content: flex-start;
grid-auto-flow: column;
grid-gap: 0px;
}
._1 {
background-color: red;
}
._2 {
background-color: blue;
}
._3 {
background-color: lime;
}
._4 {
background-color: purple;
}
.timelineBox>.timeline>div.main>div {
height: 100%;
}
<div class='timelineBox'>
<div ident='tl1' class='timeline'>
<div class='main'>
<div style='width: 5px;' class='_1'></div>
<div style='width: 120px;' class='_2'></div>
<div style='width: 5px;' class='_1'></div>
<div style='width: 120px;' class='_2'></div>
</div>
</div>
</div>
隐式网格
但是您在这里有更多选择-因为并且您没有指定grid-template-columns
属性,所以您在这里处理隐式网格。该计算的宽度网格项目,你看到的是由于默认的grid-auto-columns: auto
属性,它处理的大小格列于隐格。
因此,您可以grid-auto-columns: min-content
像下面这样指定以达到相同的结果:
.timelineBox {
border: 1px solid red;
}
.timelineBox>.timeline>div.main {
height: 50px;
display: grid;
grid-auto-flow: column;
grid-auto-columns: min-content; /* ADDED */
grid-gap: 0px;
}
._1 {
background-color: red;
}
._2 {
background-color: blue;
}
._3 {
background-color: lime;
}
._4 {
background-color: purple;
}
.timelineBox>.timeline>div.main>div {
height: 100%;
}
<div class='timelineBox'>
<div ident='tl1' class='timeline'>
<div class='main'>
<div style='width: 5px;' class='_1'></div>
<div style='width: 120px;' class='_2'></div>
<div style='width: 5px;' class='_1'></div>
<div style='width: 120px;' class='_2'></div>
</div>
</div>
</div>
您可以阅读有关的更多信息Implicit and Explicit Grids here
。
内联网格
另一种选择是使用嵌入式网格-网格项目的自动放置现在仅需要其内容的宽度:
.timelineBox {
border: 1px solid red;
}
.timelineBox>.timeline>div.main {
height: 50px;
display: inline-grid; /* changed to inline*/
vertical-align: top; /* align inline element */
grid-auto-flow: column;
grid-gap: 0px;
}
._1 {
background-color: red;
}
._2 {
background-color: blue;
}
._3 {
background-color: lime;
}
._4 {
background-color: purple;
}
.timelineBox>.timeline>div.main>div {
height: 100%;
}
<div class='timelineBox'>
<div ident='tl1' class='timeline'>
<div class='main'>
<div style='width: 5px;' class='_1'></div>
<div style='width: 120px;' class='_2'></div>
<div style='width: 5px;' class='_1'></div>
<div style='width: 120px;' class='_2'></div>
</div>
</div>
</div>
你会看到一个不错的example of using inline grids here
。
添加回答
举报