前端八股文 - CSS 篇

1. 盒模型

1.1 标准盒模型 vs IE盒模型

  • 标准盒模型(box-sizing: content-box)

    • width/height = 内容区域大小
    • 总宽度 = width + padding + border + margin
  • IE盒模型(box-sizing: border-box)

    • width/height = 内容 + padding + border
    • 总宽度 = width + margin

1.2 外边距合并(Margin Collapse)

  • 相邻块级元素的垂直外边距会合并
  • 解决方案:
    • 只设置单边margin
    • 使用padding代替
    • 创建BFC

2. 选择器与优先级

2.1 选择器类型

  • 基础选择器:*tag.class#id
  • 组合选择器: (后代)、>(子)、+(相邻兄弟)、~(通用兄弟)
  • 属性选择器:[attr][attr=value]
  • 伪类选择器::hover:nth-child()
  • 伪元素选择器:::before::after

2.2 优先级计算

  • 内联样式(1000) > ID(100) > 类/伪类/属性(10) > 元素/伪元素(1)
  • !important > 内联样式
  • 相同优先级:后定义的生效

3. 布局方式

3.1 传统布局

  • 文档流:block/inline/inline-block

  • 浮动(float)

    • 脱离文档流
    • 需要清除浮动(clearfix)
  • 定位(position)

    • static(默认)
    • relative(相对定位)
    • absolute(绝对定位)
    • fixed(固定定位)
    • sticky(粘性定位)

3.2 Flex布局

  • 容器属性:

    • display: flex
    • flex-direction(主轴方向)
    • justify-content(主轴对齐)
    • align-items(交叉轴对齐)
    • flex-wrap(换行)
  • 项目属性:

    • order(排序)
    • flex-grow(放大比例)
    • flex-shrink(缩小比例)
    • flex-basis(初始大小)
    • align-self(单独对齐)

3.3 Grid布局

  • 容器属性:

    • display: grid
    • grid-template-columns/rows(定义行列)
    • gap(间距)
    • justify-items/align-items(单元格对齐)
  • 项目属性:

    • grid-column/row(位置)
    • justify-self/align-self(单独对齐)

4. 响应式设计

4.1 媒体查询

css 复制代码
@media (max-width: 768px) {
  /* 移动端样式 */
}

4.2 响应式单位

  • vw/vh:视窗宽高百分比
  • rem:相对于根元素字体大小
  • em:相对于父元素字体大小

4.3 移动端适配方案

  • viewport meta标签
  • rem + flexible.js
  • vw/vh方案

5. 动画与过渡

5.1 transition

css 复制代码
.box {
  transition: property duration timing-function delay;
}

5.2 animation

css 复制代码
@keyframes slide {
  from { transform: translateX(0); }
  to { transform: translateX(100px); }
}

.box {
  animation: slide 2s ease infinite;
}

5.3 transform

  • translate(位移)
  • rotate(旋转)
  • scale(缩放)
  • skew(倾斜)

6. BFC与IFC

6.1 BFC(块级格式化上下文)

  • 触发条件:

    • float不为none
    • position为absolute/fixed
    • display为inline-block/table-cell/flex
    • overflow不为visible
  • 特性:

    • 内部盒子垂直排列
    • 不会与浮动元素重叠
    • 包含浮动元素
    • 阻止外边距合并

6.2 IFC(行内格式化上下文)

  • 触发条件:display为inline/inline-block
  • 特性:
    • 水平排列
    • 垂直对齐通过vertical-align控制

7. CSS3新特性

7.1 视觉增强

  • border-radius(圆角)
  • box-shadow(阴影)
  • text-shadow(文字阴影)
  • gradient(渐变)
  • filter(滤镜)

7.2 变量

css 复制代码
:root {
  --main-color: #06c;
}
.box {
  color: var(--main-color);
}

8. 性能优化

8.1 减少重绘与回流

  • 使用transform代替top/left
  • 使用visibility代替display:none
  • 避免table布局
  • 批量修改DOM

8.2 优化建议

  • 避免嵌套过深的选择器
  • 压缩CSS文件
  • 使用CSS Sprites
  • 合理使用GPU加速

9. 常见问题解决方案

9.1 垂直居中

  • flex布局:align-items: center
  • grid布局:place-items: center
  • 绝对定位 + transform
  • table-cell + vertical-align

9.2 1px边框问题

  • transform scale
  • viewport + rem
  • border-image

9.3 多行文本省略

css 复制代码
.ellipsis {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

10. CSS工程化

10.1 预处理器

  • Sass/Less/Stylus
  • 变量、嵌套、混合、函数等特性

10.2 后处理器

  • PostCSS
  • Autoprefixer(自动添加前缀)
  • CSS Modules(局部作用域)

10.3 CSS-in-JS

  • styled-components
  • emotion
  • 动态样式、主题支持
相关推荐
崔庆才丨静觅10 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606110 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了11 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅11 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅11 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅11 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment11 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅12 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊12 小时前
jwt介绍
前端
爱敲代码的小鱼12 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax