uni-app nvue组件内,text标签切换样式后无法还原初始样式
uni-app nvue组件内,text标签切换样式后无法还原初始样式
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:10
HBuilderX类型:正式
HBuilderX版本号:3.1.3
手机系统:Android
手机系统版本号:Android 10
手机厂商:模拟器
手机机型:雷电模拟器和真机一加8pro
页面类型:nvue
打包方式:云端
示例代码:
<text :class="[active?'nTTxt-ac':'nTTxt']" :style="active?'':('color:'+getTxtColor)" @tap="changeItem">{{title}}</text>
export default {
data() {
return {
active:true,
getTxtColor:"#fffffff",
title:"test"
}
},
methods:{
changeItem(e){
this.active = !this.active;
}
}
$mainColor: #2b9939 !default;
.nTTxt-ac{color:$mainColor};
操作步骤:
点击切换active
预期结果:
能还原.nTTxt-ac的颜色
实际结果:
变成了默认颜色
bug描述:
text标签切换样式后无法还原初始样式
更多关于uni-app nvue组件内,text标签切换样式后无法还原初始样式的实战教程也可以访问 https://www.itying.com/category-93-b0.html
5 回复
目前我使用了scss变量处理
更多关于uni-app nvue组件内,text标签切换样式后无法还原初始样式的实战教程也可以访问 https://www.itying.com/category-93-b0.html
之前的版本有这个问题吗?
我是看了3.1.2.20210206的nvuecss兼容变多了才使用nvue的,之前没开发过相关的
确认 nvue 一直存在此问题,还原时需要自行还原为初始颜色
这是一个典型的nvue样式优先级问题。在nvue中,动态样式(:style)的优先级高于class样式,导致切换时样式无法正确还原。
问题出在代码逻辑上:
- 初始状态active为true,应用.nTTxt-ac类
- 点击后active变为false,此时会同时应用:style="‘color:’+getTxtColor"和内联样式
- 由于nvue中内联样式优先级高,会覆盖class样式
解决方案:
- 移除内联样式绑定,完全通过class控制:
<text :class="[active?'nTTxt-ac':'nTTxt']" @tap="changeItem">{{title}}</text>
- 在style中明确定义.nTTxt样式:
$mainColor: #2b9939 !default;
.nTTxt-ac{color:$mainColor};
.nTTxt{color:#ffffff};