【发布时间】:2018-11-24 08:39:15
【问题描述】:
我的意图:
使用 Vue.js (v2) 属性 [v-cloak],我希望在准备好之前隐藏“应用程序”。当 [v-cloak] 被移除时,我希望“应用程序”淡入。使用 CSS 不透明度和过渡来实现淡入。
问题:
当 [v-cloak] 从我的“应用程序”中删除时,没有我期望的过渡。它只是立即从隐藏变为可见。似乎忽略了 CSS。
示例:
我用 Vue.js 和一个 JavaScript 模拟版本做了一个夸张的例子来展示它们的行为。
https://codepen.io/freemagee/pen/wXqrRM
查看此示例时,您将看到“Plain old JavaScript”红色框在 5 秒内逐渐消失。但是 Vue 控制的版本只是出现没有褪色。它们共享相同的 CSS 进行过渡,因此理论上应该以相同的方式工作。
有人有效地使用 [v-cloak] 来实现平滑过渡吗?
Codepen 代码
HTML
<div id="app" v-cloak>
<div class="red-box"></div>
<p>Vue.js {{ message }}</p>
</div>
<div id="app2" v-cloak>
<div class="red-box"></div>
<p>Plain old JavaScript</p>
</div>
CSS
html,
body {
margin: 0;
height: 100%;
min-height: 100%;
}
[v-cloak] .red-box {
opacity: 0;
visibility: hidden;
transition: visibility 0s 5s, opacity 5s linear;
}
#app,
#app2{
padding-top: 50px;
}
.red-box {
margin: 0 auto;
width: 100px;
height: 100px;
background: red;
opacity: 1;
visibility: visible;
transition: opacity 5s linear;
}
p {
text-align: center;
}
JS
new Vue({
el: "#app",
data: {
message: "Hello world"
}
});
window.setTimeout(function() {
document.getElementById("app2").removeAttribute("v-cloak");
}, 500);
【问题讨论】:
-
v-cloak是一个 vue 指令,生成的标记上应该没有它的迹象 -
嗨@Vivick,到目前为止,我的经验是,如果我不手动将 v-cloak 添加到应用程序元素中,那么当 Vue 执行此操作时,您会看到类似内容的“车把”。我已经看到 Vue 使用 Chrome 网络检查器成功删除了 v-cloak 指令。但这不会触发 CSS 过渡淡入。我真的希望它会。我相信我的做法与文档 vuejs.org/v2/api/#v-cloak 相同
-
也许这会有所帮助? jsfiddle.net/claudchan/u7x6vx1q
标签: javascript html css vue.js