当我们显示子菜单时,如何停止移动html / css / jquery菜单文本?

时间:2014-07-13 17:08:12

标签: jquery html css menu

我已经看到很多关于使菜单显示和消失的问题,我找到了解决这个问题的解决方案,它适用于台式机和平板电脑设备(好吧,无论如何我都试过它),我是用jQuery做的。 toggleClass函数就像一个梦想。

在这个菜单系统中,我有一个“菜单”标签,点击后会显示一个下拉菜单,里面有一些链接。如果再次单击“菜单”标签,则下拉菜单将消失。我遇到的问题是,当您单击“菜单”文本以显示子菜单时,“菜单”一词会向右移动一点。当你点击隐藏菜单它再次移回时,我希望它留在我放在首位的地方!

我认为这是需要调整的CSS部分,并尝试在我认为可行的每个地方使用“左”属性,但无济于事。

我创建了这个jfiddle,但在那里“菜单”这个词甚至没有出现。如果您想查看代码,那么链接为http://jsfiddle.net/wardmw/JpgRP/

网页本身可见,并在此处显示菜单按钮:http://www.widowssons-southeast.org.uk/National/main.html

CSS如下:

#nav {
    padding:0;
    margin:60px 0 0 0;
    vertical-align: text-bottom;
    font-size:18px;
    font-family:'Lucida Sans Unicode';
    text-decoration: none;
    list-style: none;
    display: inline-table;
    position: relative;
    left: -80px;
    z-index:30;
}
/* #nav>li is the "Menu" option itself. There is only one li */
#nav li {
    position:relative;
    font-weight: semibold;
    align: right;
    width:192px;
    line-height:40px;
    padding:0 10px;
    float:right;
    display: inline-table;
    border-right: 0px solid #d8d8d8;
}
#nav ul.sub-nav {
    font-weight: normal;
    background: #efefef;
    background: linear-gradient(top, #efefef 0%, #bbbbbb 100%);
    background: -moz-linear-gradient(top, #efefef 0%, #bbbbbb 100%);
    background: -webkit-linear-gradient(top, #efefef 0%, #bbbbbb 100%);
    box-shadow: 0px 0px 9px rgba(0, 0, 0, 0.15);
    padding: 0 20px;
    border-radius: 10px;
    list-style: none;
    position: relative;
    display: none;
}
#nav ul.visible {
    display: inline-table;
}
#nav ul li {
    border-right: 0px solid #d8d8d8;
    line-height:20px;
    white-space:nowrap;
    margin-bottom:2px;
}
#nav ul li:hover {
    font-weight:bold;
}
#nav ul li a {
color:#132d3c;
font-size:15px;
font-family:'Lucida Sans Unicode';
text-decoration: none;
}

HTML脚本:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"</script>

<script>

$(document).ready(function() {
    $('.parent').click(function() {
        $('.sub-nav').toggleClass('visible');
    });
});

</script>

HTML菜单本身:

<div id="header">
    <div id="menudiv">
        <!-- This is the right-hand of the three columns in the header -->
        <ul id="nav">
            <li class="parent">Menu</li>
            <ul class="sub-nav">
                <li><a href="who.html">Who we are</a>

                </li>
                <li><a href="what.html">What we do</a>

                </li>
                <li><a href="where.html">Where we are</a>

                </li>
                <li><a href="links.html">Who we like</a>

                </li>
            </ul>
        </ul>
    </div>
    <!-- menudiv -->
    <div id="left">
        <!-- This is the left hand of the three columns -->
        <img border="0" src="images/ws-logo.png" width="1" height="1" alt="WSMBA" />
    </div>
    <!-- left -->
    <div id="middle">
        <!-- This is the middle of the three columns -->
    </div>
    <!-- middle -->
</div>
<!-- header -->
<p />Main page text.

我们将非常感激地收到任何建议。

| / |阿廷

1 个答案:

答案 0 :(得分:0)

这是对你的jsfiddle的更新:

http://jsfiddle.net/JpgRP/1/

工作正常。

修改:

#nav ul.visible {
    display: inline-block;
}

并主要删除了float:right,align:right from nav li。