Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用纯JS设置导航栏折叠动画&;CSS_Javascript_Css_Twitter Bootstrap 3 - Fatal编程技术网

Javascript 使用纯JS设置导航栏折叠动画&;CSS

Javascript 使用纯JS设置导航栏折叠动画&;CSS,javascript,css,twitter-bootstrap-3,Javascript,Css,Twitter Bootstrap 3,我想从我的引导模板中删除jquery,因为我不使用JS组件。所以我删除了它,并在纯JS中添加了导航栏切换的回退代码(检查附加的JSFIDLE)。 现在我想为导航栏切换设置动画(使用CSS或纯JS) 我尝试使用“最大高度”转换属性。但我不知道最后的高度,因为里面有一个下降。因此,如果我使用一些较大的高度,那么塌陷会延迟 我使用getbootstrap中的示例模板创建了一个JSFIDLE: //导航栏和下拉列表 var toggle=document.getElementsByClassName(

我想从我的引导模板中删除jquery,因为我不使用JS组件。所以我删除了它,并在纯JS中添加了导航栏切换的回退代码(检查附加的JSFIDLE)。 现在我想为导航栏切换设置动画(使用CSS或纯JS)

我尝试使用“最大高度”转换属性。但我不知道最后的高度,因为里面有一个下降。因此,如果我使用一些较大的高度,那么塌陷会延迟

我使用getbootstrap中的示例模板创建了一个JSFIDLE:

//导航栏和下拉列表
var toggle=document.getElementsByClassName('navbar-toggle')[0],
collapse=document.getElementsByClassName('navbar-collapse')[0],
dropdowns=document.getElementsByClassName('dropdown');;
//切换导航栏菜单是否打开或关闭
函数切换菜单(){
collapse.classList.toggle('collapse');
collapse.classList.toggle('in');
}
//关闭所有下拉菜单
函数关闭菜单(){
对于(var j=0;j=768){
关闭菜单();
collapse.classList.add('collapse');
collapse.classList.remove('in');
}
}
//事件侦听器
addEventListener('resize',closeMenusOnResize,false);
toggle.addEventListener('click',toggleMenu,false)

切换导航
    • 导航标题
导航栏示例 此示例是一个快速练习,用于说明默认的静态导航栏和固定到顶部的导航栏是如何工作的。它包括响应性CSS和HTML,因此它也适用于您的视口和设备


我知道这不是我想要的。我在找东西

根据您的需要微调最大高度。而下拉框需要额外的高度才能工作。记住这一点

.navbar-collapse.in 

    max-height: 65em;
JSFiddle:

这将使用立方贝塞尔来微调动画

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">

  <!-- Static navbar -->
  <nav class="navbar navbar-default">
    <div class="container-fluid">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
              <span class="sr-only">Toggle navigation</span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
        <a class="navbar-brand" href="#">Project name</a>
      </div>
      <div id="navbar" class="navbar-collapse collapse">
        <ul class="nav navbar-nav">
          <li class="active"><a href="#">Home</a></li>
          <li><a href="#">About</a></li>
          <li><a href="#">Contact</a></li>
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
            <ul class="dropdown-menu">
              <li><a href="#">Action</a></li>
              <li><a href="#">Another action</a></li>
              <li><a href="#">Something else here</a></li>
              <li role="separator" class="divider"></li>
              <li class="dropdown-header">Nav header</li>
              <li><a href="#">Separated link</a></li>
              <li><a href="#">One more separated link</a></li>
            </ul>
          </li>
        </ul>
        <ul class="nav navbar-nav navbar-right">
          <li class="active"><a href="./">Default <span class="sr-only">(current)</span></a></li>
          <li><a href="../navbar-static-top/">Static top</a></li>
          <li><a href="../navbar-fixed-top/">Fixed top</a></li>
        </ul>
      </div>
      <!--/.nav-collapse -->
    </div>
    <!--/.container-fluid -->
  </nav>

  <!-- Main component for a primary marketing message or call to action -->
  <div class="jumbotron">
    <h1>Navbar example</h1>
    <p>This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.</p>
    <p>
      <a class="btn btn-lg btn-primary" href="../../components/#navbar" role="button">View navbar docs &raquo;</a>
    </p>
  </div>

