使用模板
如果您可以在这种情况下使用组件并添加带有模板的标题,那就更好了。
HTML:
<body>
<div id="app"></div>
</body>
JS:
setTimeout(() => {
new Vue({
el: "#app",
template: "<h1 class='show'>Type Something.</h1>",
});
}, 3000);
CSS:
@keyframes fadeUp {
0% {
opacity: 0;
-webkit-transform: translateY(30px);
transform: translateY(30px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0px);
transform: translateY(0px);
}
}
.show {
-webkit-animation-name: fadeUp;
animation-name: fadeUp;
-webkit-animation-duration: 2s;
animation-duration: 2s;
opacity: 1;
}
使用 CSS 变量
但是如果你需要在 Vue 初始化之前渲染你的 HTML。
HTML:
<body>
<div id="app">
<h1 class="hidden"
:class="{ 'show': isMounted }">
Type Something.
</h1>
</div>
</body>
JS:
setTimeout(() => {
new Vue({
el: "#app",
data: {
isMounted: false
},
mounted(){
this.isMounted = true;
}
});
}, 3000);
CSS:重要的是让 .show 的特异性大于 .hidden 类
@keyframes fadeUp {
0% {
opacity: 0;
-webkit-transform: translateY(30px);
transform: translateY(30px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0px);
transform: translateY(0px);
}
}
.hidden{
opacity: 0;
}
.show {
-webkit-animation-name: fadeUp;
animation-name: fadeUp;
-webkit-animation-duration: 2s;
animation-duration: 2s;
opacity: 1;
}