這是一個簡單的演示,展示瞭如何擁有一些具有交替行的簡單網格。在此範例中,一行包含三個項目,另一行包含兩個項目。
這是一個 100% CSS 解決方案,歸結為使用 @property 作為 grid-columns 屬性的跨度值。
嗯,很簡單。您需要知道有多少個不同的行以及這些不同行總共包含多少個項目。
在我的範例中,這將是:
這表示在執行 :nth-child() 選擇器時,您必須使用該總數:
&:nth-child(5n - 4), &:nth-child(5n - 4) ~ &:is(:nth-child(5n - 3), :nth-child(5n - 2)) { --col-span: 4; } &:nth-child(5n - 1), &:nth-child(5n - 1) ~ &:nth-child(5n) { --col-span: 6; }
col-span 自訂屬性的使用方式如下:
.item { ... grid-column: span var(--span-cols); grid-row: span var(--span-rows); ... }
差不多就是這樣了。它非常簡單,沒什麼大不了的,但對每個人仍然有用。
對於更適合設計者的解決方案,我認為聲明實際的項目數量而不是更改跨度,因為如果更改網格中的列數,但忘記調整跨度,則會得到不良效果。這就是為什麼我添加了另一個自訂屬性並更改它。
最不幸的部分是,無論您選擇哪種解決方案,如果您想要完全動態的解決方案,則需要手動更改第 n 個子選擇器,或者透過 JavaScript 更改。 (你也可以使用SASS / SCSS,這顯然也是一個好方法)
新加入的屬性如下所示:
@property --row-items { syntax: "<integer>"; inherits: false; initial-value: 1; }
對於項目,您可以變更屬性 --row-items
的值
&:nth-child(5n - 4), &:nth-child(5n - 4) ~ &:is(:nth-child(5n - 3), :nth-child(5n - 2)) { --row-items: 3; } &:nth-child(5n - 1), &:nth-child(5n - 1) ~ &:nth-child(5n) { --row-items: 2; }
現在直接在 .item 類別上計算跨列,而不是選擇 x。
.item { --span-cols: calc(var(--grid-cols) / var(--row-items)); grid-column: span var(--span-cols); grid-row: span var(--span-rows); }
作為參考,列和行自訂屬性聲明如下:
@property --grid-cols { syntax: "<integer>"; inherits: false; initial-value: 12; } @property --grid-rows { syntax: "<integer>"; inherits: false; initial-value: 12; }
我希望這可以幫助您了解如何使這種網格發揮作用。
如果您發現任何錯誤,或者對我有任何反饋,請在這篇文章中發表評論!
謝謝,祝您週末愉快,
庫萊卡里
以上是具有交替行的簡單網格的詳細內容。更多資訊請關注PHP中文網其他相關文章!