首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS如何添加滑动过渡

CSS如何添加滑动过渡
EN

Stack Overflow用户
提问于 2017-06-23 16:45:04
回答 2查看 61关注 0票数 1

我有一个滑动子菜单内容的sidenav菜单工作的以下小提琴演示。我在没有使用Jquery的情况下遵循了相同的演示(实际上首先使用普通的JS,然后通过CSS悬停选择器而不是单击),并且在我的例子中,子菜单不会以相同的方式进行幻灯片/动画。

代码语言:javascript
复制
.submenu {
  display: none;
}

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

动画是由Jquery切换方法引起的吗?

代码语言:javascript
复制
$(document).ready(function() {
    $('.parent').click(function() {
         $('.submenu').toggle('visible');
     });
  });

我怎样才能在不使用jquery的情况下复制相同的方法,通过css或普通的JS,因为我不想只为了一个简单的滑动动画而使用jquery。

JSFIDDLE

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-23 16:51:38

这条路?

代码语言:javascript
复制
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');
  }
});
代码语言:javascript
复制
.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;
}
代码语言:javascript
复制
<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>

票数 3
EN

Stack Overflow用户

发布于 2017-06-23 17:12:44

您可以使用slideToggle(),因此可以避免更改类。这只是一种选择

此外,请记住,子菜单必须位于父li中,例如<li>Home<ul><li>Sub link</li></ul></li>。我相应地更改了您的HTML

请参阅下面的代码片段

代码语言:javascript
复制
$(document).ready(function() {
    $('.parent').click(function() {
         $(this).children(".submenu").slideToggle()
     });
  });
代码语言:javascript
复制
body, html {
    height: 100%;
    margin: 0;
    overflow:hidden;
}

#sidebar {
    background: #DF314D;  
    width: 240px;
    height: 100%;
}

#sidebar ul {
    padding: 0;
    list-style: none;
}

#sidebar ul li {
    padding: 15px 20px 15px 35px;
    color: white;
}

#sidebar li:hover { 
    background: #C9223D;
}

.submenu {
    display: none;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="sidebar">
  <ul>
    <li class="parent">Home  
    <ul class="submenu">
      <li>Home 1</li>
      <li>Home 2</li>
      <li>Home 3</li>
    </ul>   
    </li>
    <li>Explore</li>
  </ul>                  
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44716975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档