【vue3】BEM架构、less scss和scoped

一、 BEM架构

BEM(Block, Element, Modifier)是一种命名约定,用于在编写 CSS 和 HTML 类名时创建可维护和可重用的样式。BEM 是一种常用的 CSS 命名规范,它的目的是减少样式之间的耦合,增加样式的可读性,并提高样式的复用性。

BEM 的三个主要概念:

  1. Block(块):Block 是一个独立的、可复用的组件或模块,它代表一个完整的功能单元。块是一个顶层的元素,它本身应该有意义并且可以独立存在。
  2. Element(元素):Element 是块的组成部分,它不能单独存在,必须依赖于块。Element 是块的一部分,它只有在块的上下文中才有意义。
  3. Modifier(修饰符):Modifier 是用于改变块或元素外观、状态或行为的标志。通过添加修饰符类名,可以修改块或元素的样式,从而实现不同的变体。
BEM 的命名约定(以element-plus为例):
  • el:namespace(element-plus所有样式都是el开头)
  • -:block(代表块级区域)
  • __:element(连接元素内容)
  • --:modifier(修饰内容,例如 按钮颜色红、黄、蓝等)

在这里插入图片描述

在这里插入图片描述

二、less、scss、BEM架构

在项目中安装 npm install --save-dev sassnpm install --save-dev less

在这里插入图片描述

编写scss的bem架构,配置全局

1、src下面创建bem.scss文件,编写bem架构

在这里插入图片描述


$namespace:'yyx' !default;
$block-set:'-' !default;
$elem-set:'__' !default;
$mod-set:'--' !default;



@mixin b($block){ //block
    $B:$namespace+$block-set+$block;
    .#{$B}{
        @content
    }
}


@mixin e($elem){ //element

    $selector:&; //一个父级的变量

    //编译出来之后,不需要再佳航父级类名了 用@at-root
    @at-root{
        #{$selector+$elem-set+$elem}{
            @content
        }
    }

}


@mixin m($elem){ //modifier
    
    $selector:&; //一个父级的变量

    //编译出来之后,不需要再佳航父级类名了 用@at-root
    @at-root{
        #{$selector+$mod-set+$elem}{
            @content
        }
    }

}

2、在vite.config.ts文件内配置全局

在这里插入图片描述


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";`
      }
    }
  }
})

3、在vue组建中使用


<template>
    <p class="yyx-p">
        我是子组件
        <span class="yyx-p__inner">inner</span>
    </p>
</template>
    
<script setup lang='ts'>
</script>
    
<style lang="scss">
    @include b(p){
        color: red;
        @include e(inner){
            font-size: 40px;
            color: blue;
        }
    }
</style>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值