elementui更换主题,elementui tabs切换
这篇文章主要介绍了某视频剪辑软件元素-用户界面实现主题切换功能,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
元素-用户界面提供了自定义主题自定义主题
一、安装
国家预防机制一元素-主题-gnpm i元素-主题-粉笔-Dnpm I https://github.com/ElementUI/theme-chalk-D官网说明安装完成后需要内皮素-1并会有元素变量。半导体色敏传感器文件,但是我文件中并未找到node_modules/.bin/et,所以手动生成了下图元素变量。半导体色敏传感器是自己写的,因为安装完成后并未生成此文件
文件中让内容如下`/* 改变主题色变量*/
```
/* 改变主题色变量,设置完成后会有按钮字体等组件会变化*/
$ -彩色-原色:# d85f6a
/* 改变图标字体路径变量,必需*/
$-font-path:" ~ element-ui/lib/theme-chalk/fonts ";
@ import ~ element-ui/packages/theme-chalk/src/index ;
```
页面文件:index.vue
El-radio-group v-model=主题电台 @ change= change click size= mini
El-无线电标签= # d8f6a 红色主题/el-radio
el-radio label=#409EFF 蓝色主题/el-radio
/el-radio-group
文件引入:
从" @/layout/colorpicker/index "导入颜色选择器;
使用:
颜色选择器:colorVal= colorVal /颜色选择器
方法:
更改点击(值){
this.colorVal=value
localStorage.setItem(skin ,value)
这个store.commit(setSkin ,value)
},
colorpicker.vue文件,文件内容如下:
模板
埃尔颜色选择器
v-if=false
v-model=主题
:predefine=[#409EFF , #1890ff , #304156 , #212121 , #11a983 , #13c2c2 , #6959CD , #f5222d ,]
主题选择器
popper-class=主题选择器下拉列表
/
/模板
脚本
const version=require( element-ui/package。JSON’).版本//来自节点_模块的元素用户界面版本
const ORIGINAL _ THEME= # 409 eff //默认颜色
从"元素-用户界面"导入{正在加载};
导出默认值{
道具:{ //在页面中将色彩传进来
colorVal:{
类型:字符串,
}
},
已创建(){
//let option={
//背景:" #FFFFFF "
//}
这个。加载实例=加载。service();//这里增加加载装载,因为刷新页面会出现延迟
},
data() {
返回{
粉笔: ,//主题内容-粉笔css
主题: ,
loadingInstance:true
}
},
计算值:{
defaultTheme() {
//将选择的颜色属性保存在状态管理中,如果页面刷新娶不到就从ocalStorage中取
如果(这个. store.state.skin)退这个100美元商店。状态。皮肤;
否则返回localStorage.getItem(皮肤)
//返回这个store.state.skin
}
},
观察:{
默认主题:{
处理程序:函数(瓦尔){
这个. nextTick(()={
//这个. emit(input ,这个。型号);
this.theme=val
})
},
即时:正确
},
异步主题(瓦尔){
const oldVal=this.chalk?主题:原创主题
if (typeof val!==string )返回
const主题集群=this。gettheme集群(val。替换( # ,))
const原始群集=this。getthemecluster(老瓦尔。替换( # ,))
const $message=this .$message({
消息:"正在编译主题",
自定义类别:主题-消息,
类型:"成功",
持续时间:0,
iconClass: el-icon-loading
})
const getHandler=(变量,id)={
return ()={
const原始集群=this。gettheme集群(ORIGINAL _ theme。替换( # ,))
const new style=this。更新样式(this[variable],originalCluster,themeCluster)
让样式标签=文档。getelementbyid(id)
如果(!styleTag) {
样式标签=文档。createelement(“样式”)
styleTag.setAttribute(id ,id)
文档。头。appendchild(样式标签)
}
styleTag.innerText=newStyle
}
}
如果(!这个。粉笔){
const URL= https://UNP kg。com/element-ui @ $ { version }/lib/theme-chalk/index。 CSS
等待this.getCSSString(url, chalk )
}
const chalk handler=getHandler( chalk , chalk-style )
粉笔处理器()
const styles=[]。切片。调用(文档。查询选择器all( style ))。过滤器(style={
const text=style.innerText
返回新的RegExp(oldVal, I ).测试(正文)!/粉笔变量/。测试(文本)
})
styles.forEach(style={
const { innerText }=style
if (typeof innerText!==string )返回
风格。innerText=this。更新样式(innerText、originalCluster、themeCluster)
})
这个emit(change ,val)
$message.close()
//这个消息({
//消息:皮肤切换成功,
//键入:"成功"
//})
这个. nextTick(()={ //以服务的方式调用的装货需要异步关闭
//这个。正在加载实例。close();
})
setTimeout(()={
这个。正在加载实例。close();
},1000)
}
},
方法:{
updateStyle(style,oldCluster,newCluster) {
让新风格=风格
oldCluster.forEach((color,index)={
新风格=新风格。replace(new RegExp(color, ig ),newCluster[index])
})
返回新样式
},
getCSSString(url,变量){
返回新承诺(resolve={
const xhr=new XMLHttpRequest()
xhr.onreadystatechange=()={
if(xhr。就绪状态===4 xhr。状态===200){
这个[变量]=xhr.responsetext.replace(/@font-face{[^}]}/,“”)
解决()
}
}
xhr.open(GET ,url)
xhr.send()
})
},
//将传入的24进制颜色标号进行处理,
getThemeCluster(主题){
const tintColor=(颜色,色调)={
设red=parseInt(color.slice(0,2),16)
设green=parseInt(color.slice(2,4),16)
设blue=parseInt(color.slice(4,6),16)
if (tint===0) { //当原色在其rgb空间中时
返回[红、绿、蓝]。联接(,)
}否则{
red=Math.round(色调* (255 -红色))
green=Math.round(色调* (255 -绿色))
blue=Math.round(色调* (255 -蓝色))
red=red.toString(16)
green=green.toString(16)
blue=blue.toString(16)
return `#${red}${green}${blue} `返回返回
}
}
const shadeColor=(颜色,阴影)={
设red=parseInt(color.slice(0,2),16)
设green=parseInt(color.slice(2,4),16)
设blue=parseInt(color.slice(4,6),16)
red=Math.round((1色)*红色)
green=Math.round((1色)*绿色)
blue=Math.round((1色)*蓝色)
red=red.toString(16)
green=green.toString(16)
blue=blue.toString(16)
return `#${red}${green}${blue} `返回返回
}
常量群集=[主题]
对于(设I=0;I=9;i ) {
clusters.push(tintColor(theme,Number((i/10))。toFixed(2))))
}
clusters.push(shadeColor(theme,0.1))
返回群集
}
}
}
/脚本
风格。主题-信息,主题选择器下拉菜单{
z指数:99999!重要;
}。主题选择器100 . El颜色选择器_ _触发器{
高度:26px!重要;
宽度:26px!重要;
填充:2px
}。主题选择器下拉菜单el-color-dropdown__link-btn {
显示:无;
}
/风格
效果:
但是到现在有个问题,就是元素-用户界面有自己的用户界面主题,每次收音机切换主题时没问题,但是F5刷新后页面元素颜色会闪烁,顺序:元素用户界面颜色当前设置缓存颜色,为了解决这个问题,就优化了代码,在APP.vue中设置,当页面刷新时能更快的渲染
1.新建colorpicker.js文件
2.APP.vue中引入
//colorpicker.js中只保留了colorpicker.vue中方法:中的方法
从" @/mixins/colorpicker.js "导入颜色选择器
3.使用混入类模式
mixins:[颜色选择器],
在创造中使用
异步创建的(){
等待this . getcolor(# 409 eff)
等等这个。配置路由器();
},
//将colorpicker.vue中此方法拿出来
异步获取颜色(瓦尔){
让主题=价值
const oldVal=this.chalk?主题:原创_主题
if (typeof val!==string )返回
const主题集群=this。gettheme集群(val。替换( # ,))
const原始集群=this。getthemecluster(老瓦尔。替换( # ,))
const $message=this .$message({
消息:"正在编译主题",
自定义类别:主题-消息,
类型:"成功",
持续时间:0,
iconClass: el-icon-loading
})
const getHandler=(变量,id)={
return ()={
const原始群集=this。getthemecluster(ORIGINAL _ theme。替换( # ,))
const new style=this。更新样式(this[variable],originalCluster,themeCluster)
让样式标签=文档。getelementbyid(id)
如果(!styleTag) {
样式标签=文档。createelement(“样式”)
styleTag.setAttribute(id ,id)
文档。头。appendchild(样式标签)
}
styleTag.innerText=newStyle
}
}
如果(!这个。粉笔){
const URL= https://UNP kg。com/element-ui @ $ { version }/lib/theme-chalk/index。 CSS
等待this.getCSSString(url, chalk )
}
const chalk handler=getHandler( chalk , chalk-style )
粉笔处理器()
const styles=[]。切片。调用(文档。查询选择器all( style ))。过滤器(style={
const text=style.innerText
返回新的RegExp(oldVal, I ).测试(正文)!/粉笔变量/。测试(文本)
})
styles.forEach(style={
const { innerText }=style
if (typeof innerText!==string )返回
风格。innerText=this。更新样式(innerText、originalCluster、themeCluster)
})
这个emit(change ,val)
$message.close()
},
到此这篇关于某视频剪辑软件元素-用户界面实现主题切换的文章就介绍到这了,更多相关某视频剪辑软件主题切换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。