1. 盒模型调整 (box-sizing)

大白话解释: 这个属性决定了元素尺寸的计算方式。默认情况下,当你设置一个元素的宽度时,实际占用空间是宽度+内边距+边框。使用 box-sizing: border-box 后,设置的宽度就是实际占用的总宽度,包含内边距和边框。

示例

默认模式 (content-box)

设置宽度: 200px

实际宽度: 200px + 40px(padding) + 10px(border) = 250px

border-box模式

设置宽度: 200px

实际宽度: 200px (包含padding和border)

.element {
  box-sizing: border-box;
}

何时使用?

在进行响应式布局时特别有用,可以精确控制元素的实际占用空间,避免因padding或border导致布局错乱。

2. 元素尺寸调整 (resize)

大白话解释: 这个属性允许用户像调整窗口一样调整元素大小。你可以控制元素能否调整尺寸,以及调整方向(水平、垂直或双向)。

示例

尝试拖动右下角调整此区域大小:

可调整大小的元素

拖拽右下角可以改变我的尺寸

使用属性:resize: both; overflow: auto;

.resizable-box {
  resize: both; /* 也可以是 horizontal 或 vertical */
  overflow: auto; /* 必须设置overflow属性才能生效 */
}

注意事项

常用于文本输入区域、代码编辑器等需要用户调整大小的场景。注意: 必须同时设置overflow属性(值不能是visible)才能使resize生效。

3. 轮廓与偏移 (outline & outline-offset)

大白话解释: outline看起来像border,但有一个重要区别:它不占用空间,不会影响布局。outline-offset可以设置轮廓与元素边框的距离。

示例

带轮廓偏移的元素

红色虚线轮廓距离边框10px

轮廓不影响元素布局,不会导致其他元素移位

.outlined-element {
  outline: 3px dashed #e74c3c;
  outline-offset: 10px;
}

使用场景

常用于元素获得焦点时的视觉提示(如链接、输入框),或者创建特殊的装饰效果。注意: 轮廓不影响元素的尺寸或位置。

4. 弹性盒子布局 (Flexbox)

大白话解释: Flexbox是现代CSS布局中最强大的工具之一。它让元素在容器内能自动调整大小、顺序和对齐方式,特别适合创建响应式布局。

示例

弹性容器内的项目会自动调整大小和位置:

项目1
项目2
项目3
项目4
/* 容器属性 */
.container {
  display: flex;
  justify-content: space-between; /* 水平对齐 */
  align-items: center; /* 垂直对齐 */
  flex-wrap: wrap; /* 允许换行 */
}

/* 项目属性 */
.item {
  flex: 1; /* 自动填充空间 */
}

核心概念

Flexbox有两个主要组成部分:Flex容器(父元素)和Flex项目(子元素)。通过设置容器的属性,控制项目的布局方向、对齐方式、换行行为等。

其他重要用户界面特性

5. 鼠标指针样式 (cursor)

大白话解释: 控制鼠标悬停在元素上时的指针形状,提供更好的交互反馈。

button {
  cursor: pointer;
}
.busy-element {
  cursor: wait;
}
.resizable {
  cursor: nw-resize;
}

6. 用户选择控制 (user-select)

大白话解释: 控制用户是否可以选择文本内容,设置为none可以禁用文本选择。

.disable-selection {
  user-select: none;
}

7. 控件外观重置 (appearance)

大白话解释: 移除浏览器为表单控件添加的默认样式,实现自定义。

select, input {
  appearance: none;
  /* 然后添加自定义样式 */
}