---grid布局
1. 基础 Grid 布局
定义gird布局和行宽
.container {display: grid;grid-template-columns: 100px 200px 300px; /* 三列,宽度分别为100px,200px,300px */grid-template-rows: 100px 200px; /* 两行,高度分别为100px,200px */
}
常用单位
fr
(fractional unit):可用空间的比例单位auto
:根据内容自动调整minmax(min, max)
:定义大小范围
.container {grid-template-columns: 1fr 2fr 1fr; /* 中间列是两侧的两倍宽 */
}
2. 常用布局模式
等宽多列布局
.container {display: grid;grid-template-columns: repeat(3, 1fr); /* 3等宽列 */gap: 20px; /* 列间距 */
}
响应式网格
.container {display: grid;grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));gap: 20px;
}
250px为设置的最小值
3. 网格项定位
.item {grid-column: 1 / 3; /* 从第1列线到第3列线 */grid-row: 1; /* 第1行 */
}
4. 命名网格区域
.container {display: grid;grid-template-areas:"header header header""sidebar content content""footer footer footer";
}.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer { grid-area: footer; }
5. 实用技巧
自动填充与自动适应
/* 自动填充(尽可能多列) */
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));/* 自动适应(保持列数但调整大小) */
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
网格对齐
.container {justify-items: start | end | center | stretch; /* 水平对齐 */align-items: start | end | center | stretch; /* 垂直对齐 */place-items: align justify; /* 简写 */
}.item {justify-self: start | end | center | stretch;align-self: start | end | center | stretch;
}
---&父类选择器
&
符号是一个特殊的 父选择器引用符,它代表 当前规则集的父选择器
意思就是在那里用&,这个&就代表哪个class类
:has()
允许你根据子元素的存在或状态来样式化父元素,这在以前只能用 JavaScript 实现。
/* 选择包含 .active 类子元素的菜单 */
.menu:has(.active) {background-color: #f0f0f0;
}