【问题标题】:CSS submenu positioningCSS子菜单定位
【发布时间】:2012-02-15 20:39:30
【问题描述】:

是否可以将第二级广告牌的位置固定在顶部,而不是在悬停时向下移动页面?

代码

HTML

<ul id="nav">
    <li><a href="#">STUFF</a>
        <ul>
            <li><a href="#">STUFF</a>

                <ul>
                    <li>
                        <div><a href="#">LINK LINK ></a></div>
                    </li>
                </ul>
            </li>
            <li><a href="#">STUFF</a>
                <ul>

                    <li>
                        <div><a href="#">LINK LINK ></a></div>
                    </li>
                </ul>
            </li>
            <li><a href="#">STUFF</a>
                <ul>
                    <li>

                        <div><a href="#">LINK LINK ></a></div>
                    </li>
                </ul>
            </li>
            <li><a href="#">STUFF</a>
                <ul>
                    <li>
                        <div><a href="#">LINK LINK ></a></div>

                    </li>
                </ul>
            </li>
            <li><a href="#">STUFF</a>
                <ul>
                    <li>
                        <div>asdasdasd</div>
                    </li>

                </ul>
            </li>
            <li><a href="#">STUFF</a>
                <ul>
                    <li>
                        <div>asdasdasd</div>
                    </li>
                </ul>

            </li>
            <li><a href="#">STUFF</a>
                <ul>
                    <li>
                        <div>asdasdasd</div>
                    </li>
                </ul>
            </li>

        </ul>
    </li>
    <li><a href="#">STUFF</a>
        <ul>
            <li><a href="#">STUFF</a></li>
            <li><a href="#">STUFF</a></li>
        </ul>

    </li>
    <li><a href="#">STUFF</a>
        <ul>
            <li><a href="#">STUFF</a></li>
            <li><a href="#">STUFF</a></li>
        </ul>
    </li>

    <li><a href="#">STUFF</a>
        <ul>
            <li><a href="#">STUFF</a></li>
            <li><a href="#">STUFF</a></li>
        </ul>
    </li>
    <li><a href="#">STUFF</a>

        <ul>
            <li><a href="#">STUFF</a></li>
            <li><a href="#">STUFF</a></li>
        </ul>
    </li>
    <li><a href="#">STUFF</a>
        <ul>

            <li><a href="#">STUFF</a></li>
            <li><a href="#">STUFF</a></li>
        </ul>
    </li>
    <li class="navblue"><a href="#">STUFF</a>
        <ul>
            <li><a href="STUFF">STUFF</a></li>

            <li><a href="STUFF">STUFF</a></li>
        </ul>
    </li>
    <li class="navorange"><a href="STUFF">STUFF</a></li>
</ul>​

CSS

body {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size:   12px;
    color:       #000000;
}

#nav, #nav ul {
    list-style-type:     none;
    list-style-position: outside;
    position:            relative;
    line-height:         30px;
    margin:              0;
    padding:             0;
}

#nav li > a {
    font-weight:      bold;
    display:          block;
    margin-top:       -1px;
    color:            #fff;
    text-decoration:  none;
    background-color: #008000;
    padding:          0 10px;
    width:            99px;
    border-bottom:    1px solid #FFFFFF;
}

#nav li > a:hover {
    background-color: #99CC00;
    color:            #000;
}

#nav li {
    float:        left;
    position:     relative;
    margin-right: 1px;
}

#nav ul {
    position: absolute;
    display:  none;
    width:    12em;
    top:      2.5em;
}

#nav li ul a {
    width:       160px;
    height:      auto;
    float:       left;
    line-height: 30px;
    font-size:   12px;
    font-weight: normal;
}

#nav ul ul {
    top: auto;
}

#nav ul ul {
    height:           299px;
    width:            652px;
    margin:           0;
    padding:          0;
    background-color: #999999;
}

#nav ul ul li {
    padding: 20px;
}

#nav li.navblue a {
    background-color: #3398CC;
}

#nav li.navorange a {
    background-color: #FF9A02;
    color:            #FEFF00;
}

#nav li ul ul {
    left:        14.9em;
    margin-left: -2px;
}

#nav li:hover ul ul, #nav li:hover ul ul ul, #nav li:hover ul ul ul ul {
    display: none
}

#nav li:hover ul, #nav li li:hover ul, #nav li li li:hover ul, #nav li li li li:hover ul {
    display: block
}​

JavaScript/jQuery

window.addEvent('load', function () {
    function mainmenu() {
        $("#nav ul").css({display:"none"}); // Opera Fix
        $("#nav li").hover(function () {
            $(this).find('ul:first').css({visibility:"visible", display:"none"}).show(0);
        }, function () {
            $(this).find('ul:first').css({visibility:"hidden"});
        });
    }

    $(document).ready(function () {
        mainmenu();
    });
})​

Live Example

【问题讨论】:

  • 请将您的代码添加到 www.jsfiddle.net 以便我们可以看到现场演示而不是使用 paste
  • 请创建一个有限的问题示例测试用例,并将代码粘贴到您的问题正文中。如果您使用 jsfiddle.net 也会有所帮助

标签: css menu navigation drop-down-menu position


【解决方案1】:

用这个替换你当前的 css:

<style type='text/css'>
body {font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;color:#000000;}
#nav,#nav ul{list-style-type:none;list-style-position:outside;position:relative;line-height:30px;margin:0;padding:0;}
#nav li > a{font-weight:bold;display:block;margin-top:-1px;color:#fff;text-decoration:none;background-color:#008000;padding:0 10px;width:99px;border-bottom:1px solid #FFFFFF;}
#nav li > a:hover{background-color:#99CC00;color:#000;}
#nav li{float:left;margin-right:1px;}
#nav ul{position:absolute;display:none;width:12em;top:2.5em;}
#nav li ul a{width:160px;height:auto;float:left;line-height:30px;font-size:12px;font-weight:normal;}
#nav ul ul{top:0;}
#nav ul ul {height:299px;width:652px;margin:0;padding:0;background-color:#999999;}
#nav ul ul li {padding:20px;}
#nav li.navblue a{background-color:#3398CC;}
#nav li.navorange a{background-color:#FF9A02;color:#FEFF00;}
#nav li ul ul{left:14.9em;margin-left:-2px;}
#nav li:hover ul ul,#nav li:hover ul ul ul,#nav li:hover ul ul ul ul{display:none}
#nav li:hover ul,#nav li li:hover ul,#nav li li li:hover ul,#nav li li li li:hover ul{display:block}
</style>

更改:从#nav li 和位置#nav ul ul top:0 中删除相对位置

【讨论】:

  • 谢谢!我正打算走更长的路来创建课程和玩定位。
  • 使用这种方法我可以在哪里破坏广告牌中链接的继承?他们正在使用下拉菜单中的 160 宽度
  • 请注意,如果您使用上述方法,您可能会遇到长列表的界面问题。当您将鼠标悬停在“广告牌”底部下方的列表项上时,您将无法导航到“第二级广告牌”。您将失去在父列表项上的悬停,并且“广告牌”将消失。请参阅jsfiddle.net/pEdaE/1 作为我的意思的示例。
  • 没关系。我不打算让它超过 8 件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 2014-03-05
  • 2011-09-05
相关资源
最近更新 更多