当前位置:   article > 正文

elementUI 亮暗色切换和主题色设置 scss_element-ui dark

element-ui dark

        首先要创建两套颜色主题

第一步:在根目录下创建存放主题.scss文件的目录,在改目录下创建主题.scss

第二步: 设置两套背景和文字颜色

        颜色的设置:尽量少,背景和字体颜色要相反,否则看不清。但是还要看UI的安排。

  1. $themes: (
  2. light:
  3. (
  4. background_color: #XXXXXX,
  5. //背景色
  6. background_color_hei: #XXXXXX,
  7. //背景黑
  8. background_color_hui: #XXXXXX,
  9. //背景灰
  10. background_zong_color: #XXXXXX,
  11. //总背景色
  12. background_hover_color: #XXXXXX,
  13. //hover背景色
  14. text-color: #XXXXXX,
  15. // 主文本色
  16. fill: #XXXXXX,
  17. text-color-ol: #XXXXXX,
  18. // 次要文字颜色
  19. bg_color: #XXXXXX,
  20. //亮色下未选中的背景颜色
  21. bg_md_color: #XXXXXX,
  22. //亮色下选中的背景色
  23. icon_bg: #XXXXXX,
  24. //图标下面的背景颜色
  25. ),
  26. dark: (
  27. background_color_hei: #XXXXXX,
  28. //背景黑
  29. background_color_hui: #XXXXXX,
  30. //背景灰
  31. background_color: #XXXXXX,
  32. //背景#222222
  33. background_zong_color: #XXXXXX,
  34. //总背景色
  35. background_hover_color: #XXXXXX,
  36. text-color: #XXXXXX,
  37. // 主文本色
  38. fill: #XXXXXX,
  39. //fill颜色
  40. text-color-ol: #XXXXXX,
  41. // 次要文字颜色
  42. bg_color: #XXXXXX,
  43. //暗色下未选中的背景颜色
  44. bg_md_color: #XXXXXX,
  45. //暗色下选中的背景色
  46. icon_bg: #XXXXXX,
  47. //图标下面的背景颜色
  48. )
  49. );
  50. @mixin themeify {
  51. @each $theme-name, $theme-map in $themes {
  52. //!global 把局部变量强升为全局变量
  53. $theme-map: $theme-map !global;
  54. //判断html的data-theme的属性值 #{}是sass的插值表达式
  55. //& sass嵌套里的父容器标识 @content是混合器插槽,像vue的slot
  56. [data-theme="#{$theme-name}"] & {
  57. @content;
  58. }
  59. }
  60. }
  61. //声明一个根据Key获取颜色的function
  62. @function themed($key) {
  63. @return map-get($theme-map, $key);
  64. }
  65. //获取背景颜色
  66. @mixin background_color($color) {
  67. @include themeify {
  68. background: themed($color) !important;
  69. }
  70. }
  71. //获取字体颜色
  72. @mixin font_color($color) {
  73. @include themeify {
  74. color: themed($color) !important;
  75. }
  76. }
  77. @mixin font_fill($color) {
  78. @include themeify {
  79. fill: themed($color) !important;
  80. }
  81. }

第三步:点击事件改变颜色模式

存到你需要的地方,这里我存在了全局变量和localStorage中

  1. modelBrn() {
  2. let dark = !this.dark;
  3. if (dark) {
  4. window.document.documentElement.setAttribute("data-theme", "dark");
  5. } else {
  6. window.document.documentElement.setAttribute("data-theme", "light");
  7. }
  8. this.$store.commit("setData", {
  9. dark: dark,
  10. });
  11. localStorage.setItem("pc.cu.dark", dark);
  12. },

接下来就是在组件中使用啦

第四步:在<style>中引入主题.scss文件

@import "@/nightcss/wefor.scss";

第五步:使用

为dom设置背景颜色和字体颜色

  1. .bi_class_input {
  2. // width: 40%;
  3. width: 288px;
  4. height: 32px;
  5. line-height: 24px;
  6. font-size: 16px;
  7. font-weight: 600;
  8. margin-left: 15px;
  9. @include background_color("icon_bg"); // 设置背景颜色
  10. @include font_color("text-color"); // 设置字体颜色
  11. border-radius: 16px;
  12. padding: 5px 3px 5px 8px;
  13. }

最后,去点击切换主题色试验一下。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/82022
推荐阅读