简体   繁体   English

如何在 vuejs 中使用 animation 显示/隐藏子菜单

[英]How to show/hide submenu with animation in vuejs

I'm new to vuejs and I want to create a menu with below html structure.我是 vuejs 的新手,我想创建一个具有以下 html 结构的菜单。

<ul>
    <li><a href="" v-on:click="toggleMenu">item 1</a>
                    <ul class="list-unstyled">
                         <li><a href="">submenu 1-1</a></li>
                         <li><a href="">submenu 2-1</a></li>
                         <li><a href="">submenu 3-1</a></li>
                    </ul>
    </li>
    <li><a href="" v-on:click="toggleMenu">item 2</a>
                    <ul class="list-unstyled">
                         <li><a href="">submenu 1-2</a></li>
                         <li><a href="">submenu 2-2</a></li>
                    </ul>
     </li>
</ul>

submenu's are hidden with css.子菜单被 css 隐藏。

I want when I click on item 1 link, the child ul element will be toggled with slide down animation.我希望当我单击第item 1链接时,子ul元素将通过向下滑动 animation 进行切换。 And also this will happens for item 2 and others.这也将发生在第 2 项和其他项上。

I wrote a demo for the first submenu.我为第一个子菜单写了一个演示。 I use the transition component for the animation.我使用 animation 的过渡组件 you can also visit https://codesandbox.io/s/polished-butterfly-z1zf8?file=/src/App.vue:0-1263也可以访问https://codesandbox.io/s/poliished-butterfly-z1zf8?file=/src/App.vue:0-1263

<template>
  <div id="app">
    <ul>
      <li>
        <a href="javascript:;" v-on:click="item1Visible = !item1Visible">item 1</a>
        <transition name="slideDown">
          <ul class="list-unstyled" v-show="item1Visible">
            <li>
              <a href>submenu 1-1</a>
            </li>
            <li>
              <a href>submenu 2-1</a>
            </li>
            <li>
              <a href>submenu 3-1</a>
            </li>
          </ul>
        </transition>
      </li>
      <li>
        <a href="javascript:;" v-on:click="item2Visible = !item2Visible">item 2</a>
        <ul class="list-unstyled" v-show="item2Visible">
          <li>
            <a href>submenu 1-2</a>
          </li>
          <li>
            <a href>submenu 2-2</a>
          </li>
        </ul>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  name: "App",
  data() {
    return {
      item1Visible: true,
      item2Visible: true
    };
  }
};
</script>

<style>
.slideDown-enter-active,
.slideDown-leave-active {
  transition: all 0.5s ease-out;
  overflow: hidden;
}
.slideDown-enter, .slideDown-leave-to /* .fade-leave-active below version 2.1.8 */ {
  height: 0;
}
.slideDown-enter-to,
.slideDown-leave {
  height: 50px;
}
</style>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM