【问题标题】:PLEASE help me make this drop down menu work properly请帮助我使这个下拉菜单正常工作
【发布时间】:2015-12-04 02:34:15
【问题描述】:

好的,所以我之前问过类似的问题,但我得到的答案非常复杂,即使在尝试将其集成到 laravel 网站 2 小时后它也不起作用。现在我知道这看起来很冗长,但实际上并非如此。我只是难以用几句话表达自己。

如果有人能帮我解决这个问题,我将不胜感激(请参阅小提琴):http://jsfiddle.net/pyrot/NaE43/ 以便它正常工作(我在下面提到了问题)。

目前我使用了 jquery 的可怜知识,如果有人可以帮助我使其正常运行,我现在必须一起破解它,同时仍然很简单,非常感谢。

当有人将鼠标悬停在带有以下链接的“查看更多”链接上时,我试图给它一个很酷的向下滑动过渡:“广告、销售、加入”以及每当有人悬停在这三个链接中的任何一个上时(请将鼠标悬停在小提琴中的“广告”链接上)应该会出现另一个下拉框,但这次在右侧带有幻灯片打开过渡。当我从“查看更多”链接移动鼠标时,我也在努力如何使下拉菜单不消失。我为第一个下拉框做了这件事,不专业地将其边距靠近“查看更多”链接,而对于第二个下拉框(右侧),当我尝试访问它时,它像魔术一样消失了.老实说,我在这方面花了很多时间,但我就是无法让它发挥作用。请帮帮我!

这是我的导航:

<ul id="parent-ul">
    <li><a href="#">home</a></li>
        <li><a href="#">about</a></li>
        <li><a href="#">brands</a></li>

    <li><a href="#" class="view-drop">view more</a>        
        <span class="view-drop-content">
            <ul>
                <li><a href="#" class="v-d-link-one">Ads</a></li>
                <li><a href="#" class="v-d-link-two">sell</a></li>
                <li><a href="#" class="v-d-link-three">Join</a></li>
            </ul>
        </span>

        <span class="view-drop-content-two">
            <ul>
                <li><a href="#">link 1</a></li>
                <li><a href="#">link 2</a></li>
                <li><a href="#">link 3</a></li>
            </ul>
        </span>
        </li>

        <li><a href="#">LINK 4</a></li>
        <li><a href="#">LINK 5</a></li>
</ul>

这是我的代码:

 $(document).ready(function() {

    $(".view-drop, .view-drop-content").hover(function(){
         $('.view-drop-content').show();
    }, function(){
           $('.view-drop-content').hide();
    }) ;

 });

$(document).ready(function() {

    $(".v-d-link-one, .view-drop-content-two").hover(function(){
         $('.view-drop-content-two').show();
    }, function(){
           $('.view-drop-content-two').hide();
    }) ;

 });

这是我的 CSS:

#parent-ul li {
    display: inline !important;
    list-style-type:none !important;
    padding-right: 5px
}

.view-drop-content {

    display: none;
    background-color: #000000;
    width: auto;
    height: auto;
    position: absolute;
    margin: 15px auto 0px -65px;
    z-index: 10;
    float: left;
    border: 4px #84ca40 solid;
    border: 2px #84ca40 solid !important;
    border-radius: 5px;
    overflow: hidden;
    padding: 0px !important;
    text-indent: -30px;

}

.view-drop-content-two {

    display: none;
    background-color: #000000;
    width: auto;
    height: auto;
    position: absolute;
    margin: 15px auto 0px 0px;
    z-index: 10;
    float: right;
    border: 4px #84ca40 solid;
    border: 2px #84ca40 solid !important;
    border-radius: 5px;
    overflow: hidden;
    padding: 0px !important;
    text-indent: -30px;

}

.view-drop-content > ul li a,
.view-drop-content-two > ul li a {

    color: #ffffff;
    display: block;
    text-align: left;
    width: 100%;
    height: auto;

}

【问题讨论】:

  • Instaed 尝试MouseEnter/MouseLeave/MouseOver 事件。
  • 我在大约四 (4) 小时前尝试使用它,但我家门口出现了更多问题。顺便感谢您的回复 Ankur140290。
  • 您应该指定“类似问题”,以便我们可以检查其答案,看看这是否真的是重复的。并且反复喊“请”并没有真正的帮助。

标签: javascript jquery html css drop-down-menu


【解决方案1】:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script>
$(document).ready(function() {

$(".view-drop").hover(function(){
     $('.view-drop-content').slideDown().delay( 800 );

}, function(){
       $('.view-drop-content').slideUp().delay( 800 );
}) ;

$(".view-drop-content ul li").hover(function(){
    $('.view-drop-content').css("display","inline");            
     $('.view-drop-content-two').slideDown().delay( 400 );

}, function(){
       $('.view-drop-content-two').slideUp().delay( 400 );
}) ;




 })

</script>
<style type="text/css">
#parent-ul li {
    display: inline !important;
    list-style-type:none !important;
    padding-right: 5px
}

.view-drop-content {

    display: none;
    background-color: #000000;
    width: auto;
    height: auto;
    position: absolute;
    margin: 20px auto 0px -65px;
    z-index: 10;
    float: left;
    border: 4px #84ca40 solid;
    border: 2px #84ca40 solid !important;
    border-radius: 5px;
    overflow: hidden;
    padding: 0px !important;
    text-indent: -30px;

}

.view-drop-content-two {

    display: none;
    background-color: #000000;
    width: auto;
    height: auto;
    position: absolute;
    margin: 15px auto 0px 0px;
    z-index: 10;
    float: right;
    border: 4px #84ca40 solid;
    border: 2px #84ca40 solid !important;
    border-radius: 5px;
    overflow: hidden;
    padding: 0px !important;
    text-indent: -30px;

}

