[英]css grid dynamic multi column 2 dimentional layout
In my HTML I have 1 container div then a dynamic number of child divs.在我的 HTML 中,我有 1 个容器 div,然后是动态数量的子 div。 I need to give them a multi-column layout based on the class name of child div.我需要根据子 div 的类名给他们一个多列布局。
<div class="list-units">
<div class="s">s</div>
<div class="s">s</div>
<div class="s">s</div>
<div class="m">m</div>
<div class="m">m</div>
<div class="m">m</div>
<div class="a">a</div>
<div class="a">a</div>
<div class="r">r</div>
<div class="d">d</div>
<div class="o">o</div>
<div class="o">o</div>
<div class="x">x</div>
</div>
Based on the class name of the child div they should be in their column.根据子 div 的类名,他们应该在他们的列中。 ie all the child div with style s should be in one column and all the child divs with class name m should be in next column in a 2-dimensional grid and so forth for rest of the child divs.即所有样式为s的子 div 都应该在一个列中,所有类名m的子 div 应该在二维网格的下一列中,对于其余的子 div,依此类推。 This is dynamic html coming at run time, I can not modify this html.这是运行时出现的动态 html,我无法修改此 html。
I need styles as below我需要如下样式
.list-units {}
.list-units .s {}
.list-units .m {}
.list-units .a {}
.list-units .r {}
.list-units .d {}
CSS-Grid and grid-auto-flow:column
can do that. CSS-Grid 和grid-auto-flow:column
可以做到这一点。
.list-units { display: grid; margin: 1em; grid-auto-flow: column; gap: 1em; text-align: center; } .list-units div { border: 1px solid grey; } .list-units .s { grid-column: 1; } .list-units .m { grid-column: 2 } .list-units .a { grid-column: 3; } .list-units .r { grid-column: 4; } .list-units .d { grid-column: 5; } .list-units .o { grid-column: 6; } .list-units .x { grid-column: 7 }
<div class="list-units"> <div class="s">s</div> <div class="s">s</div> <div class="s">s</div> <div class="m">m</div> <div class="m">m</div> <div class="m">m</div> <div class="a">a</div> <div class="a">a</div> <div class="r">r</div> <div class="d">d</div> <div class="o">o</div> <div class="o">o</div> <div class="x">x</div> </div>
Use Grid Column Property https://www.w3schools.com/cssref/tryit.asp?filename=trycss_grid-column使用网格列属性https://www.w3schools.com/cssref/tryit.asp?filename=trycss_grid-column
.list-units {
display: grid;
}
.list-units .s {
grid-column: 1;
}
.list-units .m {
grid-column: 2;
}
.list-units { display: grid; margin: 10px auto; background: #ffffff; grid-template-columns: auto auto auto auto; grid-auto-flow: row dense; margin-bottom: 20px; border: 1px solid grey; } .item { height: 60px; background: pink; display: flex; justify-content: center; align-items: center; color: whitesmoke; border: 1px solid red; } .list-units .s { grid-column-start: 1; } .list-units .m { grid-column-start: 2; } .list-units .a { grid-column-start: 3; } .list-units .r { grid-column-start: 4; } .list-units .d { grid-column-start: 5; } .list-units .o { grid-column-start: 6; } .list-units .x { grid-column-start: 7; }
<div class="list-units"> <div class="s">s</div> <div class="s">s</div> <div class="s">s</div> <div class="m">m</div> <div class="m">m</div> <div class="m">m</div> <div class="a">a</div> <div class="a">a</div> <div class="r">r</div> <div class="d">d</div> <div class="o">o</div> <div class="o">o</div> <div class="x">x</div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.