使用下拉列表框导航展开div和背景

时间:2014-03-28 21:34:38

标签: jquery html css

我有一个位于页面顶部的菜单。 div的背景为黑色,不透明度为50%。当鼠标悬停在列表上时,它会触发一个下拉子菜单。子菜单由一个淡入淡出函数运行。我想扩展div的背景,当子菜单出现时,它会随子菜单向下滑动,我知道我可以给子菜单一个背景,但是我希望div的背景能够扩展,以便它填充页面,达到子菜单占用的数量,但是在你离开悬停后返回。

这是我的子菜单悬停功能。我在想可以添加一些东西来改变div的风格。

$('.nav li, .subTopMenu li').hover(
    // When mouse enters the .navigation element
    function () {
        //Fade in the navigation submenu
        $('ul', this).fadeIn();     // fadeIn will show the sub cat menu
    },
    // When mouse leaves the .navigation element
    function () {
        //Fade out the navigation submenu
        $('ul', this).fadeOut();     // fadeOut will hide the sub cat menu
    }

);

div和list就是这样的html;

<div class="topMenu">
<a href="#"><img      src="images/logo-small.png"></a>
<ul class="subTopMenu">
<li class="noHover"><a href="#">Link1</a>
<ul>
<li><a href="#" id="navclick" data-iclick="tAbout">ABOUT US</a></li>
<li><a href="#" id="navclick" data-iclick="tHistory" data-bgsrc="images/history.jpg">HISTORY</a></li>
<li><a href="#">OUR BOARD</a></li>
<li><a href="#">CONTRIBUTE</a></li>
</ul>
</li>
<li class="noHover"><a href="#">Link2</a>
<ul>
<li><a href="#">SHOP</a></li>
<li><a href="#">EAT</a></li>
<li><a href="#">DRINK</a></li>
<li><a href="#">JOIN</a></li>
</ul>
</li>
<li class="noHover"><a href="#">Link3</a>
<ul>
<li><a href="#">MUSIC</a></li>
<li><a href="#">ART</a></li>
<li><a href="#">FESTIVALS</a></li>
<li><a href="#">LECTURES</a></li>
</ul>
</li>
<li class="noHover"><a href="#">Link4</a>
<ul>
<li><a href="#">WHEN & WHERE</a></li>
<li><a href="#">REGISTER</a></li>
<li><a href="#">VOLUNTEER</a></li>
<li><a href="#">SPONSOR</a></li>
<li><a href="#">GALLERY</a></li>
</ul>
</li>
</ul>
</div>

div的格式为css;

.topMenu
{
 display:none;
 top:0px;
 position:relative;
 padding:10px;
 background-color:rgba(0,0,0,0.5);
 text-align:center;
}
.topMenu li
{
display:inline;
position:relative;
text-align:center;
}

我在想这样的事情,使用jqueryUi效果调整div的大小,但它似乎并没有削减它。 div动画到高度,但它在两个高度之间来回传递。

    $('.noHover').mouseover(
    function () {
        //Increase the size of the topMenu div
            $('.topMenu').animate({height: '200'},'slow');
            });
    $('.subTopMenu').mouseout(
            function(){
                    $('.topMenu').animate({height: '90'},'slow');
            });
        $('.nav li, .subTopMenu li').hover(
    // When mouse enters the .navigation element
    function () {
        //Fade in the navigation submenu
        $('ul', this).fadeIn();     // fadeIn will show the sub cat menu
            },
    // When mouse leaves the .navigation element
    function () {
        //Fade out the navigation submenu
        $('ul', this).fadeOut();     // fadeOut will hide the sub cat menu
                    }

);

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,而不是我想要的解决方案,因为我希望有一个很好的缓和或动画幻灯片,但这可以解决问题

    $('.noHover').mouseover(
function () {
  var navht = $(this).attr('data-navht');
    //Increase the size of the topMenu div
        $('.topMenu').css('height', navht);
        });
$('.subTopMenu').mouseout(
function(){
  $('.topMenu').css("height", "90px");
});

我还添加了data-navht的属性,因此我可以根据子菜单中子项的总数设置高度,以便div扩展到底部。