嘿那里! ?在花费了无数时间帮助开发人员调试他们的 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中文网其他相关文章!