bem架构
他是一种css架构 oocss 实现的一种 (面向对象css) ,BEM
实际上是block
、element
、modifier
的缩写,分别为块层、元素层、修饰符层,element UI 也使用的是这种架构
1. BEM架构
1. 介绍
1. BEM是Block Element Modifier的缩写
2. Block:块,代表一个独立的模块,如:header、container、menu
3. Element:元素,代表块中的组成部分,如:header__logo、menu__item
4. Modifier:修饰符,代表块或元素的不同状态,如:menu__item_active、menu__item_disabled
BEM 命名约定的模式是:
.block {} // el-input 代表码一个块
.block__element {} // el-input__inner 代表一个元素或者内容
.block--modifier {} //el-button--success 样式一样 颜色不同可自定义修饰符
使用sass 最小单元复刻一个bem 架构
// 使用sass 最小单元复刻一个bem 架构
$block-sel: "-" !default;
$element-sel: "__" !default;
$modifier-sel: "--" !default;
$namespace: "ck" !default;
@mixin bfc {
height: 100%;
overflow: hidden;
}
//混入
@mixin b($block) {
$B: $namespace + $block-sel + $block; //变量
.#{$B} {
//插值语法#{}
@content; //内容替换
}
}
@mixin flex {
display: flex;
}
@mixin e($element) {
$selector: &;
@at-root {
#{$selector + $element-sel + $element} {
@content;
}
}
}
@mixin m($modifier) {
$selector: &;
@at-root {
#{$selector + $modifier-sel + $modifier} {
@content;
}
}
}
全局引入bem.css
不能直接再app.vue以@import url();是无效的
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
css: {
preprocessorOptions: {
scss: {
additionalData: "@import './src/bem.scss';"
}
}
}
})
在页面中使用
<template>
<div class="ck-wraps">
块级
<div class="ck-wraps__right">
元素
<span class="ck-wraps--success">修饰符</span>
</div>
</div>
</template>
<script lang="ts" setup>
import { ref, reactive } from "vue";
</script>
<style lang="scss" scoped>
@include b("wraps") {
color: red;
@include e(right) {
color: pink;
}
@include m(success) {
color: blue;
}
}
</style>
09 vue3之组件传参-CSDN博客文章浏览阅读2次。09 vue3之组件传参。https://blog.csdn.net/qq_37550440/article/details/142212697?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22142212697%22%2C%22source%22%3A%22qq_37550440%22%7D