</div>
<!-- /container -->

切换导航
    • 导航标题
导航栏示例 此示例是一个快速练习,用于说明默认的静态导航栏和固定到顶部的导航栏是如何工作的。它包括响应性CSS和HTML,因此它也适用于您的视口和设备

最后是JS

// Navbar and dropdowns
var toggle = document.getElementsByClassName('navbar-toggle')[0],
  collapse = document.getElementsByClassName('navbar-collapse')[0],
  dropdowns = document.getElementsByClassName('dropdown');;

// Toggle if navbar menu is open or closed
function toggleMenu() {
  collapse.classList.toggle('collapse');
  collapse.classList.toggle('in');
}

// Close all dropdown menus
function closeMenus() {
  for (var j = 0; j < dropdowns.length; j++) {
    dropdowns[j].getElementsByClassName('dropdown-toggle')[0].classList.remove('dropdown-open');
    dropdowns[j].classList.remove('open');
  }
}

// Add click handling to dropdowns
for (var i = 0; i < dropdowns.length; i++) {
  dropdowns[i].addEventListener('click', function() {
    if (document.body.clientWidth < 768) {
      var open = this.classList.contains('open');
      closeMenus();
      if (!open) {
        this.getElementsByClassName('dropdown-toggle')[0].classList.toggle('dropdown-open');
        this.classList.toggle('open');
      }
    }
  });
}

// Close dropdowns when screen becomes big enough to switch to open by hover
function closeMenusOnResize() {
  if (document.body.clientWidth >= 768) {
    closeMenus();
    collapse.classList.add('collapse');
    collapse.classList.remove('in');
  }
}

// Event listeners
window.addEventListener('resize', closeMenusOnResize, false);
toggle.addEventListener('click', toggleMenu, false);
//导航栏和下拉列表
var toggle=document.getElementsByClassName('navbar-toggle')[0],
collapse=document.getElementsByClassName('navbar-collapse')[0],
dropdowns=document.getElementsByClassName('dropdown');;
//切换导航栏菜单是否打开或关闭
函数切换菜单(){
collapse.classList.toggle('collapse');
collapse.classList.toggle('in');
}
//关闭所有下拉菜单
函数关闭菜单(){
对于(var j=0;j=768){
关闭菜单();
collapse.classList.add('collapse');
collapse.classList.remove('in');
}
}
//事件侦听器
addEventListener('resize',closeMenusOnResize,false);
toggle.addEventListener('click',toggleMenu,false);
祝你今天愉快

// Navbar and dropdowns
var toggle = document.getElementsByClassName('navbar-toggle')[0],
  collapse = document.getElementsByClassName('navbar-collapse')[0],
  dropdowns = document.getElementsByClassName('dropdown');;

// Toggle if navbar menu is open or closed
function toggleMenu() {
  collapse.classList.toggle('collapse');
  collapse.classList.toggle('in');
}

// Close all dropdown menus
function closeMenus() {
  for (var j = 0; j < dropdowns.length; j++) {
    dropdowns[j].getElementsByClassName('dropdown-toggle')[0].classList.remove('dropdown-open');
    dropdowns[j].classList.remove('open');
  }
}

// Add click handling to dropdowns
for (var i = 0; i < dropdowns.length; i++) {
  dropdowns[i].addEventListener('click', function() {
    if (document.body.clientWidth < 768) {
      var open = this.classList.contains('open');
      closeMenus();
      if (!open) {
        this.getElementsByClassName('dropdown-toggle')[0].classList.toggle('dropdown-open');
        this.classList.toggle('open');
      }
    }
  });
}

// Close dropdowns when screen becomes big enough to switch to open by hover
function closeMenusOnResize() {
  if (document.body.clientWidth >= 768) {
    closeMenus();
    collapse.classList.add('collapse');
    collapse.classList.remove('in');
  }
}

// Event listeners
window.addEventListener('resize', closeMenusOnResize, false);
toggle.addEventListener('click', toggleMenu, false);