当前位置: 首页 > news >正文

前端八股文 - 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 媒体查询

@media (max-width: 768px) {/* 移动端样式 */
}

4.2 响应式单位

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

4.3 移动端适配方案

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

5. 动画与过渡

5.1 transition

.box {transition: property duration timing-function delay;
}

5.2 animation

@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 变量

: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 多行文本省略

.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
  • 动态样式、主题支持

相关文章:

  • 网络编程之Modbus与HTTP
  • 网页中调用自定义字体可以通过 ‌CSS‌ 的 @font-face 规则实现
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | RandomChoicePicker(标签生成)
  • 【C++】继承和派生
  • STM32 Bootloader:使用文件头加载并启动应用程序
  • Python 函数参数详解:从基础到高级用法
  • 路由交换技术-思科拓扑搭建
  • 嵌入式通信模块实战新范式:基于虚拟仿真平台的NB-IoT核心技能训练——零硬件损耗的全栈式实验方案,重构物联网通信教学逻辑
  • 16层混压PCB的精密重构:高频基板局部化的黄金法则
  • 技术赋能——AI社媒矩阵营销工具如何重构社媒矩阵底层架构
  • 【hadoop】疫情离线分析案例
  • 山东大学 2025 web数据管理期末复习总结
  • 使用文件的基本操作和文件内容读写操作实现三个功能
  • 玛哈特零件矫平机:精密制造中的平整度守护者
  • 【11408学习记录】考研数学核心突破:矩阵本质、系统信息与向量空间基
  • Flutter 小技巧之:实现 iOS 26 的 “液态玻璃”
  • LLaMA Factory 微调教程:如何构建高质量数据集?
  • 低代码二次开发指南:基于HENGSHI SENSE的自动化报表生成教程
  • 【Docker基础】Docker核心概念:容器(Container)与镜像(Image)的区别与联系
  • (二十六)深度解析领域特定语言(DSL)第四章——词法分析:基于正则表达式的词法分析器
  • 网站限制国内ip访问/50个市场营销经典案例
  • wordpress a 锚点/西安seo站内优化
  • 网站建设和销售有关吗/今日国际军事新闻
  • 金华自助建站/在线seo优化
  • 展示产品的网站/国内建站平台
  • 建设银行的网站/今日要闻10条