前端样式的BEM架构基础实践
element-plus 的架构设计目的为解决当涉及到更大、更复杂的项目时,如何组织代码。
他的一套方法论是使用一套固定的结构和命名约定。
BEM详细介绍地址:Link
其中element-plus 就是采用了bem架构设计的一套样式规则。今天我们使用bem模式来实现一个常见的自适应容器布局。
1 了解BEM的前置知识
嵌套样式
1 | .a { |
$value 定义变量
1 | $color: blue; |
@at-root : 在嵌套的样式中, 跳出父级节点的类名即不在子类名之前再追加父级类名
1 | // 正常的样式 |
@mixin:混入, 类似于批量处理,把比较通用的抽离出来,方便统一引用。
1 | @mixin large-text { |
插值表达式, 在选择器或者属性名称中使用变量
1 | $name: foo; |
&:代表当前的父选择器
1 | .foo.bar .baz.bang, |
2 在Vue中使用
定义bem结构和命名规则
在项目根目录下新建:/src/styles/bem.scss
1 | // 定义一个变量, 作为开头, 可以任意定义字符,此处以cz为例。 !default: 代表这个变量没有赋值过别的值。 |
在vite.config.ts定义全局css预处理
1 | import { defineConfig } from "vite"; |
3 使用BEM模式实现一个容器样式
项目目录
src/styles/reset.scss
1 | *, |
/src/styles/index.scss
1 | // 引入清除默认的样式 |
/src/styles/bem.scss
同第二步的scss
1 | import { createApp } from "vue"; |
/src/main.ts
1 | <script setup lang="ts"> |
/src/App.vue
1 | <script setup lang="ts"> |
/src/Layout/index.vue
1 | <script setup lang=ts> |
/src/Layout/Menu/index.vue
1 | <script setup lang=ts></script> |
/src/Layout/Header/index.vue
1 | <script setup lang=ts></script> |
/src/Layout/Content/index.vue
1 | <script setup lang=ts></script> |
4 效果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 编程纪元!
评论
ValineGitalk