BEM:css命名规范

BEM

BEM(Block-Element-Modifier),块、元素、修饰符,是一种CSS命名规范,旨在前端开发中创建可重用组件和代码共享的方法,使样式易于扩展,易于维护,易于理解

规范:

1、块(Block): 页面上独立的组件,具有明确的语义和功能。每个块都有自己的命名空间(如element的命名空间为 el,),单词之间以连字符(-)分隔。例如:element的input组件 el-input

2、元素(Element): 组成块的不同元素,不能独立存在,依赖于块的上下文,元素名称以块名称为前缀,用双下划线分隔(__)。以element的select组件为例,左侧看成输入框 el-radio__input,右侧文字el-radio__label

3、修饰符(Modifier): 修饰符用于改变元素的外观、状态或行为等。它们是可选的,修饰符名称以块/元素名称为前缀,用双连字符(–)分隔。以element的按钮为例

//快
block
name-block//块 + 元素
block__element
name-block__element//块 + 元素 + 修饰符
block--modifier
name-block--modifier
block__element--modifier
name-block__element--modifier

示例:使用Sass实现BEM

在vite项目中,使用Sass实现一个简单的BEM规范

新建bem.scss文件

$namespace: 'xx' !default;
$block-sel: '-' !default;
$element-sel: '__' !default;
$modifier-sel: '--' !default;@mixin b($block) {$blockName: $namespace + $block-sel + $block;.#{$blockName} {    //插值语法  #{}@content;  //内容替换}
}@mixin e($element) {$selector:&;@at-root {		//样式文件根层级上,而不是嵌套在其父选择器#{$selector + $element-sel + $element} {@content;}}
}@mixin m($modifier) {$selector:&;@at-root {#{$selector + $modifier-sel + $modifier} {@content;}}
}

项目配置文件

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="xx-main"><div class="xx-main__txt">Hello word<span class="xx-main__txt--red">状态</span></div></div></template><script setup lang="ts"></script><style lang="scss" scoped>@include b("main") {width: 200px;height: 200px;border: 1px solid #000;@include e("txt") {color: blue;@include m("red") {color: red;}}}
</style>

效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/179250.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4-注册中心

今天聊一下服务的注册与发现。大家先思考一个问题&#xff0c;如果有五六个服务&#xff0c;大概100个接口&#xff0c;要调用其中某一个接口&#xff0c;怎么调&#xff1f;首先你得知道服务所在的ip地址和端口吧&#xff0c;然后得知道服务的名字和需要的参数&#xff0c;再然…

口袋参谋:如何玩转手淘“问大家”?这招超好用!

​现在应该不会还有商家不知道&#xff0c;手淘“问大家”分析吧&#xff01; “问大家”模块对于转化率的影响非常关键&#xff0c;它的影响力不亚于买家秀&#xff0c;以前买家下单前都会去参考买家秀&#xff0c;现在买家更倾向于参考“问大家”然而&#xff0c;真正玩转“问…

win10系统nodejs的安装npm教程

1.在官网下载nodejs&#xff0c;https://nodejs.org/en 2&#xff0c;双击nodejs的安装包 3&#xff0c;点击 next 4&#xff0c;勾选I accpet the terms in…… 5&#xff0c;第4步点击next进入配置安装路径界面 6,点击next&#xff0c;选中Add to PATH &#xff0c;旁边…

集简云浏览器插件:无代码开发,实现CRM系统与用户运营的高效集成

无代码开发实现连接 集简云浏览器插件是一种强大的工具&#xff0c;可以帮助公司实现网页端数据的自动化同步&#xff0c;例如新闻媒体网站的数据抓取和采集&#xff0c;以及每天同步文章和视频等最新营销数据。这种插件的功能使得企业可以在没有编程技能的情况下实现无代码开…

【蓝桥杯选拔赛真题44】python小蓝晨跑 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析

目录 python小蓝晨跑 一、题目要求 1、编程实现 2、输入输出 二、算法分析

国内某发动机制造工厂RFID智能制造应用解决方案

一、工厂布局和装备 国内某发动机制造工厂的装配车间布局合理&#xff0c;设备先进&#xff0c;在这个5万平方米的生产区域内&#xff0c;各个工位之间流程紧密&#xff0c;工厂采用了柔性设备&#xff0c;占比达到了67%&#xff0c;数控化率超过90%&#xff0c;自动化率达到了…

若依笔记(三):权限控制与数据隔离

目录 数据隔离/权限控制 用户/权限/部门/岗位 ​数据隔离 mybatis的maaper写法 注解和切面 前端路由拦截 已知若依单体的前端采用vue-element-admin&#xff0c;在前端的专栏系列vue-element-admin的动态路由已详细拆解&#xff0c;其最大特点是使用后端返回数据控制前端…

react和vue的区别

目录 react和vue区别的主要区别 react和vue区别的部分详情 1. 语法&#xff1a; 2. 组件化开发&#xff1a; 3. 状态管理&#xff1a; 4. 生态系统&#xff1a; 5. 性能特点&#xff1a; react和vue区别的主要区别 React和Vue是两种流行的JavaScript库&#xff0c;用于构…

pom.xml详解

我们在开发Java应用程序时&#xff0c;pom.xml文件是项目中的核心配置文件之一&#xff0c;它结合Maven实现对项目依赖的拉取&#xff0c;今天就详细了解一下pom.xml文件的配置 Maven是一种构建工具&#xff0c;它用于构建、管理和发布Java项目pom.xml文件包含了项目的所有重要…

降低边际成本:跨境电商的利润增长策略

在竞争激烈的跨境电商领域&#xff0c;降低成本是提高利润的关键。边际成本&#xff0c;即生产或销售一件额外商品所需的额外成本&#xff0c;在跨境电商中起到至关重要的作用。在本文中&#xff0c;我们将探讨降低边际成本的策略&#xff0c;以实现跨境电商的利润增长。 供应链…

苹果M3 Max芯片跑分曝光:GPU性能不及M2 Ultra

驱动中国2023年11月2日消息&#xff0c;近日&#xff0c;据外媒报道&#xff0c;在苹果 M3 芯片现身 GeekBench 跑分库之后&#xff0c;M3 Max 芯片也出现在该跑分平台上。 据悉&#xff0c;搭载 M3 Max 芯片的设备标识符为 Mac15,9&#xff0c;目前共有 4 条信息&#xff0c;其…

【Linux】Nignx的入门使用负载均衡动静分离(前后端项目部署)---超详细

一&#xff0c;Nignx入门 1.1 Nignx是什么 Nginx是一个高性能的开源Web服务器和反向代理服务器。它使用事件驱动的异步框架&#xff0c;可同时处理大量请求&#xff0c;支持负载均衡、反向代理、HTTP缓存等常见Web服务场景。Nginx可以作为一个前端的Web服务器&#xff0c;也可…

微信小程序:实现多个按钮提交表单

效果 核心步骤 通过data-type给不同按钮进行设置&#xff0c;便于很好的区分不同按钮执行不同功能 data-type"" 完整代码 wxml <form action"" bindsubmit"formSubmit"><button style"margin-bottom:5%" data-type"pa…

IDEA创建Springboot多模块项目

一、创建父模块 File --> New --> Project &#xff0c;选择 “ Spring Initalizr ” &#xff0c;点击 Next Next Next --> Finish 二、创建子模块 右键根目录&#xff0c;New --> Module 选择 “ Spring Initializr ”&#xff0c;点击Next 此处注意T…

Springboot JSP项目如何以war、jar方式运行

文章目录 一&#xff0c;序二&#xff0c;样例代码1&#xff0c;代码结构2&#xff0c;完整代码备份 三&#xff0c;准备工作1. pom.xml 引入组件2. application.yml 指定jsp配置 四&#xff0c;war方式运行1. 修改pom.xml文件2. mvn执行打包 五&#xff0c;jar方式运行1. 修改…

R语言绘图-5-条形图(修改坐标轴以及图例等)

0. 说明&#xff1a; 1. 绘制条形图&#xff1b; 2. 添加文本并调整位置&#xff1b; 3. 调整x轴刻度的字体、角度及颜色&#xff1b; 4. 在导出pdf时&#xff0c;如果没有字体&#xff0c;该怎么解决问题&#xff1b; 1. 结果&#xff1a; 2. 代码&#xff1a; library(ggp…

UE5数字孪生制作(一) - QGIS 学习笔记

1.下载 QGIS是免费的GIS工具&#xff0c;下载地址&#xff1a; https://www.qgis.org/en/site/ 2.安装 - 转中文 按照步骤安装&#xff0c;完成后&#xff0c;在菜单 设置settings里&#xff0c;选择options&#xff0c;修改语言 确定后&#xff0c;需要重启下软件 3.学习视…

MATLAB和西门子SMART PLC OPC通信

西门子S7-200SMART PLC OPC软件的下载和使用,请查看下面文章 Smart 200PLC PC Access SMART OPC通信_基于pc access smart的opc通信_RXXW_Dor的博客-CSDN博客文章浏览阅读2.7k次,点赞2次,收藏5次。OPC是一种利用微软COM/DCOM技术达成自动控制的协议,采用典型的C/S模式,针…

测试用例设计——WEB通用测试用例

现在项目做完了&#xff0c;我觉得还是有必要总结一下&#xff0c;学习到的内容。毕竟有总结才能有提高嘛&#xff01;总结一下通用的东西&#xff0c;不管什么项目基本都可能会遇到&#xff0c;有写地方也有重复的或者有的是按照个人的习惯来总结的不一定都对&#xff0c;有不…

Visual Components Robotics OLP解决方案 北京衡祖

Visual Components 引入了“Visual Components Robotics OLP”的重大升级&#xff0c;合并了制造模拟和机器人离线编程。该解决方案利用 Delfoi Robotics 的技术&#xff0c;提高生产率、减少停机时间并减少浪费。 一、探索下一代离线机器人编程软件 自 1999 年以来&#xff0…