javascript - CSS如何添加滑动过渡

标签 javascript jquery html css

我有以下带有滑动子菜单内容的工作 sidenav 菜单的 fiddle 演示。我在不使用 Jquery 的情况下进行了相同的演示(实际上首先使用纯 JS,然后通过 CSS 悬停选择器而不是单击),在我的情况下,子菜单不会以相同的方式滑动/动画。

.submenu {
  display: none;
}

.parent:hover .submenu,.submeun:hover {
  display: block;
}

该动画是由于 Jquery 切换方法造成的吗?

$(document).ready(function() {
    $('.parent').click(function() {
         $('.submenu').toggle('visible');
     });
  });

我如何在不使用 jquery 的情况下通过 css 或纯 JS 复制相同的方法,因为我不想仅将 jquery 用于一个简单的滑动动画。

JSFIDDLE

最佳答案

这边?

document.getElementById('home').addEventListener('click', function(e) {
  var nextEl = e.target.nextElementSibling;

  if(!nextEl.classList.contains('submenu')) {
    return false;
  }

  if(nextEl.classList.contains('show')) {
     nextEl.classList.remove('show')
  }
  else {
     nextEl.classList.add('show');
  }
});
.submenu {
  -webkit-transition: max-height 1s;
  -moz-transition: max-height 1s;
  -ms-transition: max-height 1s;
  -o-transition: max-height 1s;
  transition: max-height 1s;
  background: #e5feff;
  overflow: hidden;
  max-height: 0;
}
.submenu.show {
  max-height: 300px;
}
<div id="sidebar">
  <ul>
    <li id="home" class="parent">Home</li>
    <li class="submenu"><ul >
      <li>Home 1</li>
      <li>Home 2</li>
      <li>Home 3</li>
    </ul>   </li>
    <li>Explore</li>
  </ul>                  
</div>

关于javascript - CSS如何添加滑动过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44716975/

相关文章:

javascript - 按钮应该仅在两个事件后可用

javascript - 当用户在下拉列表中选择演讲者姓名时,只有演讲者的专业知识才会显示在下一个主题下拉列表中

javascript - 将 MongoDB 中的帐户创建日期插入 Handlebars 中?

javascript - AngularJs promise 返回未定义

javascript - ajax完成后保留css

javascript - 如何使用 jQuery 添加 DOM 元素?

javascript - 使用 jQuery .attr 替换 href 链接

javascript - 使用jquery获取元素id

javascript - 将 Advance Join() 与 VueJS 结合使用

python - Django 迭代 ClearableFileInput 小部件字段