CSS 核心知识点
CSS (Cascading Style Sheets) 用于网页的样式设计和布局。
1. 盒模型 (Box Model)
- 标准盒模型 (
box-sizing: content-box): width = content - IE/怪异盒模型 (
box-sizing: border-box): width = content + padding + border (推荐)
css
* {
box-sizing: border-box;
}2. 布局 (Layout)
2.1 Flexbox (一维布局)
- 容器:
justify-content(主轴),align-items(交叉轴),flex-direction,flex-wrap - 项目:
flex: 1(简写: flex-grow, flex-shrink, flex-basis)
2.2 Grid (二维布局)
css
.container {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 3列等宽 */
gap: 10px;
}2.3 定位 (Position)
static: 默认。relative: 相对自身原位置偏移,不脱离文档流。absolute: 相对最近的非 static 祖先定位,脱离文档流。fixed: 相对视口定位。sticky: 粘性定位,基于滚动位置在 relative 和 fixed 之间切换。
3. BFC (Block Formatting Context)
块级格式化上下文,形成独立的渲染区域。 触发条件: overflow 不为 visible, float 不为 none, position 为 absolute/fixed, display 为 inline-block/flex/grid 等。 应用: 清除浮动、防止 margin 重叠、自适应两栏布局。
4. CSS3 新特性
- 变换 (Transform): translate, rotate, scale
- 过渡 (Transition): 属性变化的动画效果
- 动画 (Animation / @keyframes)
- 选择器:
:nth-child,:not,::before,::after - 媒体查询 (@media): 响应式设计基础
5. CSS 预处理器与后处理器
- Sass/Less: 嵌套、变量、Mixin。
- PostCSS: AutoPrefixer (自动添加浏览器前缀)。
6. 经典问题
- 水平垂直居中的方案? 答: 方案一: Flexbox
css
.container {
display: flex;
justify-content: center;
align-items: center;
}方案二: 绝对定位 + transform
css
.container {
position: relative;
}
.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}1px 边框问题如何解决? 答: 使用
transform: scaleY(0.5)或border-image。清除浮动的方式有哪些? 答: 使用 BFC、伪元素清除法、设置父元素高度等。
CSS 优先级 (Specificity) 计算规则? 答: 内联样式 > ID 选择器 > 类/属性/伪类选择器 > 元素/伪元素选择器。权重相同时,后定义的样式优先级更高。
flex 和 grid 的区别? 答: Flexbox 适用于一维布局 (行或列),而 Grid 适用于二维布局 (行和列)。flex只能一行或者一列,而grid可以同时控制行和列。