1. CSS3新增了哪些特性?
CSS3新增了圆角、阴影、渐变、动画、变形、多列布局、弹性盒模型、媒体查询等特性。
2. 水平垂直居中的方法
-
Flexbox 方案:
css.parent { display: flex; justify-content: center; align-items: center; }
-
绝对定位 + Transform:
css.child { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); }
-
Grid 方案:
css.parent { display: grid; place-items: center; }
3. 盒模型(Box Model)
- 标准盒模型 :
width/height
= 内容区域(content)。 - IE 盒模型 :
width/height
= 内容 + padding + border。 - 切换盒模型:
box-sizing: border-box
(IE模型)或content-box
(默认标准模型)。
4. BFC(块级格式化上下文)
-
作用:隔离内部元素,避免外边距合并,阻止浮动元素覆盖。
-
触发条件:
float
非none
;overflow
非visible
;display: inline-block/table-cell/flex
;position: absolute/fixed
。
5. 清除浮动的方法
-
设置父元素的高度:在已知子元素高度的情况下,可以在CSS中手动设置父元素的高度
-
空
div
清除法 (传统方案) :在浮动元素末尾插入一个空div
,通过 CSS 的clear:both
属性清除浮动影响。 -
伪元素
::after
清除(Clearfix Hack) :利用伪元素::after
创建一个匿名元素,然后将其clear
属性设置为both
,可以达到清除浮动的目的。这是一种更为优雅的方式,不需要额外的HTML标记。css.clearfix::after { content: ""; display: block; clear: both; }
-
父元素触发 BFC :父元素设置
overflow: auto
。
6. CSS 选择器优先级
优先级从高到低:
!important
- 内联样式(如
style="..."
) - ID 选择器(
#id
) - 类/伪类/属性选择器(
.class
,:hover
,[type="text"]
) - 元素/伪元素选择器(
div
,::before
) - 通配符(
*
)
7. Flexbox 常见概念
-
主轴(main axis)与交叉轴(cross axis) :由
flex-direction
决定方向。 -
常用属性:
- 容器:
flex-direction
,justify-content
,align-items
,flex-wrap
。 - 子项:
flex-grow
,flex-shrink
,flex-basis
。
- 容器:
8. CSS Grid 布局
-
二维布局:适合复杂网格结构。
-
基础用法:
css.container { display: grid; grid-template-columns: 1fr 2fr; gap: 10px; }
9. 响应式设计
-
媒体查询(Media Queries) :
scss@media (max-width: 768px) { /* 移动端样式 */ }
-
移动端适配:
ini<meta name="viewport" content="width=device-width, initial-scale=1.0">
运行 HTML
-
单位选择 :
rem
(基于根字体)、vw/vh
(视口比例)。
10. CSS 动画
-
过渡(Transition) :平滑状态变化。
css.box { transition: all 0.3s ease-in; }
-
关键帧动画(Keyframes) :
css@keyframes slide { from { transform: translateX(0); } to { transform: translateX(100px); } }
11. 伪类与伪元素
- 伪类(Pseudo-class) :定义元素状态,如
:hover
,:nth-child(n)
。 - 伪元素(Pseudo-element) :创建虚拟元素,如
::before
,::after
。
12. CSS 优化策略
- 减少选择器复杂度(如避免嵌套过深)。
- 使用
transform
和opacity
实现动画(触发 GPU 加速)。 - 压缩 CSS 文件(如 Webpack 插件、PostCSS)。
13. 常见布局方案对比
-
圣杯布局/双飞翼布局:传统三栏布局,中间优先渲染。
-
Flex vs Grid:
- Flex:一维布局,按行或列排列。
- Grid:二维布局,适合复杂网格。
14. CSS 预处理器(Sass/Less)
-
优势:变量、嵌套、Mixin、函数等。
-
示例:
css$primary-color: #333; .button { background: $primary-color; &:hover { background: darken($primary-color, 10%); } }
15.高频进阶问题
- z-index 工作原理:依赖定位元素和层叠上下文。
- CSS 变量(Custom Properties) :
--var-name: value;
,通过var(--var-name)
使用。 - 移动端 1px 边框问题 :使用
transform: scale(0.5)
或媒体查询 +viewport
缩放。