如何在悬停后从下到上显示下拉菜单滑块效果?

时间:2016-09-10 13:24:25

标签: javascript jquery css html5

我在线性悬停后从下到上显示下拉菜单滑块效果,所有下拉文本都应显示左对齐。     我尝试了一些代码,但是当我在第一个菜单上闲逛时,我的第二个菜单显示在右侧。你能帮助我吗?

HTML

<div class="right-menu-bar">
        <ul class="main-menu">
            <li><a href="">Menu</a>
                <ul>
                <li><a href="">menu1 details</a></li>
                <li><a href="">menu1 details</a></li>
                <li><a href="">menu1 details</a></li>
                </ul>
            </li>
<li><a href="">Menu</a>
            <ul>
            <li><a href="">menu1 details</a></li>
            <li><a href="">menu1 details</a></li>
            <li><a href="">menu1 details</a></li>
            </ul>
        </li>
        </ul>
    </div>

CSS

.right-menu-bar ul.main-menu > li
{
    float: left;
    margin: 15px;
    font-size: 16px;
}
li ul
{
    list-style: none;
    background: #3498db;
    z-index: 2;
    font-size: 16px;
    padding:0 ;

}

li ul li
{

    text-transform: capitalize;
}

.main-menu li > ul {
    display:none;

}

.main-menu li:hover > ul {
    display:block;
}


li ul li a{
  text-decoration: none;
  color: #fff;
  padding: 10px 50px;
  display:block;

text-align: left !important;
}

 li ul li a:hover{
  background-color:#5dade2;
  text-decoration: none;
  color: #000;
}

2 个答案:

答案 0 :(得分:0)

您可以将position: absolute;应用于显示的菜单,如下所示:

.main-menu li:hover > ul {
    display:block;
    position: absolute;
}

Working Fiddle

答案 1 :(得分:0)

我认为你的问题是在悬停第一个菜单时停止第二个菜单向右滑动。所以将position:absolute属性添加到下拉菜单以避免第二个菜单滑动。

现在我正在添加sideDown()和slideUp()来显示或隐藏菜单上的下拉列表。请尝试以下代码。

	//Hide and Show The Sub Menus
		$(".jquery-test ul li.menu-list").hover(function(){
			$(this).find('ul').stop().slideDown();
		},function(){
			$(this).find('ul').stop(true,true).slideUp();
		});
.jquery-test ul.menu li.menu-list{display:inline-block;padding-right:20px;}
.jquery-test ul{list-style:none;padding-left:10px;}
.jquery-test ul.menu li.menu-list ul.submenu {display:none;}
.jquery-test ul.menu li.menu-list ul.submenu{position:absolute;}
.jquery-test ul.menu li.menu-list ul.submenu li{position:relative;left:0px;}
.jquery-test ul li a{text-decoration:none;color:#000;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="jquery-test">
	<ul class="menu">
		<li class="menu-list"><a href="#">Menu1</a>
			<ul class="submenu">
				<li><a href="#">Menu1.0</a></li>
				<li><a href="#">Menu1.1</a></li>
				<li><a href="#">Menu1.2</a></li>
				<li><a href="#">Menu1.3</a></li>
			</ul>
		</li>
		<li class="menu-list"><a href="#">Menu2</a>
			<ul class="submenu">
				<li><a href="#">Menu2.1</a></li>
				<li><a href="#">Menu2.2</a></li>
				<li><a href="#">Menu2.3</a></li>
				<li><a href="#">Menu2.4</a></li>
			</ul>
		</li>
		<li class="menu-list"><a href="#">Menu3</a>
			<ul class="submenu">
				<li><a href="#">Menu3.0</a></li>
				<li><a href="#">Menu3.1</a></li>
				<li><a href="#">Menu3.2</a></li>
				<li><a href="#">Menu3.3</a></li>
			</ul>
		</li>
	</ul>