くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Element Plusのカスタマイズで使えるCSS変数を調べてみた

TailwindとDaisyUIで試していたけど、
コンポーネントを作るのは大変なので、Element+の活用を考えてる。

どうやってテーマをカスタマイズするのかなと思ったので、
いろいろ調べてみたときの備忘録(*´ω`*)

Element Plusの設定

テーマのカスタマイズについては、こちら

実際の設定値はこのあたり。

これ以外にも、コンポーネントごとにCSS変数があるので、
より細かいカスタマイズはそちらも見る必要がある。

Element Plusで設定するCSS変数

とりあえず、el-var.cssを眺めてみたときのまとめ

Color

色関係についてはこのあたり

CSS変数ではこのあたりを起点に、派生している感じのよう。
6色 x 7パターン + 白黒って感じっぽい。

Brand Color

--el-color-primary: #409eff;
--el-color-success: #67c23a;
--el-color-warning: #e6a23c;
--el-color-danger: #f56c6c;
--el-color-error: #f56c6c; /* dangerのalias */
--el-color-info: #909399;

--el-color-white: #ffffff;
--el-color-black: #000000;

/* アレンジ(white/blackはなし) */
--el-color-primary-light-3: #79bbff;
--el-color-primary-light-5: #a0cfff;
--el-color-primary-light-7: #c6e2ff;
--el-color-primary-light-8: #d9ecff;
--el-color-primary-light-9: #ecf5ff;
--el-color-primary-dark-2: #337ecc;

/* RGB ver */
--el-color-primary-rgb: 64, 158, 255;
--el-color-success-rgb: 103, 194, 58;
--el-color-warning-rgb: 230, 162, 60;
--el-color-danger-rgb: 245, 108, 108;
--el-color-error-rgb: 245, 108, 108;
--el-color-info-rgb: 144, 147, 153;

Text Color

文字の色は6パターン(+ disabled時)

--el-text-color-primary: #303133;
--el-text-color-regular: #606266;
--el-text-color-secondary: #909399;
--el-text-color-placeholder: #a8abb2;
--el-text-color-disabled: #c0c4cc;

--el-disabled-text-color: var(--el-text-color-placeholder);

Background Color

--el-bg-color: #ffffff;
--el-bg-color-page: #f2f3f5;
--el-bg-color-overlay: #ffffff;

--el-disabled-bg-color: var(--el-fill-color-light);

(--el-bg-color-pageは使われてないかも?)

Border Color

--el-border-color: #dcdfe6;
--el-border-color-light: #e4e7ed;
--el-border-color-lighter: #ebeef5;
--el-border-color-extra-light: #f2f6fc;
--el-border-color-dark: #d4d7de;
--el-border-color-darker: #cdd0d6;

--el-disabled-border-color: var(--el-border-color-light);
--el-border-color-hover: var(--el-text-color-disabled);

/* 色以外のborder関連 */
--el-border-width: 1px;
--el-border-style: solid;
--el-border-color-hover: var(--el-text-color-disabled);
--el-border: var(--el-border-width) var(--el-border-style) var(--el-border-color);

Fill Color

--el-fill-color: #f0f2f5;
--el-fill-color-light: #f5f7fa;
--el-fill-color-lighter: #fafafa;
--el-fill-color-extra-light: #fafcff;
--el-fill-color-dark: #ebedf0;
--el-fill-color-darker: #e6e8eb;
--el-fill-color-blank: #ffffff;

Overlay Color

--el-overlay-color: rgba(0, 0, 0, 0.8);
--el-overlay-color-light: rgba(0, 0, 0, 0.7);
--el-overlay-color-lighter: rgba(0, 0, 0, 0.5);

Mask Color

--el-mask-color: rgba(255, 255, 255, 0.9);
--el-mask-color-extra-light: rgba(255, 255, 255, 0.3);

Box Shadow

--el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, 0.04), 0px 8px 20px rgba(0, 0, 0, 0.08);
--el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, 0.12);
--el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, 0.12);
--el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, 0.08), 0px 12px 32px rgba(0, 0, 0, 0.12),
  0px 8px 16px -8px rgba(0, 0, 0, 0.16);

Other

--el-svg-monochrome-grey: var(--el-border-color);

Font/Typography

文字関係はこのあたり

size

--el-font-size-extra-large: 20px;
--el-font-size-large: 18px;
--el-font-size-medium: 16px;
--el-font-size-base: 14px;
--el-font-size-small: 13px;
--el-font-size-extra-small: 12px;

font-famiry

--el-font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial,
  sans-serif;

Others

/* font-weight */
--el-font-weight-primary: 500;
/* light height */
--el-font-line-height-primary: 24px;

Border Radius

--el-border-radius-base: 4px;
--el-border-radius-small: 2px;
--el-border-radius-round: 20px;
--el-border-radius-circle: 100%;

Z-index

--el-index-normal: 1;
--el-index-top: 1000;
--el-index-popper: 2000;

transition

--el-transition-duration: 0.3s;
--el-transition-duration-fast: 0.2s;
--el-transition-function-ease-in-out-bezier: cubic-bezier(0.645, 0.045, 0.355, 1);
--el-transition-function-fast-bezier: cubic-bezier(0.23, 1, 0.32, 1);

/* 上記の値を使って、いくつかパターンが用意 */
--el-transition-all: all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);
--el-transition-fade: opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);
--el-transition-md-fade: 
  transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),
  opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);
--el-transition-fade-linear: opacity var(--el-transition-duration-fast) linear;
--el-transition-border: border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);
--el-transition-box-shadow: box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);
--el-transition-color: color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);

component size

--el-component-size-large: 40px;
--el-component-size: 32px;
--el-component-size-small: 24px;

以上!! ドキュメントの整備はこれからっぽいけど、
ある程度は理解できてきた気がする(*´ω`*)