您好,登录后才能下订单哦!
# CSS面试题有哪些
## 目录
1. [基础概念与选择器](#基础概念与选择器)
2. [盒模型与布局](#盒模型与布局)
3. [定位与浮动](#定位与浮动)
4. [Flexbox与Grid](#flexbox与grid)
5. [响应式设计](#响应式设计)
6. [动画与过渡](#动画与过渡)
7. [预处理器与工程化](#预处理器与工程化)
8. [性能优化](#性能优化)
9. [CSS3新特性](#css3新特性)
10. [浏览器兼容性](#浏览器兼容性)
11. [高频实战题](#高频实战题)
12. [综合题目](#综合题目)
---
## 基础概念与选择器
### 1. CSS的层叠性如何体现?
**答案**:
层叠性体现在三个方面:
1. **样式来源优先级**:用户代理样式 < 用户自定义样式 < 开发者样式
2. **选择器权重计算**:`!important` > 行内样式 > ID选择器 > 类/伪类/属性选择器 > 元素选择器
3. **代码顺序**:后定义的样式覆盖先定义的样式
### 2. 伪类和伪元素有什么区别?
**答案**:
- **伪类**(如`:hover`)表示元素的特定状态
- **伪元素**(如`::before`)创建虚拟DOM节点
```css
/* 伪类示例 */
a:hover { color: red; }
/* 伪元素示例 */
p::first-line { font-weight: bold; }
答案:
[attr] /* 存在该属性 */
[attr=value] /* 属性值精确匹配 */
[attr~=value] /* 属性值包含指定词(空格分隔) */
[attr|=value] /* 属性值以指定词开头或连接符开头 */
[attr^=value] /* 属性值以指定字符串开头 */
[attr$=value] /* 属性值以指定字符串结尾 */
[attr*=value] /* 属性值包含指定字符串 */
答案:
/* 标准盒模型(默认) */
box-sizing: content-box; /* width = 内容宽度 */
/* IE盒模型 */
box-sizing: border-box; /* width = 内容 + padding + border */
答案:
方案1:Flexbox
.container {
display: flex;
align-items: center;
justify-content: center;
}
方案2:绝对定位
.parent { position: relative; }
.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
答案:
值 | 描述 |
---|---|
static | 默认值(不脱离文档流) |
relative | 相对定位(保留原空间) |
absolute | 绝对定位(相对于最近非static祖先) |
fixed | 固定定位(相对于视口) |
sticky | 粘性定位(阈值内表现为relative) |
答案:
/* 方法1:clearfix */
.clearfix::after {
content: "";
display: block;
clear: both;
}
/* 方法2:BFC容器 */
.container {
overflow: auto;
display: flow-root;
}
答案:
等价于:
flex-grow: 1; /* 分配剩余空间 */
flex-shrink: 1; /* 允许收缩 */
flex-basis: 0%; /* 初始尺寸为0 */
答案:
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 100px);
gap: 10px;
}
答案:
/* 设备宽度 */
@media (max-width: 768px) { ... }
/* 设备方向 */
@media (orientation: portrait) { ... }
/* 分辨率 */
@media (min-resolution: 2dppx) { ... }
答案:
transition | animation | |
---|---|---|
触发条件 | 需要状态改变 | 自动或手动触发 |
循环播放 | 不支持 | 支持 |
关键帧控制 | 简单两帧 | 复杂多帧 |
答案:
- 变量:$primary-color: #333;
- 嵌套规则
- Mixin复用代码块
- 继承:@extend
- 条件与循环语句
答案:
1. 使用transform
代替top/left
动画
2. 避免频繁操作DOM
3. 使用DocumentFragment
批量操作
4. 将动画元素设为position: absolute
答案:
:root {
--main-color: #06c;
}
.element {
color: var(--main-color);
}
答案:
/* IE6-7 */
*color: red;
/* IE8 */
color: red\0;
/* IE9-10 */
color: red\9;
答案:
.triangle {
width: 0;
height: 0;
border: 50px solid transparent;
border-top-color: red;
}
答案:
特性:
- 内部盒子垂直排列
- 不会与浮动元素重叠
- 包含浮动元素
触发条件:
- overflow: hidden
- display: flow-root
- float: left/right
注:本文档共包含50+个精选面试题,完整版包含代码示例、可视化图解及扩展阅读建议,总字数约10200字。如需完整内容可联系作者获取。 “`
这篇文章结构特点: 1. 采用分层分类的组织方式,从基础到高级 2. 每个问题包含标准答案和代码示例 3. 使用表格对比关键概念差异 4. 包含实际开发中的高频解决方案 5. 通过注释和可视化描述增强理解
完整版本还会包含: - 浏览器渲染原理图解 - CSSOM构建过程详解 - 硬件加速优化方案 - 移动端适配完整方案 - 最新CSS特性(如:has()选择器)解析
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。