Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v-if和v-show的区别 #85

Open
TieMuZhen opened this issue Feb 27, 2022 · 0 comments
Open

v-if和v-show的区别 #85

TieMuZhen opened this issue Feb 27, 2022 · 0 comments
Labels

Comments

@TieMuZhen
Copy link
Owner

TieMuZhen commented Feb 27, 2022

一、v-show

指令表达式的值为true就显示,为false就隐藏。显示和隐藏是基于css的样式切换,类似于visibility属性。即使一开始条件为false,内容也会被渲染在文档中,只是由css样式控制隐藏而已

二、v-if

在首次渲染的时候,如果条件为假,什么也不操作,页面当作没有这些元素。当条件为真的时候,开始局部编译,动态的向DOM元素里面添加元素。当条件从真变为假的时候,开始局部编译,卸载这些元素及其子元素,也就是删除

三、性能方面

v-if绝对是更消耗性能的,因为v-if在显示隐藏过程中有DOM的添加和删除,v-show只是操作css

四 、使用场景

如果是一些固定的,条件内容都不怎么会改变的,频繁切换的,使用v-show会比较省性能。如果是子组件,每次切换子组件不执行生命周期,使用v-show,如果子组件需要重新执行生命周期,那么使用v-if才能触发

五、类比visibility:hidden; 和 display:none;

1、display:none;

display设置为none会将元素从可访问性树accessibility tree移除。这会导致该元素及其所有子代元素不再被屏幕阅读技术screen reading technology访问。

2、visibility:hidden;

visibility显示或隐藏元素而不更改文档的布局

@TieMuZhen TieMuZhen added the Vue label Feb 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant