chore: optimize the realization of theme color 🌟

master
iczer 5 years ago
parent 42a34f7a16
commit 5f68e2d231
  1. 2
      src/components/checkbox/ImgCheckbox.vue
  2. 22
      src/components/menu/SideMenu.vue
  3. 2
      src/components/result/Result.vue
  4. 36
      src/components/setting/StyleItem.vue
  5. 2
      src/components/transition/PageToggleTransition.vue
  6. 4
      src/config/config.js
  7. 0
      src/config/default/animates.js
  8. 28
      src/config/index.js
  9. 2
      src/layouts/AdminLayout.vue
  10. 2
      src/layouts/header/AdminHeader.vue
  11. 6
      src/pages/dashboard/workplace/WorkPlace.vue
  12. 2
      src/pages/login/Login.vue
  13. 2
      src/store/modules/setting.js
  14. 18
      src/theme/default/color.less
  15. 11
      src/utils/colors.js
  16. 21
      src/utils/themeUtil.js
  17. 9
      vue.config.js

@ -138,7 +138,7 @@ export default {
padding-top: 15px;
padding-left: 24px;
height: 100%;
color: #1890ff;
color: @primary-color;
font-size: 14px;
font-weight: bold;
}

@ -1,5 +1,5 @@
<template>
<a-layout-sider :class="[theme, 'side', isMobile ? null : 'shadow']" width="256px" :collapsible="collapsible" v-model="collapsed" :trigger="null">
<a-layout-sider :theme="theme" :class="['side', isMobile ? null : 'shadow']" width="256px" :collapsible="collapsible" v-model="collapsed" :trigger="null">
<div :class="['logo', theme]">
<router-link to="/dashboard/workplace">
<img src="@/assets/img/logo.png">
@ -56,12 +56,6 @@ export default {
}
.side{
z-index: 10;
&.light{
background-color: #fff;
}
&.dark{
background-color: #001529;
}
.logo{
height: 64px;
position: relative;
@ -70,32 +64,22 @@ export default {
-webkit-transition: all .3s;
transition: all .3s;
overflow: hidden;
background-color: @layout-trigger-background;
&.light{
background-color: #fff;
h1{
color: #1890ff;
}
}
&.dark{
background-color: #002140;
h1{
color: #fff;
color: @primary-color;
}
}
h1{
color: #fff;
font-size: 20px;
margin: 0 0 0 12px;
font-family: "Myriad Pro","Helvetica Neue",Arial,Helvetica,sans-serif;
font-weight: 600;
display: inline-block;
height: 32px;
line-height: 32px;
vertical-align: middle;
}
img{
width: 32px;
display: inline-block;
vertical-align: middle;
}
}

@ -32,7 +32,7 @@ export default {
margin-bottom: 24px;
}
.success {
color: green;
color: @success-color;
}
.error {
color: red;

@ -1,36 +0,0 @@
<template>
<div class="style">
<img :src="img" />
<div v-if="selected" class="select-item">
<a-icon type="check" />
</div>
</div>
</template>
<script>
export default {
name: 'StyleItem',
props: ['selected', 'img']
}
</script>
<style lang="less" scoped>
.style{
margin-right: 16px;
position: relative;
border-radius: 4px;
cursor: pointer;
.select-item{
position: absolute;
top: 0;
right: 0;
width: 100%;
padding-top: 15px;
padding-left: 24px;
height: 100%;
color: #1890ff;
font-size: 14px;
font-weight: bold;
}
}
</style>

@ -8,7 +8,7 @@
</template>
<script>
import animates from '@/config/animates'
import {animates} from '@/config/default'
export default {
name: 'PageToggleTransition',

@ -0,0 +1,4 @@
// 自定义配置,参考 ./default/setting.js,需要自定义的属性在这里配置即可
module.exports = {
themeColor: '#13c2c2',
}

@ -1,22 +1,6 @@
// 系统配置
module.exports = {
lang: 'CN',
themeColor: '#1890ff',
theme: 'dark',
layout: 'side',
fixedHeader: false,
fixedSideBar: true,
weekMode: false,
multiPage: false,
systemName: 'Vue Antd Admin',
copyright: '2018 ICZER 工作室出品',
animate: {
name: 'bounce',
direction: 'left'
},
footerLinks: [
{link: 'https://pro.ant.design', name: 'Pro首页'},
{link: 'https://github.com/iczer/vue-antd-admin', icon: 'github'},
{link: 'https://ant.design', name: 'Ant Design'}
],
}
const deepmerge = require('deepmerge')
const _config = require('./config')
const setting = require('./default').setting
const config = deepmerge(setting, _config)
module.exports = config

@ -105,7 +105,7 @@ export default {
min-height: auto;
}
.setting{
background-color: #1890ff;
background-color: @primary-color;
color: #fff;
border-radius: 5px 0 0 5px;
line-height: 40px;

@ -83,7 +83,7 @@ export default {
cursor: pointer;
transition: color .3s;
&:hover{
color: #1890ff;
color: @primary-color;
}
}
.admin-header{

@ -158,7 +158,7 @@ export default {
vertical-align: top;
font-size: 14px;
&:hover {
color: #1890ff;
color: @primary-color;
}
}
}
@ -174,7 +174,7 @@ export default {
display: inline-block;
flex: 1 1 0;
&:hover {
color: #1890ff;
color: @primary-color;
}
}
.datetime {
@ -219,7 +219,7 @@ export default {
}
&:hover {
span {
color: #1890ff;
color: @primary-color;
}
}
}

@ -164,7 +164,7 @@ export default {
transition: color 0.3s;
&:hover {
color: #1890ff;
color: @primary-color;
}
}
}

@ -3,7 +3,7 @@ export default {
namespaced: true,
state: {
isMobile: false,
animates: require('@/config/animates'),
animates: require('@/config/default/animates'),
...config,
routesI18n: {}
},

@ -1,20 +1,6 @@
@import '~ant-design-vue/lib/style/color/colors.less';
@primary: #1890ff;
@primary-color: @primary;
@processing-color: @primary;
@link-color: @primary;
@primary-1: color(~`colorPalette('@{primary}', 1) `);
@primary-2: color(~`colorPalette('@{primary}', 2) `);
@primary-3: color(~`colorPalette('@{primary}', 3) `);
@primary-4: color(~`colorPalette('@{primary}', 4) `);
@primary-5: color(~`colorPalette('@{primary}', 5) `);
@primary-6: color(~`colorPalette('@{primary}', 6) `);
@primary-7: color(~`colorPalette('@{primary}', 7) `);
@primary-8: color(~`colorPalette('@{primary}', 8) `);
@primary-9: color(~`colorPalette('@{primary}', 9) `);
@primary-10: color(~`colorPalette('@{primary}', 10) `);
@import '~ant-design-vue/lib/style/themes/default';
@primary: @primary-color;
@gray-1: #ffffff;
@gray-2: #fafafa;
@gray-3: #f5f5f5;

@ -1,17 +1,16 @@
const {generate} = require('@ant-design/colors')
const varyColor = require('webpack-theme-color-replacer/client/varyColor')
// ant design vue 默认主题色
const antPrimaryColor = '#1890ff'
// ant design vue 默认dark主题色,若主题色为默认主题色则返回此 dark 主题色系
const antDarkColors = ['#000c17', '#001529', '#002140']
function getDarkColors(color, theme) {
function getDarkColors(color) {
if (color == antPrimaryColor) {
return antDarkColors
}
const lightColors = generate(color, {theme: theme, backgroundColor: '#000000'})
const darkColors = generate(lightColors[5], {theme: theme, backgroundColor: '#000000'})
let deepDark = darkColors.slice(0, 3)
return deepDark
const darkColors = []
darkColors.push(varyColor.darken(color, 0.93), varyColor.darken(color, 0.83), varyColor.darken(color, 0.73))
return darkColors
}
module.exports = {getDarkColors}

@ -1,4 +1,4 @@
const varyColor = require('webpack-theme-color-replacer/client/varyColor')
// const varyColor = require('webpack-theme-color-replacer/client/varyColor')
const client = require('webpack-theme-color-replacer/client')
const generate = require('@ant-design/colors/lib/generate').default
const themeColor = require('../config').themeColor
@ -7,13 +7,9 @@ const getDarkColors = require('../utils/colors').getDarkColors
module.exports = {
primaryColor: themeColor,
getThemeColors(color) {
const lightens = new Array(9).fill().map((t, i) => {
return varyColor.lighten(color, i / 10)
})
const palettes = generate(color)
const rgb = varyColor.toNum3(color.replace('#', '')).join(',')
let darkBgColors = getDarkColors(color, 'dark')
return palettes.concat(lightens).concat(rgb).concat(darkBgColors)
const darkBgColors = getDarkColors(color)
return palettes.concat(darkBgColors)
},
changeThemeColor (newColor) {
let lastColor = this.lastColor || this.primaryColor
@ -48,5 +44,16 @@ module.exports = {
default :
return selector
}
},
modifyVars(color) {
let darkColors = getDarkColors(color)
return {
'primary-color': color,
'info-color': color,
'processing-color': color,
'menu-dark-submenu-bg': darkColors[0],
'layout-header-background': darkColors[1],
'layout-trigger-background': darkColors[2]
}
}
}

@ -1,6 +1,6 @@
let path = require('path')
const ThemeColorReplacer = require('webpack-theme-color-replacer')
const {getThemeColors, changeSelector} = require('./src/utils/themeUtil')
const {getThemeColors, changeSelector, modifyVars} = require('./src/utils/themeUtil')
const themeColor = require('./src/config').themeColor
module.exports = {
@ -24,12 +24,7 @@ module.exports = {
loaderOptions: {
less: {
lessOptions: {
modifyVars: {
// 'link-color': '#ff4d85',
// 'processing-color': '#ff4d85',
// 'primary-color': '#ff4d85',
// 'primary': '#1890ff',
},
modifyVars: modifyVars(themeColor),
javascriptEnabled: true
}
}

Loading…
Cancel
Save