Javascript 在两种颜色之间切换vueJS
以下是我今天提出的上一个问题的后续内容: 现在我想修改代码,以便每次单击它时都能在两种颜色之间切换 我的第一次尝试是:Javascript 在两种颜色之间切换vueJS,javascript,vue.js,Javascript,Vue.js,以下是我今天提出的上一个问题的后续内容: 现在我想修改代码,以便每次单击它时都能在两种颜色之间切换 我的第一次尝试是: <html> <head> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script> <style> .main-header {
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<style>
.main-header {
color: #292c2e;
}
</style>
</head>
<body>
<div id="app">
<h1 class="main-header" v-bind:style="{color: clickedColor}">{{ message }}</h1>
<button v-on:click="colorChange">Click me</button>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!',
clickedColor: '',
alteredState: false
},
methods: {
colorChange: function() {
console.log(this.alteredState);
this.alteredState = true;
if (this.alteredState == true) {
this.clickedColor = 'green'
this.alteredState = false;
} else {
this.clickedColor = ''
}
}
}
})
</script>
</body>
</html>
但我不明白如何更改状态的值,因为Vue文档并没有真正解释它
单击按钮时在标题的两种不同颜色之间切换是最佳方式吗?或者,我试图与ifs等更接近?尝试删除
this.alteredState=true代码>在条件块之前,并通过单击按钮在黑色和绿色之间切换,该按钮也会更改alteredState
值:
.主标题{
颜色:#292c2e;
}
{{message}}
点击我
var app=新的Vue({
el:“#应用程序”,
数据:{
消息:“你好,Vue!”,
单击颜色:“”,
更改状态:false
},
方法:{
颜色更改:函数(){
console.log(this.alteredState);
if(this.alteredState){
this.clickedColor='green'
this.alteredState=false;
}否则{
this.clickedColor='#000'
this.alteredState=true;
}
}
}
})
将alteredState
设置为true,然后立即检查它是否为true——因此它始终为true
您的alteredState
变量根本没有理由;您可以根据当前颜色进行切换:
colorChange: function() {
if (this.clickedColor == 'green') {
this.clickedColor = '';
} else {
this.clickedColor = 'green'
}
}
但是如果您真的想要alteredState
var,那么您应该基于切换状态设置它,而不是每次都将其设置为true:
colorChange: function() {
if (this.alteredState) {
this.clickedColor = 'green'
this.alteredState = false;
} else {
this.clickedColor = ''
this.alteredState = true;
}
}
还要注意true
(布尔值)和'true'
(字符串)之间的区别。我认为@Boussadjra-Brahim的答案有点“OK”,但我会稍微清理一下,并消除最初双击更改颜色的问题
var-app=新的Vue({
el:“#应用程序”,
数据:{
消息:“你好,Vue!”,
clickedColor:'红色',//设置初始值;我使用红色,因此您可以看到不同的状态
改变状态:正确
},
方法:{
颜色更改:函数(){
console.log(this.alteredState);
如果(此.alteredState){
this.clickedColor='green'
}否则{
this.clickedColor='#000'
}
//这是切换功能,所以可以
//每次单击按钮时切换状态
this.alteredState=!this.alteredState
}
}
})
/*您不需要此CSS,因为您可以使用:style设置颜色*/
/*.主标题{
颜色:#292c2e;
*/
{{message}}
点击我
答案很晚,但会帮助其他人实现一个完美的切换按钮
newvue({
el:“#应用程序”,
道具:{
残疾人士:{
类型:布尔型,
默认值:false
},
labelEnableText:{
类型:字符串,
默认值:“开”
},
labelDisableText:{
类型:字符串,
默认值:“关闭”
},
身份证:{
类型:字符串,
默认值:“主”
},
默认状态:{
类型:布尔型,
默认值:false
}
},
数据(){
返回{
currentState:this.defaultState
}
},
计算:{
enableText(){
返回此.labelEnableText;
},
disableText(){
返回此.labelDisableText;
},
isActive(){
返回此.currentState;
},
检查值:{
得到(){
返回此.currentState
},
设置(新值){
console.log(newValue);
this.currentState=newValue;
}
}
}
});
。切换按钮{
垂直对齐:中间对齐;
用户选择:无;
光标:指针;
}
.切换按钮输入[type=“checkbox”]{
不透明度:0;
位置:绝对位置;
宽度:1px;
高度:1px;
}
.切换按钮。切换开关{
显示:内联块;
高度:12px;
边界半径:6px;
宽度:40px;
背景:#BFCBD9;
长方体阴影:插入0 1px#BFCBD9;
位置:相对位置;
左边距:10px;
过渡:全部为0.25秒;
}
.切换按钮。切换开关::之后,
.toggle__按钮。toggle__开关::before{
内容:“;
位置:绝对位置;
显示:块;
高度:18px;
宽度:18px;
边界半径:50%;
左:0;
顶部:-3px;
变换:translateX(0);
过渡:全部.25s三次贝塞尔(.5,-.6,-.5,1.6);
}
.切换\按钮。切换\开关::之后{
背景:#4d;
盒影:0 0 1px#666;
}
.toggle__按钮。toggle__开关::before{
背景:#4d;
盒影:0.3pxRGBA(0,0,0,0.1);
不透明度:0;
}
.激活。切换开关{
背景:adedcb;
盒影:插入0 0 1px#adedcb;
}
.active.toggle__开关::在,
.active.toggle__开关::之前{
转换:translateX(40px-18px);
}
.active.toggle__开关::之后{
左:23px;
背景:#53B883;
盒影:0 0 1px#53B883;
}
基本示例
colorChange: function() {
if (this.alteredState) {
this.clickedColor = 'green'
this.alteredState = false;
} else {
this.clickedColor = ''
this.alteredState = true;
}
}