Skip to content

CSS3:模块化、响应式与视觉表达

CSS3 不是一个像 HTML5 那样一次发布的单体版本。庞大的 CSS2 后续工作被拆成 Selectors、Media Queries、Backgrounds and Borders、Transforms、Animations、Flexbox 等模块,各模块独立升级成熟度。

1. 媒体查询与响应式设计

css
.layout { padding: 1rem; }

@media (min-width: 48rem) {
  .layout {
    display: flex;
    gap: 2rem;
  }
  .sidebar { flex: 0 0 16rem; }
  .content { flex: 1; }
}

移动优先意味着基础规则先满足窄屏,再通过 min-width 增强宽屏布局。断点应由内容何时拥挤决定,而不是绑定某个设备型号。

2. 圆角、阴影、渐变与多背景

css
.hero-card {
  border-radius: 1rem;
  background:
    linear-gradient(135deg, rgb(37 99 235 / 90%), rgb(124 58 237 / 90%)),
    url('/pattern.svg');
  box-shadow: 0 1rem 2.5rem rgb(15 23 42 / 18%);
}

过去需要切图的常见视觉效果可以直接由 CSS 描述,并随分辨率和尺寸无损适配。

3. Transform、Transition 与 Animation

css
.card {
  transition: transform 180ms ease, box-shadow 180ms ease;
}
.card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 30px rgb(15 23 42 / 20%);
}

@keyframes enter {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}

动画应服务于状态解释和空间关系。为 prefers-reduced-motion: reduce 提供弱化或关闭方案。

4. Flexbox:真正的一维布局系统

css
.toolbar {
  display: flex;
  align-items: center;
  gap: .75rem;
}
.toolbar .search { flex: 1 1 18rem; }
.toolbar .actions { margin-inline-start: auto; }

Flexbox 解决主轴空间分配、交叉轴对齐、换行和顺序问题,特别适合工具栏、导航、表单行和卡片内部结构。

5. 选择器和结构表达增强

CSS3 选择器普及了属性选择器、结构伪类和状态伪类:

css
input[type="email"]:invalid { border-color: #dc2626; }
.result:nth-child(odd) { background: #f8fafc; }
.menu a:not([aria-current="page"]):hover { text-decoration: underline; }

6. 从 CSS3 走向现代 CSS

Grid 虽然常被口语归入“CSS3”,但现代 CSS 已经不适合用单一 CSS3 标签概括。后续模块继续加入 Grid、变量、逻辑属性、级联层、容器查询与父级选择器等能力。

下一阶段:现代 CSS 平台能力

Released under the MIT License.