我正在尝试使用css网格布局模块来显示12列 – 3行网格.
我需要让第一行只显示2个元素(第一行在网格的左侧,第二行在右侧).
我使用10个周期将它们与空单元分开.
我决定使用网格模板区域来更好地控制定位,但可能不是最好的方法,因为我似乎必须为所有元素提供特定的网格区域名称.
此外,当我尝试将自动网格区域属性用于剩余单元格以便它们可以自动填充第3行时,它们似乎填充了第一行中的空单元格.
这是我的代码:
.grid { display: grid; grid-template-areas: "elem1 . . . . . . . . . . elem2" "elem3 elem4 elem5 elem6 elem7 elem8 elem9 elem10 elem11 elem12 elem13 elem14"; } .elem{ text-align: center; color: white; } .elem1 { background-color: blue; grid-area: elem1; } .elem2 { background-color: red; grid-area: elem2; } .elem3 { background-color: cyan; grid-area: elem3; } .elem4 { background-color: green; grid-area: elem4; } .elem5 { background-color: magenta; grid-area: elem5; } .elem6 { background-color: blue; grid-area: elem6; } .elem7 { background-color: red; grid-area: elem7; } .elem8 { background-color: cyan; grid-area: elem8; } .elem9 { background-color: green; grid-area: elem9; } .elem10 { background-color: magenta; grid-area: elem10; } .elem11 { background-color: blue; grid-area: elem11 } .elem12 { background-color: red; grid-area: elem12; } .elem13 { background-color: cyan; grid-area: elem13; } .elem14 { background-color: green; grid-area: elem14; } .elem15 { background-color: magenta; grid-area: auto; } .elem16 { background-color: green; grid-area: auto; } .elem17 { background-color: magenta; grid-area: auto; } .elem18 { background-color: cyan; grid-area: auto; } .elem19 { background-color: magenta; grid-area: auto; } .elem20 { background-color: blue; grid-area: auto; }
<div class="grid"> <div class="elem elem1"> elem1 </div> <div class="elem elem2"> elem2 </div> <div class="elem elem3"> elem3 </div> <div class="elem elem4"> elem4 </div> <div class="elem elem5"> elem5 </div> <div class="elem elem6"> elem6 </div> <div class="elem elem7"> elem7 </div> <div class="elem elem8"> elem8 </div> <div class="elem elem9"> elem9 </div> <div class="elem elem10"> elem10 </div> <div class="elem elem11"> elem11 </div> <div class="elem elem12"> elem12 </div> <div class="elem elem13"> elem13 </div> <div class="elem elem14"> elem14 </div> <div class="elem elem15"> elem15 </div> <div class="elem elem16"> elem16 </div> <div class="elem elem17"> elem17 </div> <div class="elem elem18"> elem18 </div> <div class="elem elem19"> elem19 </div> <div class="elem elem20"> elem20 </div> </div>
非常感谢
解决方法
只需利用默认的grid-auto-flow:row属性,并使用grid-column告诉“1st row-right”div开始/结束的位置.
那么你根本不需要网格区域.
结果:
.grid { display: grid; grid-template-columns: repeat(12,1fr); grid-auto-flow: row; /*typo corrected*/ } .elem { text-align: center; color: white; } .elem1 { background-color: blue; } .elem2 { background-color: red; grid-column: 12/13; } .elem3 { background-color: cyan; } .elem4 { background-color: green; } .elem5 { background-color: magenta; } .elem6 { background-color: blue; } .elem7 { background-color: red; } .elem8 { background-color: cyan; } .elem9 { background-color: green; } .elem10 { background-color: magenta; } .elem11 { background-color: blue; } .elem12 { background-color: red; } .elem13 { background-color: cyan; } .elem14 { background-color: green; } .elem15 { background-color: magenta; } .elem16 { background-color: green; } .elem17 { background-color: magenta; } .elem18 { background-color: cyan; } .elem19 { background-color: magenta; } .elem20 { background-color: blue; }
<div class="grid"> <div class="elem elem1"> elem1 </div> <div class="elem elem2"> elem2 </div> <div class="elem elem3"> elem3 </div> <div class="elem elem4"> elem4 </div> <div class="elem elem5"> elem5 </div> <div class="elem elem6"> elem6 </div> <div class="elem elem7"> elem7 </div> <div class="elem elem8"> elem8 </div> <div class="elem elem9"> elem9 </div> <div class="elem elem10"> elem10 </div> <div class="elem elem11"> elem11 </div> <div class="elem elem12"> elem12 </div> <div class="elem elem13"> elem13 </div> <div class="elem elem14"> elem14 </div> <div class="elem elem15"> elem15 </div> <div class="elem elem16"> elem16 </div> <div class="elem elem17"> elem17 </div> <div class="elem elem18"> elem18 </div> <div class="elem elem19"> elem19 </div> <div class="elem elem20"> elem20 </div> </div>