css面试题

文章目录

    • [一、CSS 选择器及其优先级](#一、CSS 选择器及其优先级)
    • [二、CSS 属性的继承性](#二、CSS 属性的继承性)
      • [1. 无继承性的属性](#1. 无继承性的属性)
      • [2. 有继承性的属性](#2. 有继承性的属性)
    • [三、Display 属性详解](#三、Display 属性详解)
      • [1. 常用属性值及其作用](#1. 常用属性值及其作用)
      • [2. block、inline 与 inline-block 的区别](#2. block、inline 与 inline-block 的区别)
    • 四、隐藏元素的方法对比
    • [五、 CSS3 新特性与动画](#五、 CSS3 新特性与动画)
      • [1. CSS3 新功能](#1. CSS3 新功能)
      • [2. Transition (过渡) vs Animation (动画)](#2. Transition (过渡) vs Animation (动画))
      • [3. 伪类 (:) 与 伪元素 (::)](#3. 伪类 (:) 与 伪元素 (::))
    • 六、伪类与伪元素的本质区别
    • [七、 文本溢出处理](#七、 文本溢出处理)
    • [八、 布局单位与响应式](#八、 布局单位与响应式)
      • [1. 常见单位](#1. 常见单位)
      • [2. CSS 预处理器与后处理器](#2. CSS 预处理器与后处理器)

一、CSS 选择器及其优先级

CSS 优先级由四个等级决定,通常表示为 (a, b, c, d) 权重。

选择器格式 类型 权重 (简易值) 示例
内联样式 Style 属性 1000 style="color: red;"
ID 选择器 #id 100 #header
类/属性/伪类 .class / ref / :hover 10 .menu, li:last-child
标签/伪元素 div / ::after 1 div, li:after
通配符/关系选择器 * / > / + 0 *, ul > li, h1 + p

注意事项:

  1. !important:声明的样式优先级最高,应慎用
  2. 后来者居上:如果优先级相同,最后出现的样式生效
  3. 继承最低:继承得到的样式优先级最低(趋于 0)
  4. 来源顺序:内联样式 > 内部样式 > 外部样式 > 浏览器用户自定义 > 浏览器默认

二、CSS 属性的继承性

1. 无继承性的属性

  • 布局/盒子模型 :display, width, height, margin, border, padding
  • 背景/定位 :background, position, float, clear, z-index, overflow
  • 文本装饰 :vertical-align, text-decoration, text-shadow, white-space

2. 有继承性的属性

  • 字体系列 :font-family, font-weight, font-size, font-style
  • 文本系列 :text-indent, text-align, line-height, word-spacing, letter-spacing, color
  • 其他 :visibility, cursor, list-style

三、Display 属性详解

1. 常用属性值及其作用

属性值 作用
none 元素不显示,并从文档流中移除
block 块类型。独占一行,可设宽高,默认宽度为父元素宽度
inline 行内元素。同行显示,不可设宽高,宽度由内容撑开
inline-block 行内块。同行显示,但可设置宽高
inherit 从父元素继承 display 值

2. block、inline 与 inline-block 的区别

  • block:独占一行,支持所有盒子模型属性(width/height/margin/padding)
  • inline :同行显示。设置宽高无效,水平方向的 margin/padding 有效,垂直方向无效
  • inline-block:结合了两者的特性,既能同行显示,又能设置宽高

四、隐藏元素的方法对比

方法 占据空间 响应事件 触发机制
display: none 否 否 触发 重排 (Reflow)
visibility: hidden 是 否 触发 重绘 (Repaint)
opacity: 0 是 是 重绘
position: absolute 否 否 移出可视区
clip-path: circle(0) 是 否 裁剪隐藏
transform: scale(0) 是 否 缩放隐藏

五、 CSS3 新特性与动画

1. CSS3 新功能

  • 选择器 :如 :not(), 伪类增强
  • 视觉 :圆角 (border-radius), 阴影 (box-shadow), 线性渐变 (gradient)
  • 布局 :多列布局 (multi-column), Flex 布局 , Grid 布局
  • 变换 :transform(旋转、缩放、倾斜、平移)

2. Transition (过渡) vs Animation (动画)

  • Transition :强调状态过渡,需要事件触发(如 :hover),只有起始和结束两个关键帧
  • Animation :强调循环和复杂序列,无需触发事件,支持 @keyframes 定义多个关键帧

3. 伪类 (😃 与 伪元素 (:😃

  • 伪类 :用于选择元素的特定状态(如 :hover, :active)
  • 伪元素 :用于创建不在 DOM 树中的虚拟元素(如 ::before, ::after)。CSS3 规范建议伪元素使用双冒号

六、伪类与伪元素的本质区别

维度 伪类 (Pseudo-classes) 伪元素 (Pseudo-elements)
逻辑本质 已有元素的特殊状态 不存在于 DOM 的虚拟元素
数量关系 一个元素可以同时拥有多个状态 通常用于选取元素的特定部分或生成额外内容
标准语法 单冒号 : 双冒号 ::
是否产生新内容 ❌ 否,只改变现有元素样式 ✅ 是,可以插入新内容(需配合 content)
典型代表 :hover, :active, :first-child, :nth-child ::before, ::after, ::first-line, ::selection

七、 文本溢出处理

  • 单行文本溢出:
css 复制代码
.single-line {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
  • 多行文本溢出 (WebKit):
css 复制代码
.multi-line {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3; /* 显示行数 */
  overflow: hidden;
}

八、 布局单位与响应式

1. 常见单位

  • px:绝对像素,物理像素与设备相关
  • %:相对于父元素对应属性的百分比
  • em:相对于父元素的字体大小
  • rem :相对于根元素 (html) 的字体大小,响应式首选
  • vw/vh:相对于视口(Viewport)宽高的 1%

2. CSS 预处理器与后处理器

  • 预处理器 (Sass/Less):提供变量、嵌套、Mixin 等编程特性,提高代码复用性
  • 后处理器 (PostCSS) :如 autoprefixer,在编译后自动添加浏览器私有前缀,处理兼容性
相关推荐
康小汪7 小时前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
智能运维指南8 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
白山编程大哥10 小时前
Java 后端如何优雅地把 List 集合返回给前端
java·前端·list
Flynt10 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
Csvn11 小时前
bundle优化
前端
北冥有鱼11 小时前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
静默回滚11 小时前
视频压到 25 MB 以内,码率要算、音轨要扣、余量要留
前端
用户372037492601812 小时前
把 10MB 中文语义模型塞进浏览器:STSB 做到教师模型的 93%,但线上 top1 只有 42%
前端
光锥智能12 小时前
海康机器人举行2026移动机器人新品发布会:箱式存拣升级,「明智」系列发布
java·前端·机器人
计算机魔术师12 小时前
Anthropic 上市文件最吓人的一幕,不是亏损 807 亿
前端