前端工程Bem架構及其封裝

文章目錄

    • 簡介
    • 語法
    • 在vue3項目中引用
      • sass
      • 創建bem.scss文件
      • 修改vite.config.ts
      • vue文件中使用
      • 結果

這是我學習記錄的筆記,如有不正,歡迎補充

簡介

首先認識一下什么是bem架構?BEM的意思就是塊(block)、元素(element)、修飾符(modifier),是由Yandex團隊提出的一種前端命名方法論。這種巧妙的命名方法讓你的CSS類對其他開發者來說更加透明而且更有意義。BEM命名約定更加嚴格,而且包含更多的信息,它們用于一個團隊開發一個耗時的大項目。

語法

在這里插入圖片描述
看一下其中的class類,el-divider el-divider–horizontal m-0
這里加入一個類el-divider__inner

  • el表示namespace(命名空間)
  • -()表示block(塊)
  • __()雙下劃線表示element(元素)
  • -- 雙-號表示modidier(修飾符)

在vue3項目中引用

sass

在引用之前需要先了解一下sass
這里我就不具體講解了,我把必要的了解說一下:

  1. 嵌套規則 (Nested Rules)
  2. 父選擇器 &
  3. 變量 $
  4. @at-root
  5. 占位符#{}
  6. 定義混合指令 @mixin
  7. 引用混合樣式 @include
    這些可以在官方文檔中查看,我想只要學過css,入門sass也是喝喝水了。

創建bem.scss文件

這里面寫我們的bem架構規則。

//注意:這里的xm是自定義的namespace
$namespace: "xm" !default;
$block-sel: "-" !default;
$elem-sel: "__" !default;
$mod-sel: "--" !default;@mixin b($block) {$B: #{$namespace + $block-sel + $block};.#{$B} {//占位符,替代編寫的css樣式@content;}
}@mixin e($elem) {$seletor: &;$E: #{$seletor + $elem-sel + $elem};@at-root {//跳出父級作用域#{$E} {//占位符,替代編寫的css樣式@content;}}
}@mixin m($modifier) {$seletor: &;$M: #{$seletor + $mod-sel + $modifier};@at-root {#{$M} {//占位符,替代編寫的css樣式@content;} } 
}

這個文件可以直接引用到項目中,改一下命名空間就行。

修改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: {//bem文件的位置additionalData: `@import "./src/bem.scss";`}}}
})

vue文件中使用

<template><div class="xm-test">gunala<button class="xm-test--success">成功</button></div>
</template>//標注lang = "scss"<style lang="scss">//test是b的參數,表示拿到xm-test類@include b(test){color:red;//嵌套//success是m的參數,表示拿到的是xm-test--success@include m(success){color: green;}}</style>

結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697789.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697789.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【DDD】學習筆記-發布者—訂閱者模式

在領域設計模型中引入了領域事件&#xff0c;并不意味著就采用了領域事件建模范式&#xff0c;此時的領域事件僅僅作為一種架構或設計模式而已&#xff0c;屬于領域設計模型的設計要素。在領域設計建模階段&#xff0c;如何選擇和設計領域事件&#xff0c;存在不同的模式&#…

nginx-ingress-controller組件中Nginx的版本升級

參考鏈接&#xff1a;https://blog.csdn.net/qq_22824481/article/details/133761302 https://blog.csdn.net/mengfanshaoxia/article/details/127155020 https://blog.csdn.net/weixin_39961559/article/details/87935873 概要 業務區k…

JAVAEE初階 JVM(一)

JVM的熱門話題 一. JVM中的內存區域劃分1.經典筆試題. 二. JVM的類加載機制 一. JVM中的內存區域劃分 1.經典筆試題. 二. JVM的類加載機制

wondows10用Electron打包threejs的項目記錄

背景 電腦是用的mac&#xff0c;安裝了parallels desktop ,想用electron 想同時打包出 蘋果版本和windows版本。因為是在虛擬機里安裝&#xff0c;它常被我重裝&#xff0c;所以記錄一下打包的整個過程。另外就是node生態太活躍&#xff0c;幾個依賴沒記錄具體版本&#xff0…

lora網關智慧工廠三色燈安燈狀態采集鋇錸技術S281

LoRa網關結合鋇錸技術S281模塊在智慧工廠三色燈安燈狀態采集方面具有廣泛的應用前景。智慧工廠的安全生產管理對于企業生產經營至關重要&#xff0c;而三色燈安燈是工廠安全生產管理的重要指示燈&#xff0c;通過LoRa無線通信技術和鋇錸技術S281模塊&#xff0c;可以實現對三色…

android 使用X264編碼視頻

