CSS等高网格革命:打造完美自适应的多列布局系统
一、设计理念
基于Flexbox和CSS Grid的混合布局系统,实现真正的等高列效果,完美适配各种屏幕尺寸
二、核心实现
1. 基础等高网格
.equal-height-grid {
display: flex;
flex-wrap: wrap;
gap: 1.5rem;
}
.grid-item {
flex: 1;
min-width: 250px;
background: white;
border-radius: 0.375rem;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
padding: 1.5rem;
display: flex;
flex-direction: column;
}
/* 内容区域自动扩展 */
.grid-content {
flex: 1;
}
/* 底部对齐 */
.grid-footer {
margin-top: auto;
}
2. 响应式控制
/* 容器查询实现智能布局 */
@container (width > 1200px) {
.equal-height-grid {
grid-template-columns: repeat(4, 1fr);
}
}
@container (width > 900px) and (width <= 1200px) {
.equal-height-grid {
grid-template-columns: repeat(3, 1fr);
}
}
/* 传统媒体查询备用方案 */
@media (max-width: 768px) {
.grid-item {
min-width: 100%;
}
}
/* 打印优化 */
@media print {
.equal-height-grid {
display: block;
}
.grid-item {
break-inside: avoid;
margin-bottom: 1rem;
}
}
三、高级特性
1. 智能间距系统
:root {
--grid-gap: clamp(1rem, 2vw, 2rem);
--item-padding: clamp(1rem, 1.5vw, 1.5rem);
}
.equal-height-grid {
gap: var(--grid-gap);
padding: var(--grid-gap);
}
.grid-item {
padding: var(--item-padding);
}
/* 首尾项特殊处理 */
.equal-height-grid:first-child {
margin-top: 0;
}
.equal-height-grid:last-child {
margin-bottom: 0;
}
2. 动态列数控制
.equal-height-grid {
display: grid;
grid-template-columns: repeat(
auto-fit,
minmax(min(var(--item-min-width, 250px), 100%), 1fr)
);
}
/* 通过CSS变量动态控制 */
.grid-2-col {
--item-min-width: 400px;
}
.grid-3-col {
--item-min-width: 300px;
}
.grid-fluid {
--item-min-width: 200px;
}
四、完整案例
产品特性
这里是产品特性的详细描述内容,会自动撑开高度
技术规格
这里是技术规格的详细内容,会自动与其他列保持等高
额外段落也会正确显示
/* 基础样式见上文实现 */
.grid-title {
font-size: 1.25rem;
margin-bottom: 1rem;
color: #334155;
}
.grid-footer {
padding: 0.75rem 1rem;
background: #3b82f6;
color: white;
border: none;
border-radius: 0.25rem;
cursor: pointer;
margin-top: 1.5rem;
}