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

qfe3c7zg  于 2023-04-12  发布在  Vue.js
关注(0)|答案(2)|浏览(151)

下面是我的完整代码,这里我试图隐藏默认的“v-显示”。它应该在默认隐藏状态,当用户点击按钮,然后它应该显示。我已经使用“显示:无”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>

中文(简体)

#hide {
    display:none;
}
ha5z0ras

ha5z0ras1#

你在组件定义中定义了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>
b4wnujal

b4wnujal2#

如果你想切换元素,这是可行的。

<div>
  <div id="hide" class="btn" v-show='!toggle'>hiding</div>
  <div id="show" class="btn" v-show='toggle'>showing</div>
</div>

相关问题