I am learning Vue.js and at the moment i am learning to interact with the css, i really would love to know why my code doesn't work, basicly i have a button, when i click that button, every 1 second (i used setInterval for this, i tested the setInterval and it works) it should change between 2 classes that i have defined on my css, i have a higlight class, and a shrink class, and it should swap with each other in 1 second, when i enter the example, the second class is attached but passed 1 second no change happens, can you guys explain me why?
Html relevant part
<head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="styles.css"> </head> <body> <script src="https://unpkg.com/[email protected]"></script> <div id="exercise"> <!-- 1) Start the Effect with the Button. The Effect should alternate the "highlight" or "shrink" class on each new setInterval tick (attach respective class to the div with id "effect" below) --> <div> <button @click="startEffect">Start Effect</button> <div id="effect" :class="{highlight: effect,shrink: !effect}"></div> </div> Css
#effect { width: 100px; height: 100px; border: 1px solid black; } .highlight { background-color: red; width: 200px !important; } .shrink { background-color: gray; width: 50px !important; } Javascript
new Vue({ el: '#exercise', data: { effect: true, }, methods: { startEffect: function() { setInterval(function(){ this.effect = !this.effect; console.log(this.effect); },1000); } } });