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

标签 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 会根据高度设置动画,但它会在 2 个高度之间来回移动。

    $('.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
                    }

);

最佳答案

我找到了一个解决方案,但并不完全是我想要的,因为我希望有一个非常轻松或动画的幻灯片,但这确实有效

    $('.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 就会延伸到底部。

关于jquery - 用下拉列表框导航展开div和背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22723593/

相关文章:

javascript - 当我点击时 Chrome.storage.onChanged 存储 newValue

jquery - AJAX 仅使用 jQuery 填充最终的 JSON 对象?也使用了 Circliful jQuery 插件

python - 如何在 django-tables2 中调用非模型字段

css - 响应式列表布局

jquery - 在 Google Chrome 中使用 jquery 延迟加载时,动态生成的图像被请求两次

javascript - Jquery AJAX POST 总是以空白页结尾

javascript - 如何使用 JavaScript 获取 HTML Table 中 td 内的链接文本?

html - 为什么人们仍然使用表格、内联 CSS 等?

javascript - 如何在任何屏幕设备上绘制一个 10cmx10cm 的矩形

css - 将 scss 文件添加到 Stackblitz