android 使用X264編碼視頻 源碼剛上傳可能審核 源碼下載地址 X264對應部分API介紹 初始化x264_param_t _x264_param new x264_param_t;/*** preset是編碼速度* 可選項"ultrafast", "superfast", "veryfast", "faster", "fa…

使用 package.json 配置代理解決 React 項目中的跨域請求問題

使用 package.json 配置代理解決 React 項目中的跨域請求問題 當我們在開發前端應用時&#xff0c;經常會遇到跨域請求的問題。為了解決這個問題&#xff0c;我們可以通過配置代理來實現在開發環境中向后端服務器發送請求。 在 React 項目中&#xff0c;我們可以使用 package…

MES系統中的手動排產和自動排產-助力生產效率

企業在排產管理中面臨的問題&#xff1a; 大多數的企業在調度排產過程中&#xff0c;都會遇到以下問題。首先是插單非常的多&#xff0c;計劃調整困難&#xff0c;會經常性的發生原材料、零部件的備貨不足。計劃按MRP或庫存展示計算出需求后將產生大量工單&#xff0c;這些工單…

《劍指Offer》筆記題解思路技巧優化_Part_6

《劍指Offer》筆記&題解&思路&技巧&優化_Part_6 &#x1f60d;&#x1f60d;&#x1f60d; 相知&#x1f64c;&#x1f64c;&#x1f64c; 相識&#x1f622;&#x1f622;&#x1f622; 開始刷題&#x1f7e1;1.LCR 168. 丑數—— 丑數&#x1f7e2;2. LCR 16…

Kubernetes服務網絡Ingress網絡模型分析、安裝和高級用法

文章目錄 1、Ingres簡介2、Ingres網絡模型分析3、安裝Ingress4、使用4.1、搭建測試環境4.2、域名訪問4.3、路徑重寫&#xff08;高級用法&#xff09;4.4、流量限制&#xff08;高級用法&#xff09; 5、總結 1、Ingres簡介 Ingress翻譯過來是“入口”的意思&#xff0c;也就是…

切換分支時候IDEA提示:workspace associated with branch feature has been restored

切換分支時候IDEA提示&#xff1a;workspace associated with branch feature has been restored 這個消息是指與"feature"分支關聯的工作區已經恢復。在Git中&#xff0c;工作區是指你當前正在進行修改和編輯的文件和目錄。當你切換分支時&#xff0c;Git會自動將工…

配置docker 支持GPU方法(Nvidia GPU)

參考官方文檔&#xff1a; https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html 系統版本&#xff1a;ubuntu 23.04 執行腳本如下&#xff1a; 1.Configure the production repository: curl -fsSL https://nvidia.github.io/lib…

怎么把試卷圖片轉換成word?這4種方法一看就會

怎么把試卷圖片轉換成word&#xff1f;在數字化日益盛行的今天&#xff0c;我們常常會面臨將紙質試卷或圖片中的試卷內容轉化為Word文檔的需求。無論是為了對試卷內容進行編輯、修改&#xff0c;還是為了在線共享、遠程教學&#xff0c;將圖片轉換為Word文檔都成為了至關重要的…

集成TinyMCE富文本編輯器

若依的基礎上集成TinyMCE富文本編輯器 前端bootstrap TinyMCE官網鏈接 TinyMCE所需靜態資源下載鏈接 開源項目-若依鏈接 將TinyMCE靜態資源包放入項目中&#xff1b; 代碼引入css&#xff1a; <!-- 引入TinyMCE CSS --><link th:href"{/ajax/libs/tinymce/j…

金田金業: 美聯儲泡沫正在破裂! 崩潰對黃金非常有利

The Great Recession Blog作者大衛哈吉斯表示&#xff0c;美聯儲一直以來都將繼續收緊貨幣政策&#xff0c;直到出現問題&#xff0c;但市場現在已經陷入泡沫。 他指出&#xff0c;泡沫正在破裂&#xff0c;崩潰最終將對黃金非常有利。 正當投資者聚焦美聯儲何時會降息&#xf…

Springboot 使用升級小記-循環依賴

springboot 使用已經非常廣泛了&#xff0c;它的版本迭代速度也比較快&#xff0c;過一段時間版本差異就會比較大。 由于低版本依賴的 spring 版本有漏洞問題&#xff0c;這次我們是從 2.2.6 版本直接升級到 2.7.16&#xff0c;升級 3.0 的話擔心差異更大。 這時直接修改依賴…

Jmeter 學習目錄(0)

Jmeter 所有內容均以學習為主輸出內容&#xff0c;按照最小單位和基礎進行輸出。 如果有看不懂&#xff0c;或者有不明確的內容&#xff0c;歡迎大家留言說明。 Mac Jmeter下載安裝啟動(1) Jmeter 目錄介紹(2) Jmeter基礎發起一次請求(3)

代碼隨想錄三刷day07

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、力扣206. 反轉鏈表二、力扣24. 兩兩交換鏈表中的節點 前言 遞歸寫法和雙指針法實質上都是從前往后翻轉指針指向&#xff0c;其實還有另外一種與雙指針法不同…

SD-WAN:快速改造升級企業原有網絡架構

隨著企業信息化的推進&#xff0c;傳統網絡架構已難以滿足企業日益復雜和多樣化的組網互聯需求。企業在不斷提高對網絡的要求&#xff0c;包括各辦公點的互聯數據傳輸、資源共享、視頻會議、ERP、OA、郵箱系統、云服務等應用需求&#xff0c;以及對網絡運維工作的簡化和降低難度…

Spring Event 快速入門

請直接看原文 : Spring Event&#xff0c;賊好用的業務解耦神器&#xff01; (qq.com) -------------------------------------------------------------------------------------------------------------------------------- 前言 Spring Event 同步使用 Spring Event 異…