.light .login-username {
background: #ffffff;
color: #333333;
font-size: 1rem;
}
.light .login-password {
background: #ffffff;
color: #333333;
font-size: 1rem;
}
/** 夜晚模式 */
.dark .login-conatiner {
background: #333333;
color: #ffffff;
font-size: 1rem;
}
.dark .login-username {
background: #333333;
color: #ffffff;
font-size: 1rem;
}
.dark .login-password {
background: #333333;
color: #ffffff;
font-size: 1rem;
}
当Vuex中皮肤名发生变化后,那么皮肤名下对应的类名的值都会随之发生变化,那么其样式会覆盖掉原生样式,这样便达到了换肤的效果;
优点
这种皮肤方案的优点个人觉得非常明显,就是修改便捷,并且结构非常清晰,哪里要修改就直接修改,毕竟优秀的代码不仅仅要考虑代码量,原理,可维护性等各种因素,还要考虑上手难度,其简单的实现即使一个新接手项目的人,在稍微熟悉了之后便可以直接开始添加修改了;
缺点
多套皮肤会有多套样式表,代码量大,开发效率比较低,并且如果是多人协同开发的,可能在一开始就要有所约定,这种方案最适合的项目其实是中小型项目,一两个前端开发沟通成本低;
优化
实际项目中肯定是还可以优化的,比如统一定义颜色为变量,其实不止LESS,SASS,在CSS3中也有变量功能:
:root {
–theme-light-bg: #ffffff; // 背景色
–theme-light-color: #333333; // 字体色
–theme-light-border: #e1e1e1; // 边框色
}
这样便可以统一管理颜色,后续新增一套皮肤只需要新增皮肤对应的一组颜色就可以了,还是比较方便的,同样在LESS或SASS中管理就更为方便了,这些预处理器不仅仅提供了变量功能,还提供了混入,嵌套,甚至函数的功能…一旦使用上了这些,其实这种方案我个人觉得不失为一种实际项目中非常可行功能;
这种方式其实某种程度感觉和第一种差不多,最大的区别在于第一种利用的是权重是去覆盖,而第二种就更为直接是去设置,核心函数其实只有一个:
// 设置CSS变量值
document.body.style.setProperty(变量名,变量值);
这个函数可以设置根节点上对应CSS变量的值,我们只要改变了这个值,那么所有引用这个值的地方都会发生变化,从而达到换肤的效果;
示例
比如我们设置了一组CSS变量
// 默认值
:root {
–theme-bg: #fff;
–theme-color: rgb(51, 50, 50);
–theme-size: 1rem;
}
在之后的项目中,我们通通是使用的这组变量
差不多就是这样,在实际书写样式的时候统一使用变量,之后,存在一个处理样式的js文件
const light = ‘rgb(51, 50, 50)’
const dark = ‘#d6d6d6’
/**
-
获取一组皮肤变量
-
@param {Boolean} state 样式判断条件
*/
function getTheme(state) {
return {
“theme-bg”: state ? light : dark,
“theme-color”: state ? light : dark,
“theme-size”: state ? light : dark,
};
}
/**
-
设置变量值
-
@param {Boolean} state 样式判断条件
*/
function setTheme(state = true) {
const theme = getTheme(state);
Object.keys(theme).forEach((key) => {
document.body.style.setProperty(--${key}
, themeMap[key]);
});
}
在这个js文件中,我们可以定义获取和设置函数,获取函数主要根据参数获取对于的皮肤的值,而设置函数则主要负责设置根节点上变量的值;
一旦触发皮肤切换功能,那么直接可以通过setTheme这个函数设置根节点的变量值,从而实现换肤的效果;
优点
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
更多面试题
**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)**
更多面试题
**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等
[外链图片转存中…(img-hYgJAsDP-1712553496598)]