diff --git a/src/views/demo/jsx/css-module.md b/src/views/demo/jsx/css-module.md new file mode 100644 index 0000000..aac5e5f --- /dev/null +++ b/src/views/demo/jsx/css-module.md @@ -0,0 +1,55 @@ +CSS Modules 是一种局部样式的解决方案,确保样式只作用于特定组件,而不会影响全局。这是通过以下机制和原理来实现的: + +### 1. 局部样式的概念 + +CSS Modules 的设计目的是将 CSS 类名局部化,从而避免样式冲突。在使用 CSS Modules 时,类名会被自动生成唯一的标识符,以确保它们只在定义它们的组件中有效。 + +### 2. 如何实现局部样式 + +#### 生成唯一类名 + +当您使用 CSS Modules 时,每个类名都会被编译成一个唯一的名称。例如,如果您在 `styles.module.css` 中定义了一个类 `.item`,在编译后,它可能会被转换为类似 `styles_item__1A2B3` 的名称。这样,其他组件中相同的类名不会产生冲突。 + +#### 使用方式 + +在 Vue 3 中使用 CSS Modules 时,您需要通过 `import` 语句导入 CSS Module 文件,并通过导入的对象引用样式。这确保了样式只与特定组件关联。 + +```javascript +import styles from './styles.module.css'; // 导入 CSS Module + +
内容
// 使用局部样式 +``` + +### 3. 原理 + +- **编译阶段**:在构建过程中,构建工具(如 Vite 或 Webpack)会处理 CSS Modules,将类名转换为唯一的标识符。这意味着即使在多个组件中使用相同的类名,最终生成的类名也会不同。 +- **作用域限制**:由于生成的类名是唯一的,因此它们只在相应的组件范围内有效,从而避免了全局样式的污染。 + +### 4. 使用示例 + +假设我们有一个样式文件 `styles.module.css`: + +```css +/* styles.module.css */ +.item { + color: blue; +} +``` + +在组件中使用: + +```javascript + + + +``` + +在构建后,`.item` 类可能会被转换为 `.styles_item__3A1B2`,并且只在该组件中有效。 + +### 总结 + +CSS Modules 是局部样式的解决方案,通过生成唯一的类名来确保样式只在定义它们的组件中生效。这样可以避免全局样式冲突,保持样式的模块化和可维护性。 \ No newline at end of file diff --git a/src/views/demo/jsx/index.vue b/src/views/demo/jsx/index.vue index 33bf318..3de0239 100644 --- a/src/views/demo/jsx/index.vue +++ b/src/views/demo/jsx/index.vue @@ -13,15 +13,24 @@

vue jsx写法DOM一

- - +

vue jsx写法DOM二

- + - +