TailwindとDaisyUIで試していたけど、
全コンポーネントを作るのは大変なので、Element+の活用を考えてる。
どうやってテーマをカスタマイズするのかなと思ったので、
いろいろ調べてみたときの備忘録(*´ω`*)
Element Plusの設定
テーマのカスタマイズについては、こちら
実際の設定値はこのあたり。
- element-plus/var.scss at 2.3.6 · element-plus/element-plus · GitHub
- ソースはSCSSなので、CSS変数は以下を見るといいかも
node_modules/element-plus/theme-chalk/el-var.css
node_modules/element-plus/theme-chalk/dark/css-vars.css
これ以外にも、コンポーネントごとに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;
以上!! ドキュメントの整備はこれからっぽいけど、
ある程度は理解できてきた気がする(*´ω`*)