嘿那裡! ?在花了無數時間幫助開發人員調試他們的 CSS 佈局之後,我注意到我們都在進行同樣的戰鬥。今天讓我們用一些經過實戰檢驗且在生產中實際有效的 CSS 解決方案來解決這個問題。
我們都經歷過。你找到一個 CSS 教程,複製程式碼,然後突然:
聽起來很熟悉嗎?讓我們一勞永逸地解決這些問題。
首先,讓我們處理最常見的版面:頁首、可捲動內容和頁尾。這就是我們想要的:
解決方案如下:
.app { display: grid; grid-template-rows: auto 1fr auto; min-height: 100vh; gap: 1rem; } .header { position: sticky; top: 0; background: white; z-index: 10; } .footer { background: #f5f5f5; } .content { /* Prevent content from getting stuck under header */ padding-top: var(--safe-padding, 1rem); overflow-y: auto; }
<div> <p>Why this works:</p> <ul> <li>Grid's 1fr handles the space distribution automatically</li> <li>Sticky header stays visible while scrolling</li> <li>Content scrolls independently</li> <li>Footer always stays at the bottom</li> </ul> <h2> 2. The "Works Everywhere" Card Grid </h2> <p>Need cards that look good no matter how many you have? This solution handles everything from 1 to 100 cards:<br> </p> <pre class="brush:php;toolbar:false">.card-container { --min-card-width: 300px; display: grid; grid-template-columns: repeat( auto-fit, minmax(min(var(--min-card-width), 100%), 1fr) ); gap: clamp(1rem, 2vw, 2rem); padding: clamp(1rem, 2vw, 2rem); } .card { display: flex; flex-direction: column; height: 100%; padding: 1rem; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .card-content { flex: 1; /* Takes up remaining space */ } .card-footer { margin-top: auto; /* Pushes footer to bottom */ }
有何特別之處:
有沒有註意到閱讀橫跨寬螢幕整個寬度的文字有多困難?解決方法如下:
.content-wrapper { --content-width: 65ch; --padding: clamp(1rem, 5vw, 3rem); width: min(var(--content-width), 100%); margin-inline: auto; padding-inline: var(--padding); } .text-content { font-size: clamp(1rem, 1rem + 0.5vw, 1.25rem); line-height: 1.6; } /* For full-width backgrounds with contained content */ .full-width { width: 100%; padding-inline: var(--padding); } .full-width > * { width: min(var(--content-width), 100%); margin-inline: auto; }
為什麼開發者喜歡這個:
/* Add this to your dev environment */ * { outline: 1px solid rgba(255,0,0,0.1); }
這有助於及早發現佈局問題。
/* Start here */ .element { flex-direction: column; gap: 1rem; } /* Then enhance */ @media (min-width: 768px) { .element { flex-direction: row; } }
:root { --spacing-unit: 0.5rem; --padding-sm: calc(var(--spacing-unit) * 2); --padding-md: calc(var(--spacing-unit) * 4); --padding-lg: calc(var(--spacing-unit) * 8); }
最好的學習方法就是實踐。取得這些片段並在您的專案中嘗試它們。從應用佈局開始——它是其他一切構建的基礎。
有疑問嗎?找到改進這些模式的方法了嗎?在下面發表評論吧!我通常會在 24 小時內回覆。
如果這對您有幫助,請考慮:
以上是實用的現代 CSS 佈局:開發人員指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!