ome*_*rix 2 animation change-data-capture vue.js vuejs2
使用Vuejs,页面上某些元素的数据正在发生变化。
然而,这种变化并不被用户理解。
例如,我通过单击按钮来制作计数器。我将数据作为 {{counter}} 打印到 span 元素。
但这种变化并没有被用户注意到。我怎样才能给它各种动画?
我尝试结合一个CSS,我发现它有我想要的动画,但没有成功。
Vuejs 文档说你可以使用toggleCss 来做到这一点,但这不是我想要的。
var app=new Vue({
el: "#app",
data: {
myCount:0
}
,
methods: {
btnCount() {
this.myCount+=1
}
}
})
Run Code Online (Sandbox Code Playgroud)
<div id='app'>
<button @click='btnCount'>
+++++
</button>
<span class='myAnimSpan'>{{myCount}}</span>
</div>
Run Code Online (Sandbox Code Playgroud)
span:hover {
animation: shake 0.5s;
}
@keyframes shake {
0% { transform: translate(1px, 1px) rotate(0deg); }
10% { transform: translate(-1px, -2px) rotate(-1deg); }
20% { transform: translate(-3px, 0px) rotate(1deg); }
30% { transform: translate(3px, 2px) rotate(0deg); }
40% { transform: translate(1px, -1px) rotate(1deg); }
50% { transform: translate(-1px, 2px) rotate(-1deg); }
60% { transform: translate(-3px, 1px) rotate(0deg); }
70% { transform: translate(3px, 1px) rotate(-1deg); }
80% { transform: translate(-1px, -1px) rotate(1deg); }
90% { transform: translate(1px, 2px) rotate(0deg); }
100% { transform: translate(1px, -2px) rotate(-1deg); }
}
Run Code Online (Sandbox Code Playgroud)
Jsfiddle: https: //jsfiddle.net/au4x031g/
您可以使用 Vue 过渡(请参阅https://v3.vuejs.org/guide/transitions-enterleave.html#transitioning-single-elements-components)。
使用<transition>带有name, 的标签和带有 的元素key(对该键的每次更改都会触发转换更新)
<transition name="shaketext">
<span class='myAnimSpan' :key="myCount">{{myCount}}</span>
</transition>
Run Code Online (Sandbox Code Playgroud)
该name属性用于进入/离开事件的 CSS 声明,例如:
.shaketext-enter-active {
animation: shake 0.9s;
}
.shaketext-leave-to, .shaketext-leave-active{
display: none;
}
Run Code Online (Sandbox Code Playgroud)
另外,为了使转换工作,span元素应该是一个块元素(display:inline-block例如)
.myAnimSpan {
display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)
https://jsfiddle.net/udctfs49/1/