いつもお世話になっております。
以下のコードのmouseoverとmousuleaveの動きがイマイチ理解できません。
(サンプル → https://jsfiddle.net/rogvu9fw/)
期待している動きとしては、
①mouseoverした時にcolorHolderにitem.colorを格納してから、item.colorにredを代入して背景が赤くなる。
②そしてmouseleaveした時に①で格納した元の色をitem.colorに代入して、背景が元の色に戻る。
という、.box :hover {background-color: red}
と同じ動きになる事を期待していたのですが、背景が戻ったり戻らなかったりとよく分からない挙動になってしまいました。
どうコードを修正すれば期待した動きになるでしょうか?
皆様よろしければお力添えをお願いいたします。
html
1<div id="app"> 2 <div class="box" 3 v-for="item in items" 4 v-bind:key="item.name" 5 v-bind:style="{ backgroundColor: item.color }" 6 v-on:mouseover="changeColor(item)" 7 v-on:mouseleave="returnColor(item)"> 8 <h1>{{ item.name }}</h1> 9 </div> 10</div>
css
1.box { 2 width: 300px; 3 height: 200px; 4 display: flex; 5 justify-content: center; 6 align-items: center; 7}
JavaScript
1new Vue({ 2 el: '#app', 3 data() { 4 return { 5 items: [ 6 {name: 'item1', color: 'blue'}, 7 {name: 'item2', color: 'lightblue'}, 8 {name: 'item3', color: 'green'}, 9 {name: 'item4', color: 'lightgreen'} 10 ], 11 colorHolder: '' 12 } 13 }, 14 methods: { 15 changeColor: function(item) { 16 this.colorHolder = item.color 17 item.color = 'red' 18 }, 19 returnColor: function(item) { 20 item.color = this.colorHolder 21 } 22 } 23})

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/06 16:25