当前位置:   article > 正文

vue 动态改变主题颜色_vue 将字体颜色设置白色,背景色设置为黑色

vue 将字体颜色设置白色,背景色设置为黑色

实现效果

 一。应用方法

 1.css3伪类选择器   

2.CSSStyleDeclaration.setProperty() 方法接口为一个声明了 CSS 样式的对象设置一个新的值 。

   语法   style.setProperty(propertyName, value, priority);

    参数

  • propertyName 是一个 DOMString ,代表被更改的 CSS 属性。
  • value可选 是一个 DOMString ,含有新的属性值。如果没有指定,则当作空字符串。
    • 注意: value 不能包含 "!important" --那个应该使用 priority 参数。
  • priority可选 是一个 DOMString 允许设置 "important" CSS 优先级。如果没有指定,则当作空字符串

 二。定义主题颜色(黑、白)

        创建一个theme.json文件,定义变量名称以及对应颜色(字体、背景、边框颜色等)

  1. {
  2. "white":{
  3. "--maintextcolor": "#222222",
  4. "--mainbgcolor": "#ffffff",
  5. "--mainbordercolor":"1px solid #CDD6F0",
  6. "--otherbgcolor":"#CDD6F0",
  7. "--hovercolor":"#F5F7FA",
  8. "--webkitbgcolor":"#EFEFEF",
  9. "--webkitbtncolor":"#BFBFBF",
  10. "--disablecolor":"#e3e3e3",
  11. "--disabletextcolor":"#7c7575",
  12. "--paginationcolor":"rgba(48,93,190,0.10)",
  13. "--paginationbordercolor":"1px solid #305DBE",
  14. "--buttonbgcolor":"rgba(48,93,190,0.16)",
  15. "--buttoncolor":"#305DBE",
  16. "--buttonbordercolor":"1px solid rgba(48,93,190,0.7)",
  17. "--buttonborderredcolor":"1px solid rgba(222,80,68,0.7)",
  18. "--buttonredcolor":"#DE5044",
  19. "--buttonbgredcolor":"rgba(222,80,68,0.16)"
  20. },
  21. "black":{
  22. "--maintextcolor": "#ffffff",
  23. "--mainbgcolor": "#28282B",
  24. "--mainbordercolor":"1px solid rgb(255,255,255,0.25)",
  25. "--otherbgcolor":"#3E4D6C",
  26. "--hovercolor":"#193b6a",
  27. "--webkitbgcolor":"#222",
  28. "--webkitbtncolor":"#666",
  29. "--disablecolor":"#7c7575",
  30. "--disabletextcolor":"#e3e3e3",
  31. "--paginationcolor":"#449DFF",
  32. "--paginationbordercolor":"none",
  33. "--buttonbgcolor":"rgba(48,93,190,0.16)",
  34. "--buttonbordercolor":"1px solid rgba(68,157,255,0.35)",
  35. "--buttonborderredcolor":"1px solid rgba(222,80,68,0.35);",
  36. "--buttoncolor":"#449DFF",
  37. "--buttonredcolor":"#DE5044"
  38. }
  39. }

三。将样式通过切换按钮动态添加到html上

    创建 addcolor.js文件

  1. // 主题样式
  2. import themes from './theme.json'
  3. export function addColor (init){
  4. const theme = localStorage.theme
  5. const {white,black,obj={}} = themes
  6. // 1.localStorage.theme 不存在默认黑色 2.存在并且刷新页面不改变主题 3.存在并且点切换才改变主题
  7. if(!theme){
  8. localStorage.setItem('theme','black')
  9. Object.assign(obj,black)
  10. }else {
  11. if(init)
  12. Object.assign(obj,theme == 'black'? black : white)
  13. else{
  14. localStorage.setItem('theme',theme == 'black'?' white' : 'black')
  15. Object.assign(obj,theme == 'black'? white : black)
  16. }
  17. }
  18. // html 添加主题样式
  19. for (const key in obj) {
  20. document.documentElement.style.setProperty(key, obj[key]);
  21. }
  22. }

在页面上使用addcolor方

  1. <el-button @click="addColor(false)" class="btn">换肤</el-button>
  2. <script>
  3. import { addColor } from '../utils/style/addcolor';
  4. export default {
  5. name: 'Layout',
  6. methods: {
  7. addColor(){
  8. console.log('换肤');
  9. addColor()
  10. }
  11. }
  12. }
  13. </script>

