jQuery:给下拉菜单一个高度

时间:2014-10-21 17:08:08

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

我正在使用jQuery在打开时为下拉菜单提供一个高度,因此当菜单下拉时它可以按下它下面的内容。但是高度太高(102px);我认为它应该更像50px,但它似乎给菜单增加了一个高度,我似乎没有找出原因。我希望高度只是文本的高度,下面没有空白区域。

jQuery的:

$(document).on('click', '#navpanel .mainnav a[href^="/#"]', function(e) {
    if ($(this).parent('li').hasClass('expanded')) {
        $(this).siblings('ul').css('display', 'block').slideDown('linear', function() {
            $(this).parent('li').toggleClass('expanded');

        });
    } else {
        $(this).siblings('ul').css('display', 'none').slideUp('linear', function() {
            $(this).parent('li').toggleClass('expanded');
        });
    }
    var objHeight = 0;
    $.each($('ul.tier1').children(), function() {
        objHeight += $(this).height();
    });
    $('ul.tier1').height(objHeight);
});

HTML:

<div class="mainnav">
    <ul class="tier1">
        <li id="blog">blog</li>
        <li class="">
            <a class="tier1title" href="/collections/newarrivals">New Arrivals</a>
        </li>
        <li class="">
            <a class="tier1title" href="/#">Categories</a>
            <ul class="tier2">
                <li class="">
                    <a href="/collections/knits">Knits</a>
                </li>
                <li class="">
                    <a href="/collections/tops">Tops</a>
                </li>
                <li class="">
                    <a href="/collections/dresses">Dresses</a>
                </li>
                <li class="">
                    <a href="/collections/bottoms">Bottoms</a>
                </li>
                . . .
                <li class="">
                    <a class="tier1title" href="/collections/sale">Sale</a>
                </li>
                <li class="registerform">
                    ...
                </li>
            </ul>
        </li>
    </ul>
</div>

CSS

  #navbar #navpanel .mainnav > ul > .active > ul {
    display:block;
    text-align:center;
  }

  #navbar .mainnav > ul > li {
  display: block;
  }

  #navbar #navpanel .mainnav ul.tier1 {
    padding:0;
    margin:0;
    border:0;
    outline:0;
  }

  #navbar #navpanel .mainnav ul.tier1 > li {
    font-size:13px;
    font-family: 'TradeGothicLTStdCnNo.18';
    padding:0 9px;
  }

  #navbar #navpanel .mainnav ul.tier1 > li:first-child {
    padding-right:80px;
    position:relative;
    left:-10px;
  }

  #navbar #navpanel .mainnav ul.tier1 > li:last-child {
    padding:0;
  }

  #navbar #navpanel .mainnav li li {
    text-align:center;
  }

  #navbar #navpanel .mainnav li ul {
    display:none;
  }

  #navbar #navpanel .mainnav ul.tier2 {
    position:absolute;
    height:auto;
    width:600px;
    left: 0;
    right: 0;
    font-size:11px;
    margin:12px auto 0 auto;
  }

  #navbar #navpanel .mainnav ul.tier2 li {
    padding-right:12px;
  }

2 个答案:

答案 0 :(得分:0)

是您的边距,填充,边框,轮廓设置为0?

尝试:

$('ul.tier1').css('padding', '0');

$('ul.tier1').css('margin', '0');

$('ul.tier1').css('border', '0');

$('ul.tier1').css('outline', '0');
通过这种方式,它不会神奇地增加额外的高度。

答案 1 :(得分:0)

最好在css的第一行添加此代码以执行您想要的所有操作,而无需浏览器放入网页不同部分的填充和边距。

的CSS:

* {margin:0; padding:0;}