VUE JS - 默认情况下如何隐藏 div?如果用户点击按钮,那么它应该使用 vue 显示

Posted

技术标签:

【中文标题】VUE JS - 默认情况下如何隐藏 div?如果用户点击按钮,那么它应该使用 vue 显示【英文标题】:VUE JS - How to hide a div by default? And if user clicks on button then it should display using vue 【发布时间】:2021-09-27 19:18:47 【问题描述】:

下面是我的完整代码这里我试图默认隐藏“v-show”。默认情况下它应该处于隐藏状态,当用户单击按钮时它应该显示。我使用“display:none”css 属性来隐藏 div 默认值,但它不起作用。我们如何解决这个问题?

<script src="https://unpkg.com/vue@2.5.3/dist/vue.js"></script>

<div id="app">
  <button @click='toggle = !toggle'> click here </button>
  <div id="hide" v-show='toggle'>showing</div>
</div>
<script>
new Vue(
 el: '#app',
 data () 
   return 
     toggle: true
   
 ,
)
</script>

css

#hide 
    display:none;

【问题讨论】:

【参考方案1】:

您在组件定义中定义了toggle: true,并且在模板中使用了v-show='toggle'。但是您的 css 样式总是将 display:none; 添加到 #hide 元素。

v-show 有什么作用?

v-show 中的条件计算为false 时,它将向元素添加display: none 内联样式,如果计算结果为true,它将删除display: none。更简单地说,它只是在元素样式中添加和删除display: none。它没有添加任何display: block 或其他使您的元素可见的东西。

您的元素始终隐藏在您为 #hide 元素添加的 CSS 代码中。因此,即使 v-show 的计算结果为 true,它也只会删除添加的 display: none 内联样式。由于为#hide 添加的样式,您的css 代码将始终保留display: none。这意味着您的组件将始终被隐藏。

修复

删除 css 样式。只依赖v-show='toggle'

工作小提琴。

new Vue(
  el: '#app',
  data() 
    return 
      toggle: false
    
  ,
)
/* #hide 
  display:none;
 */
<script src="https://unpkg.com/vue@2.5.3/dist/vue.js"></script>

<div id="app">
  <button @click='toggle = !toggle'> click here </button>
  <div id="hide" v-show='toggle'>showing</div>
</div>

【讨论】:

以上是关于VUE JS - 默认情况下如何隐藏 div?如果用户点击按钮,那么它应该使用 vue 显示的主要内容,如果未能解决你的问题,请参考以下文章

当我在vue js中单击div时如何隐藏特定的div

如何显示和隐藏在 vue js 中动态创建的 div(多格式选项卡结构)

Vue js动态显示/隐藏div

[Vue Js]如何实现一个带遮罩的全屏div

jQuery 如何获取到隐藏元素的高度?或者在dom元素可见性改变时能触发个事件也行。

求一个JS控制DIV显示和隐藏