单击时展开导航

时间:2015-03-07 10:59:27

标签: javascript html css

我遇到的问题是当我点击一个按钮时我想要导航扩展,但它现在做的是看起来它有点漂浮在其余部分之上。或者它是在它下面创建的另一个div。

为了更清楚地了解正在发生的事情,我建议您运行该片段,因为我很难解释实际发生的事情。

此问题仅与移动菜单有关。

我也使用bootstrap css,但是onlt效果<div class="container">

我已经尝试解决问题的方法是:

  • 删除了bootstrap css
  • <nav>更改为div元素
  • 将所有职位更改为相对
  • 改变了关于浮动的事情

所以这是我使用的代码中最重要的部分。

/*JS for the hide/show of the menu*/
$(document).ready(function() {
	$(".menu-trigger").click(function() {
		$(".menu").slideToggle(400, function() {
			$(this).toggleClass("nav-expanded").css('display', '');
		});
	});
});
/*JS for the dropdown in the menu*/
$(document).ready(function () {
    $("li").click(function () {
        $('li > ul').not($(this).children("ul").slideToggle()).hide();        
    });
});
body{
    background-color: white;
}
.container{
    background-color: #919191;
    box-shadow: 0px 0px 2px black;
}
nav {
    background: #7D7D7D;
    border-radius: 4px;
    box-shadow: 0px 0px 2px #303030;
    color: #000000;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 15px;
    height: 40px;
    margin: 2px 10px;
}
nav ul, li, a {
    margin: 0;
    padding: 0;
}
nav a, a:link, a:visited, a:hover{
    text-decoration: none;
    color: white;
    display: block;
}
ul > li {
    list-style: none;
    float: left;
}
ul > li a {
    color: #fff;
    font-weight: bold;
    line-height: 40px;
    height:40px;
    display:block;
    padding:0px 10px;
}
nav ul li a:hover{
    border-radius: 4px;
    background: #666666;    
    display: block;
}
nav ul li ul {    
    background: #333333;
    border-radius: 4px;
    box-shadow: 0px 0px 2px #303030;
    display: none;
    position: absolute;
    z-index:100;
}
nav ul li ul li {
    float: none;
    line-height: 40px;
    width: 150px;
}
.menu-trigger{
    display: none;
}
.burger{
    background-color: white;
    display: block;
    width: 22px;
    height: 2px;
    border-radius: 1px;
    margin: 5px auto;
}
@media screen and (max-width: 760px){
    .menu-trigger{
        display: block;
        background-color: #BFBFBF;
        border-radius: 4px;
        box-shadow: 0px 0px 2px #303030;
        height: 35px;
        padding: 5px 5px;
        margin: 3px 10px;
        width: 40px;
    }
    .nav-expanded{
        display: block;
    }
    nav ul{
        display: none;
        background: #7D7D7D;
        border-radius: 0 0 4px 4px; 
    }
    nav ul li{
        float: none;
        padding: 0;
    }
    nav ul li:first-child{
        margin-top: 5px;
    }
    nav ul li ul {    
    background: #7D7D7D;
    box-shadow: none;
    display: none;
    position: relative;
    z-index:0;
    }
    nav ul li ul li {
    line-height: 35px;
    width: 100%;
    }
}
.active{
    border-radius: 4px;
    background-color: #404040;
}
<html>
  <head>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

    <!-- Optional theme -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">		

    <title></title>
  </head>
  <body>
    <div class="container">
      <header>
        <nav>
          <button class="menu-trigger">
            <span class="burger"></span>
            <span class="burger"></span>
            <span class="burger"></span>
          </button>
          <ul class="menu">
            <li class="active"><a href="#">Link</a>
            </li>
            <li><a href="#">Link 2</a>
            </li>
            <li class="dropdown-trigger"><a href="#">Dropdown<span class="caret"></span></a>
              <ul>
                <li><a href="#">Link</a></li>
                <li><a href="#">Link 2</a></li>
                <li><a href="#">Link 3</a></li>
              </ul>
            </li>
            <li><a href="#">Link 3</a>	
          </ul>
        </nav>
      </header>			
    </div>		
    <!-- jQuery -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
  </body>
</html>

提前感谢您的帮助。

如果有些事情不清楚,请询问,也许我可以更清楚。如果帖子有问题我也希望听到。

1 个答案:

答案 0 :(得分:0)

检查演示here

你有一个固定的高度&#34; nav&#34;这是40px,边界半径为4px,这使得它不会扩展,看起来就像一个单独的元素,即使扩展列表在其中。 你需要做的是给它一个自动高度,使它的高度等于所有子元素的高度。

查看演示,如果您只想要这个,请告诉我。