四。第一次加载页面或者刷新加载页面要调用一次addColor方法,在main.js引入进行调用

  1. import Vue from 'vue'
  2. import echarts from 'echarts'
  3. import 'normalize.css/normalize.css' // A modern alternative to CSS resets
  4. import ElementUI from 'element-ui'
  5. import 'element-ui/lib/theme-chalk/index.css'
  6. import multiCascader from '@/components/multiCascader/index'
  7. import elTableInfiniteScroll from 'el-table-infinite-scroll'
  8. import '@/styles/index.scss' // global css
  9. import '@/styles/standingBook.scss' // standingBook css
  10. import App from './App'
  11. import store from './store'
  12. import router from './router'
  13. // 中文版 element-ui
  14. Vue.use(ElementUI)
  15. Vue.use(multiCascader) // 级联选择器
  16. Vue.config.productionTip = false
  17. Vue.use(elTableInfiniteScroll)
  18. import { addColor } from './utils/style/addcolor';
  19. addColor(true)
  20. new Vue({
  21. el: '#app',
  22. router,
  23. store,
  24. render: h => h(App)
  25. })

五。在项目中应用css( 在style样式中通过var()进行使用 )

  1. .shrink {
  2. margin-left: 32px;
  3. /deep/ .el-transfer-panel {
  4. width: 244px;
  5. height: 338px;
  6. //应用设置好的主题css样式
  7. background-color: var(--mainbgcolor);
  8. border: var(--mainbordercolor);
  9. .el-transfer-panel__header {
  10. background-color: var(--mainbgcolor);
  11. border: var(--mainbordercolor);
  12. .el-checkbox {
  13. .el-checkbox__label {
  14. font-size: 14px;
  15. color: var(--maintextcolor);
  16. font-weight: 600;
  17. span {
  18. color: var(--maintextcolor);
  19. }
  20. }
  21. }
  22. }
  23. }
  24. // 穿梭框中心内容样式
  25. /deep/ .el-transfer-panel__body {
  26. .el-transfer-panel__filter {
  27. input {
  28. background-color: var(--mainbgcolor);
  29. border: var(--mainbordercolor);
  30. width: 196px;
  31. height: 32px;
  32. border-radius: 0;
  33. border-radius: 4px;
  34. }
  35. }
  36. .el-checkbox-group {
  37. span {
  38. color: var(--maintextcolor);
  39. }
  40. }
  41. .el-checkbox-group::-webkit-scrollbar {
  42. width: 0px;
  43. }
  44. }
  45. // 穿梭框的中间按钮样式
  46. >>> .el-transfer__buttons {
  47. .el-button {
  48. border-radius: 4px;
  49. border: var(--mainbordercolor);
  50. background: var(--mainbgcolor);
  51. color: var(--maintextcolor);
  52. }
  53. .el-button--primary.is-disabled {
  54. border-radius: 4px;
  55. border: var(--mainbordercolor);
  56. background: var(--mainbgcolor);
  57. color: var(--maintextcolor);
  58. }
  59. }
  60. }
  61. /deep/ .el-dialog {
  62. width: 750px;
  63. height: 545px;
  64. .dialog-footer {
  65. text-align: center;
  66. }
  67. }
  68. .el-button{
  69. background: var(--buttonbgcolor);
  70. padding: 6px 8px;
  71. color: var(--buttoncolor);
  72. border: var(--buttonbordercolor);
  73. }

参考博客:https://blog.csdn.net/qq_42570449/article/details/121689015?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-11-121689015-null-null.pc_agg_new_rank&utm_term=vue+%E6%9B%B4%E6%8D%A2%E6%8C%89%E9%92%AE%E7%9A%84%E8%83%8C%E6%99%AF%E9%A2%9C%E8%89%B2+%E7%82%B9%E5%87%BB%E6%8C%89%E9%92%AE&spm=1000.2123.3001.4430icon-default.png?t=M666https://blog.csdn.net/qq_42570449/article/details/121689015?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-11-121689015-null-null.pc_agg_new_rank&utm_term=vue+%E6%9B%B4%E6%8D%A2%E6%8C%89%E9%92%AE%E7%9A%84%E8%83%8C%E6%99%AF%E9%A2%9C%E8%89%B2+%E7%82%B9%E5%87%BB%E6%8C%89%E9%92%AE&spm=1000.2123.3001.4430

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

闽ICP备14008679号