.view-drop-content > ul li a,
.view-drop-content-two > ul li a {

    color: #ffffff;
    display: block;
    text-align: left;
    width: 100%;
    height: auto;

}
</style>
</head>
<body>
<ul id="parent-ul">
    <li><a href="#">home<a></li>
    <li><a href="#">about<a></li>
    <li><a href="#">brands<a></li>

    <li class="view-drop"><a href="#" >view more</a>        
        <span class="view-drop-content">
            <ul>
                <li><a href="#" class="v-d-link">Ads</a></li>
                <li><a href="#" class="v-d-link">sell</a></li>
                <li><a href="#" class="v-d-link">Join</a></li>
            </ul>
        </span>

        <span class="view-drop-content-two">
            <ul>
                <li><a href="#">link 1</a></li>
                <li><a href="#">link 2</a></li>
                <li><a href="#">link 3</a></li>
            </ul>
        </span>
        </li>

<li><a href="#">LINK 4<a></li>
<li><a href="#">LINK 5<a></li>
</ul>
</body>

【讨论】:

  • 好的,Rakesh Godhala,感谢您的回复,但是当我这样做时,它会不停地制作动画。
  • 你需要适当调整css。
  • 添加延迟会延迟触发的jquery事件数。因此,这将减少该时间间隔内的 sideup 和 slideDown 事件的数量
  • 正确的意思是使下拉框之间没有边距,对吗?但是在我想获得一些帮助的那个中,下拉框之间会有一点边距。
  • 好的。添加延迟将非常聪明。谢谢。嘿,Rakesh Godhala,这东西不能按照我想要的方式修复吗?你看,因为它来自我未经训练的头脑的阴暗深处,我想知道这是否只是一个失败的事业。
【解决方案2】:

试试这个FIDDLE

$(document).ready(function () {
    $(".view-drop, .view-drop-content").mouseover(function () {
        $('.view-drop-content').show();
    });
    $(".view-drop-content-two, .v-d-link-one").mouseover(function () {
        $('.view-drop-content').show();
        $('.view-drop-content-two').show();
    });
    $(".view-drop-content-two").mouseleave(function () {
        $('.view-drop-content').hide();
        $('.view-drop-content-two').hide();
    });
    $(".view-drop, .view-drop-content").mouseleave(function () {
        $('.view-drop-content').hide();
        $('.view-drop-content-two').hide();
    });
});

在您的 HTML &lt;span&gt; 标签中做了一个小改动:
我为班级view-drop-content-two添加了style="margin-left:-2%;"

【讨论】:

  • 感谢您抽出宝贵时间帮助我解决问题,但这和我的小提琴一样。
  • 是这样吗? @user3140116 它在我的情况下很好用,我用 Chrome 和 Mozi 进行了检查
  • 并不是我把style="margin-left:-2%;"换成了view-drop-content-two
  • 现在显示得更好了。在 Firefox 中检查了它,但是您做了与我相同的事情,以确保边距非常接近,这样当您从启动整个下拉菜单的链接移动时它们不会消失。我真的在寻找即使将鼠标从启动下拉过程的链接上移开也能保持显示的东西。
【解决方案3】:

这里是创建 CSS 下拉菜单的简单教程

TUTORIAL

【讨论】:

  • Rahul G Nair,谢谢,我已经为该链接添加了书签,但我真的希望对此有所帮助。现在我并不想听起来忘恩负义之类的。我真的很想在修复 jsfiddle 中的脚本方面获得一些帮助。
【解决方案4】:

我认为,你可以只在 CSS 中实现它,你需要稍微改变你的标记和 css of course。这是演示:

HTML:

<ul id="menu">
    <li><a href="#">home</a></li>
    <li><a href="#">about</a></li>
    <li><a href="#">brands</a></li>        
    <li>
        <a href="#">VIEW MORE</a>        
        <ul>
            <li>
                <a href="#">Ads</a>
                <ul>
                    <li><a href="#">link 1</a></li>
                    <li><a href="#">link 2</a></li>
                    <li><a href="#">link 3</a></li>
                </ul>
            </li>
            <li><a href="#">sell</a></li>
            <li><a href="#">Join</a></li>
        </ul>
    </li>
    <li><a href="#">link 4</a></li>
    <li><a href="#">link 5</a></li>
</ul>

CSS:

*{margin:0; padding:0}
#menu > li {
    float:left;
    list-style-type:none;
    padding-right: 5px;
    position:relative;
    z-index:10;
}

#menu li ul{
    display:none;
    background:#000;
    border: 1px #84ca40 solid;
    position:absolute;
    top:20px;
    left:0;
    width:80px;
}
#menu li:hover > ul{
    display:block;
}
#menu li li ul{
    padding:0;
    top:0;
    left:80px;
}
#menu li li{
    display:block;
    padding:10px;
}
#menu li li:hover{
    background:#333;
}

jsfiddle: http://jsfiddle.net/ashishanexpert/NaE43/24/

看,不需要 javascript 或 jQuery。如果你想要一些动画,那么你应该使用 jQuery。祝你好运!

【讨论】:

  • 我真的很感激这个 Ashish Kumar 并会调查它,但我真的很想得到一些帮助,我在描述中给出了一个固定版本的小提琴,虽然我不甚至知道我的方法是否有可能被修复。再次感谢。
  • 我只是你的小提琴。我已经修改了你的一些标记和 css,因为不需要 js,所以删除了。
  • 好的,但是因为链接和下拉框之间会有一点边距,而且动画 css 对我来说并不理想。
  • 只能在 css 中更改边距和间隙。如果关于动画,它是你的选择。!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
相关资源
最近更新 更多