🖥️ Learn CSS Grid the easy way | Kevin Powell
⚙️ 方法1
從攏統開始,除非需要特別指定,才處理特別之處,簡化設計。
-
grid-template-columns
-
grid-template-rows
盡量不用, 讓它自己長 (隱式網格,Implicit Grid Rows),簡化設計 -
gap
-
span
(在 grid item 上) -
處理特別的卡片,個別指定開始跟結束
-
media query (mobile first)
@media (min-width: 40em) {}
表示當螢幕寬度大於或等於 40em 時套用樣式。這是使用min-width
的情況。- 在 mobile-first 設計中,通常會使用
min-width
,因為一開始的樣式是針對較小的螢幕(例如手機)設計的,然後使用媒體查詢逐漸增加樣式以適應較大的螢幕。因此,一開始的樣式將不帶有媒體查詢,而後續的樣式將使用min-width
來確保它們只在螢幕寬度超過特定值時套用。
-
💪💪💪 Final
-
🔥 使用 Tailwind CSS 達到同樣效果
⚙️ 方法2
-
grid-template-areas
grid-template-areas
屬性用於定義 CSS Grid 的區域佈局。- 透過指定區域名稱,可以輕鬆地組態子元素的位置。
- 在
.testimonial-grid
中,使用了五個區域名稱one
,two
,three
,four
,five
來定義區域。 - 注意最後的分號🔥。
-
nth-child()
這部分如果不設定,會錯位nth-child()
是 CSS 選擇器中的一種,用於選擇父元素的特定子元素。- 在這裡,
.testimonial:nth-child(n)
被用來選擇.testimonial
元素中的第 n 個子元素,並且透過grid-area
屬性指定它們在 grid 中的區域。 - 如果移除了
.testimonial:nth-child(n)
選擇器中的grid-area
屬性,將會影響到 grid 的佈局。在這個特定的情境中,.testimonial-grid
使用了grid-template-areas
來定義區域佈局,而.testimonial:nth-child(n)
選擇器被用來將特定的.testimonial
元素放置到相應的區域。 - 如果省略了
grid-area
,.testimonial
元素將不會被對應到指定的區域,而是預設將它們按照正常的流動放置在 grid 中。這可能會導致 grid 的佈局混亂,因為沒有確定每個 testimonial 應該放置在哪個區域。 - 簡而言之,
.testimonial
元素的位置不再受到grid-template-areas
的影響,它們將按照正常文檔流的方式排列。這可能會使得原本為每個 testimonial 定義的區域佈局失效,並可能造成不符合預期的外觀。
-
grid-auto-columns
讓 column 等寬,不然就會自然流動分配- 如果移除了
.testimonial-grid
中的grid-auto-columns
屬性,則將影響到自動生成欄的寬度。在這裡,grid-auto-columns: 1fr;
的設置表示自動生成的欄寬度均為 1fr。 - 如果省略了
grid-auto-columns
,則自動生成的欄將使用預設的欄寬度。這可能會影響到該 grid 的外觀,特別是當沒有明確定義欄寬度時,欄的寬度可能會被內容的寬度所影響。 - 簡而言之,
grid-auto-columns
的存在有助於明確指定自動生成的欄的寬度,而省略它將使用默認值。具體影響取決於其他樣式規則和內容的特性,但在這個例子中,可能會導致 grid 的欄寬度不如預期。
- 如果移除了
-
💪💪💪 Final