1

基本的には、slideUp および slideDown 関数を使用して、jquery でドロップダウン メニューを作成しました。リスト内でマウスをホバリングし続けると、サブボタンの高さが止まらないことがわかるまで、すべてがうまくいきました。そして、それはボーダーレフトの拡大に​​よって見ることができます。これを回避する方法はありますか?

皆さんが私が話していることを理解できるように、フィドルを作成しましたhttp://jsfiddle.net/WGm8q/

とにかくここにコードがあります:

JS

$('.button').hover(
    function () {
        $('.sub', this).stop().slideDown(100);
    }, 
    function () {
        $('.sub', this).stop().slideUp(100);
    }
);

CSS

.menu {
    width: 850px;
}
.button .main {
    padding-bottom: 5px;
    cursor: pointer;
}
.button .sub {
    display: none;
    margin-left: 10px;
    padding: 10px 0 10px 0;
    border-left: 1px solid #CCC;
}
.button .sub p {
    background-color: #FFF;
    margin: 0;
    padding-left: 5px;
}

HTML

<div class="menu">
    <div class="button">
        <div class="main">Menu 1</div>
        <div class="sub">                    
            <p>Submenu 1</p>                 
            <p>Submenu 1</p>                 
            <p>Submenu 1</p>                 
            <p>Submenu 1</p>                 
            <p>Submenu 1</p>                 
            <p>Submenu 1</p>                 
            <p>Submenu 1</p>
        </div>
    </div>
</div>
4

2 に答える 2

2

あなたのフィドル

はこれを変更します:

.button .sub {
display: none;
margin-left: 10px;
padding: 10px 0 10px 0;
border-left: 1px solid #CCC;
}

の中へ:

.button .sub {
display: none;
margin-left: 10px;
border-left: 1px solid #CCC;
}
于 2013-02-02T17:22:04.023 に答える
1

この男には、あなたの問題も解決する素晴らしいフィドルがあります。

http://jsfiddle.net/nick_craver/GgdEM/1/

これの問題は、メニューがびくびくすることでした。これが、国境の問題の原因である可能性があると思います(イベントの発火はすべて厄介です)。

重要なのは、再びホバーしたときに自動的にクリアされるタイムアウトを設定することです。

ホバー時にスライドアップとスライドダウンを使用する JQuery ドロップダウン メニューが不安定になる

彼は、各メニュー項目の data 属性を介してこれを行い、各項目が個別に処理されるようにします。

見てみましょう:

$(function () {    
  $('#nav li').hover(function () {
     clearTimeout($.data(this, 'timer'));
     $('ul', this).stop(true, true).slideDown(200);
  }, function () {
    $.data(this, 'timer', setTimeout($.proxy(function() {
      $('ul', this).stop(true, true).slideUp(200);
    }, this), 200));
  });
});

彼のフィドルにも国境の問題はないようですので、おそらく彼のマークアップと css を見てください。

于 2013-02-02T17:30:28.730 に答える