在开发过程中经常会发现当页面明明不应该出现的元素或内容会闪现一下然后消失,最近研究了一下这个问题的原因和解决办法,这里和大家分享一下。
1.闪现的原因
这个问题是因为Vue要等到HTML DOM加载完成后才会执行JS的编译,所以对使用的指令如 v-if , v-show 或者使用了插值表达式 {{}} 都会出现闪现的情况。因为在这些判断条件或表达式执行之前,DOM已经渲染出来了,之后Vue才会执行相应的JS代码。
2.解决的办法
其实在了解了原因之后我们就有了大概的思路,既然是在JS执行之前会出现,那就让元素在JS执行之前都保持不显示就好了。那事情就分为两步:
- 选择在JS执行前要隐藏的元素
- 添加display:none样式
如何只定位JS执行前的元素呢?Vue有一个指令 v-cloak
,它的特殊之处在于 保持在元素上直到关联实例结束编译 。就是说这个属性会一直在元素上,直到编译结束。只需要在需要隐藏的元素上增加 v-cloak
指令即可。
接下来在CSS中定义隐藏样式即可:
到这里,这个问题就解决了。Vue是前端技术的一次大的跃进,有坑并不可怕,相信办法总比问题多。
总结
以上所述是小编给大家介绍的Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对北冥有鱼网站的支持!
您可能感兴趣的文章:
- vue中v-show和v-if的异同及v-show用法
- 详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
- vue使用v-if v-show页面闪烁,div闪现的解决方法
- vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
- 关于vuejs中v-if和v-show的区别及v-show不起作用问题
- vue学习笔记之v-if和v-show的区别
- 深入理解vue.js中的v-if和v-show
- Vue.js使用v-show和v-if的注意事项
- vue中的v-if和v-show的区别详解