element-ui自定義主題

Element Plus 默認提供一套主題篱蝇,CSS 命名采用 BEM 的風格姑原,方便使用者覆蓋樣式。element-ui提供了四種方法函喉,可以進行不同程度的樣式自定義避归。

僅替換主題色

如果僅希望更換 Element Plus 的主題色,推薦使用在線主題生成工具管呵。Element Plus 默認的主題色是鮮艷梳毙、友好的藍色。通過替換主題色撇寞,能夠讓 Element Plus 的視覺更加符合具體項目的定位顿天。

使用上述工具,可以很方便地實時預覽主題色改變之后的視覺蔑担,同時它還可以基于新的主題色生成完整的樣式文件包牌废,供直接下載使用(關于如何使用下載的主題包,請參考本節(jié)「引入自定義主題」和「搭配插件按需引入組件主題」部分)啤握。

在項目中改變 SCSS 變量

Element Plus 的 theme-chalk 使用 SCSS 編寫鸟缕,如果你的項目也使用了 SCSS,那么可以直接在項目中改變 Element Plus 的樣式變量。新建一個樣式文件懂从,例如 element-variables.scss授段,寫入以下內容:

/* 改變主題色變量 */
$--color-primary: teal;

/* 改變 icon 字體路徑變量,必需 */
$--font-path: '~element-plus/lib/theme-chalk/fonts';

@import "~element-plus/packages/theme-chalk/src/index";

之后番甩,在項目的入口文件中侵贵,直接引入以上樣式文件即可(無需引入 Element Plus 編譯好的 CSS 文件):

import Vue from 'vue'
import ElementPlus from 'element-plus'
import './element-variables.scss'
import App from './App.vue';

const app = createApp(App)
app.use(ElementPlus)

需要注意的是,覆蓋字體路徑變量是必需的缘薛,將其賦值為 Element Plus 中 icon 圖標所在的相對路徑即可窍育。

命令行主題工具

如果你的項目沒有使用 SCSS,那么可以使用命令行主題工具進行深層次的主題定制:

安裝工具

首先安裝「主題生成工具」宴胧,可以全局安裝或者安裝在當前項目下漱抓,推薦安裝在項目里,方便別人 clone 項目時能直接安裝依賴并啟動恕齐,這里以全局安裝做演示

npm i element-theme -g

安裝白堊主題乞娄,可以從 npm 安裝或者從 GitHub 拉取最新代碼。

# 從 npm
npm i element-theme-chalk -D

# 從 GitHub
npm i https://github.com/ElementUI/theme-chalk -D
初始化變量文件

主題生成工具安裝成功后显歧,如果全局安裝可以在命令行里通過 et 調用工具仪或,如果安裝在當前目錄下,需要通過 node_modules/.bin/et 訪問到命令士骤。執(zhí)行 -i 初始化變量文件溶其。默認輸出到 element-variables.scss,當然你可以傳參數(shù)指定文件輸出目錄敦间。

et -i [可以自定義變量文件]

> ? Generator variables file

如果使用默認配置,執(zhí)行后當前目錄會有一個 element-variables.scss 文件束铭。內部包含了主題所用到的所有變量廓块,它們使用 SCSS 的格式定義。大致結構如下:

$--color-primary: #409EFF !default;
$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */
$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */
$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */
$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */
$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */
$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */
$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */
$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */
$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */

$--color-success: #67c23a !default;
$--color-warning: #e6a23c !default;
$--color-danger: #f56c6c !default;
$--color-info: #909399 !default;

...
修改變量

直接編輯 element-variables.scss 文件契沫,例如修改主題色為紅色带猴。

$--color-primary: red;
編譯主題

保存文件后,到命令行里執(zhí)行 et 編譯主題懈万,如果你想啟用 watch 模式拴清,實時編譯主題,增加 -w 參數(shù)会通;如果你在初始化時指定了自定義變量文件口予,則需要增加 -c 參數(shù),并帶上你的變量文件名涕侈。默認情況下編譯的主題目錄是放在 ./theme 下沪停,你可以通過 -o 參數(shù)指定打包目錄。

et

> ? build theme font
> ? build element theme

使用自定義主題

引入自定義主題

和引入默認主題一樣,在代碼里直接引用「在線主題編輯器」或「命令行工具」生成的主題的 theme/index.css 文件即可木张。

import { createApp } from 'vue'
import '../theme/index.css'
import ElementPlus from 'element-plus'

createApp(App).use(ElementPlus)
搭配插件按需引入組件主題

如果是搭配 babel-plugin-component 一起使用众辨,只需要修改 .babelrc 的配置,指定 styleLibraryName 路徑為自定義主題相對于 .babelrc 的路徑舷礼,注意要加 ~鹃彻。

{
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-plus",
        "styleLibraryName": "~theme"
      }
    ]
  ]
}

如果不清楚 babel-plugin-component 是什么或者更多 element-theme 用法,請參考element-ui官網(wǎng)妻献。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蛛株,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子旋奢,更是在濱河造成了極大的恐慌泳挥,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件至朗,死亡現(xiàn)場離奇詭異屉符,居然都是意外死亡,警方通過查閱死者的電腦和手機锹引,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門矗钟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嫌变,你說我怎么就攤上這事吨艇。” “怎么了腾啥?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵东涡,是天一觀的道長。 經(jīng)常有香客問我倘待,道長疮跑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任凸舵,我火速辦了婚禮祖娘,結果婚禮上,老公的妹妹穿的比我還像新娘啊奄。我一直安慰自己渐苏,他們只是感情好,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布菇夸。 她就那樣靜靜地躺著琼富,像睡著了一般。 火紅的嫁衣襯著肌膚如雪庄新。 梳的紋絲不亂的頭發(fā)上公黑,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天,我揣著相機與錄音,去河邊找鬼凡蚜。 笑死人断,一個胖子當著我的面吹牛,可吹牛的內容都是我干的朝蜘。 我是一名探鬼主播恶迈,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谱醇!你這毒婦竟也來了暇仲?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤副渴,失蹤者是張志新(化名)和其女友劉穎奈附,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煮剧,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡斥滤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了勉盅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佑颇。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖草娜,靈堂內的尸體忽然破棺而出挑胸,到底是詐尸還是另有隱情,我是刑警寧澤宰闰,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布茬贵,位于F島的核電站,受9級特大地震影響移袍,放射性物質發(fā)生泄漏闷沥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一咐容、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚂维,春花似錦戳粒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涂籽,卻和暖如春苹祟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工树枫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留直焙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓砂轻,卻偏偏與公主長得像奔誓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子搔涝,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內容