ブートストラップメニューをメニュータイトルをクリックするのではなく、カーソルを合わせると自動的にドロップダウンしたいのですが。メニュータイトルの横にある小さな矢印も失いたいと思います。
ブートストラップメニューをメニュータイトルをクリックするのではなく、カーソルを合わせると自動的にドロップダウンしたいのですが。メニュータイトルの横にある小さな矢印も失いたいと思います。
回答:
複数のサブメニューをサポートする最新の(v2.0.2)Bootstrapフレームワークに基づいて、純粋なホバードロップダウンメニューを作成し、将来のユーザーのために投稿すると思いました。
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
.dropdown-menu .sub-menu {
left: 100%;
position: absolute;
top: 0;
visibility: hidden;
margin-top: -1px;
}
.dropdown-menu li:hover .sub-menu {
visibility: visible;
}
.dropdown:hover .dropdown-menu {
display: block;
}
.nav-tabs .dropdown-menu,
.nav-pills .dropdown-menu,
.navbar .dropdown-menu {
margin-top: 0;
}
.navbar .sub-menu:before {
border-bottom: 7px solid transparent;
border-left: none;
border-right: 7px solid rgba(0, 0, 0, 0.2);
border-top: 7px solid transparent;
left: -7px;
top: 10px;
}
.navbar .sub-menu:after {
border-top: 6px solid transparent;
border-left: none;
border-right: 6px solid #fff;
border-bottom: 6px solid transparent;
left: 10px;
top: 11px;
left: -6px;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet" />
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a href="#" class="brand">Project name</a>
<div class="nav-collapse">
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a data-toggle="dropdown" class="dropdown-toggle" href="#">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<a href="#">2-level Dropdown <i class="icon-arrow-right"></i></a>
<ul class="dropdown-menu sub-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="nav-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="nav-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>
<form action="" class="navbar-search pull-left">
<input type="text" placeholder="Search" class="search-query span2">
</form>
<ul class="nav pull-right">
<li><a href="#">Link</a></li>
<li class="divider-vertical"></li>
<li class="dropdown">
<a class="#" href="#">Menu</a>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
</div>
</div>
<hr>
<ul class="nav nav-pills">
<li class="active"><a href="#">Regular link</a></li>
<li class="dropdown">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu" id="menu1">
<li>
<a href="#">2-level Menu <i class="icon-arrow-right"></i></a>
<ul class="dropdown-menu sub-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="nav-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#">Menu</a>
</li>
<li class="dropdown">
<a href="#">Menu</a>
</li>
</ul>
class="dropdown-toggle" data-toggle="dropdown"
、クリックではなくホバーのみがメニューをトリガーするように削除しました。レスポンシブスタイルを使用している場合でも、メニューは右上にある小さなボタンにスイープされ、クリックによってトリガーされます。本当にありがとう!
@media (min-width: 768px) {.dropdown-menu li:hover .sub-menu {visibility: visible;}}
と@media (min-width: 768px) {.dropdown:hover .dropdown-menu {display: block;}}
メニューをホバーに自動的にドロップするには、基本的なCSSを使用してこれを実現できます。セレクターを非表示のメニューオプションに設定し、適切なli
タグがホバーされたときにブロックとして表示するように設定する必要があります。twitterのブートストラップページから例をとると、セレクターは次のようになります。
ul.nav li.dropdown:hover > ul.dropdown-menu {
display: block;
}
ただし、Bootstrapのレスポンシブ機能を使用している場合、折りたたまれたナビゲーションバー(小さい画面)ではこの機能は必要ありません。これを回避するには、上記のコードをメディアクエリでラップします。
@media (min-width: 979px) {
ul.nav li.dropdown:hover > ul.dropdown-menu {
display: block;
}
}
矢印(キャレット)を非表示にするには、Twitter Bootstrapバージョン2以下を使用しているか、バージョン3を使用しているかに応じて、さまざまな方法でこれを行います。
ブートストラップ3
バージョン3でキャレットを削除するには<b class="caret"></b>
、.dropdown-toggle
アンカー要素からHTMLを削除するだけです。
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
Dropdown
<b class="caret"></b> <-- remove this line
</a>
ブートストラップ2以下
バージョン2でキャレットを削除するには、CSSについてもう少し洞察が必要:after
です。疑似要素がどのように機能するかをさらに詳しく調べることをお勧めします。twitterブートストラップの例で矢印をターゲットにして削除するための理解を深めるには、次のCSSセレクターとコードを使用します。
a.menu:after, .dropdown-toggle:after {
content: none;
}
これらがどのように機能するかをさらに詳しく調べて、私があなたに与えた答えだけを使用するのではない場合、それはあなたに有利に働きます。
サブメニューが親ホバーに表示されないようにするための ">"子コンビネーターが欠落していたことを指摘してくれた@CocaAkatに感謝
margin: 0;
、を追加する必要がありました。追加しない場合、上記の1ピクセルのマージン.dropdown-menu
によりバグが発生します。
data-toggle="dropdown"
属性を削除する必要があります。
「私の頭が痛い」からの答えに加えて(それは素晴らしかった):
ul.nav li.dropdown:hover ul.dropdown-menu{
display: block;
}
次の2つの問題があります。
(1)の解決策は、navリンクから「class」および「data-toggle」要素を削除することです
<a href="#">
Dropdown
<b class="caret"></b>
</a>
これにより、親ページへのリンクを作成することもできます。これは、デフォルトの実装では不可能でした。「#」は、ユーザーに送信するページに置き換えることができます。
(2)の解決策は、.dropdown-menuセレクターのmargin-topを削除することです
.navbar .dropdown-menu {
margin-top: 0px;
}
data-toggle="dropdown"
属性を削除しましたが、機能しているようです。
.nav-pills .dropdown-menu { margin-top: 0px; }
私はjQueryを少し使用しました:
// Add hover effect to menus
jQuery('ul.nav li.dropdown').hover(function() {
jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn();
}, function() {
jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut();
});
$('ul.nav li.dropdown').hover(function() { $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn(); }, function() { $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut().hover(function() { $(this).stop(true, true); }); });
:サブメニューがホバーストップの場合、フェードアウト
ここには本当に良い解決策がたくさんあります。しかし、私は先に進んで、別の選択肢としてここに私のものを置くと思いました。クリックするだけでなく、ドロップダウンのホバーをサポートする場合にブートストラップが行う方法と同じように、これは単純なjQueryスニペットです。これはバージョン3でのみテストしたので、バージョン2で動作するかどうかはわかりません。エディターでスニペットとして保存し、キーを押すだけで使用できます。
<script>
$(function() {
$(".dropdown").hover(
function(){ $(this).addClass('open') },
function(){ $(this).removeClass('open') }
);
});
</script>
基本的には、ドロップダウンクラスにカーソルを合わせると、オープンクラスが追加されます。その後、それはうまくいきます。ドロップダウンクラスの親liまたは子ul / liのホバーを停止すると、開いているクラスが削除されます。明らかに、これは多くのソリューションの1つにすぎず、.dropdownの特定のインスタンスでのみ機能するように追加できます。または、親または子に遷移を追加します。
次のdropdown
ようなクラスの要素がある場合(例):
<ul class="list-unstyled list-inline">
<li class="dropdown">
<a data-toggle="dropdown" href="#"><i class="fa fa-bars"></i> Dropdown 1</a>
<ul class="dropdown-menu">
<li><a href="">Item 1</a></li>
<li><a href="">Item 2</a></li>
<li><a href="">Item 3</a></li>
<li><a href="">Item 4</a></li>
<li><a href="">Item 5</a></li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#"><i class="fa fa-user"></i> Dropdown 2</a>
<ul class="dropdown-menu">
<li><a href="">Item A</a></li>
<li><a href="">Item B</a></li>
<li><a href="">Item C</a></li>
<li><a href="">Item D</a></li>
<li><a href="">Item E</a></li>
</ul>
</li>
</ul>
次に、jQueryコードの次のスニペットを使用することにより、タイトルをクリックする必要がなく、ホバーオーバー時にドロップダウンメニューを自動的にドロップダウンさせることができます。
<script>
$('.dropdown').hover(
function() {
$(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn();
},
function() {
$(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut();
}
);
$('.dropdown-menu').hover(
function() {
$(this).stop(true, true);
},
function() {
$(this).stop(true, true).delay(200).fadeOut();
}
);
</script>
この回答は@Michaelの回答に依存していました。ドロップダウンメニューが適切に機能するように、いくつかの変更と追加を行いました。
[更新]プラグインはGitHubにありますあり、いくつかの改善に取り組んでいます(データ属性でのみ使用する(JSは不要)など)。コードは以下に残しておきますが、GitHubにあるものとは異なります。
私は純粋にCSSバージョンが好きでしたが、閉じる前に遅延があるといいです。通常、それはユーザーエクスペリエンスが優れている(つまり、ドロップダウンから1ピクセル外に出るマウススリップなどに罰せられない)と、コメントで述べたとおりです。 、対処する必要のある1pxのマージンがあるか、元のボタンからドロップダウンに移動しているときにナビゲーションが予期せず閉じる場合があります。
いくつかのサイトで使用した小さな小さなプラグインを作成しましたが、うまく機能しました。各ナビゲーション項目は個別に処理されるため、独自の遅延タイマーなどがあります。
JS
// outside the scope of the jQuery plugin to
// keep track of all dropdowns
var $allDropdowns = $();
// if instantlyCloseOthers is true, then it will instantly
// shut other nav items when a new one is hovered over
$.fn.dropdownHover = function(options) {
// the element we really care about
// is the dropdown-toggle's parent
$allDropdowns = $allDropdowns.add(this.parent());
return this.each(function() {
var $this = $(this).parent(),
defaults = {
delay: 500,
instantlyCloseOthers: true
},
data = {
delay: $(this).data('delay'),
instantlyCloseOthers: $(this).data('close-others')
},
options = $.extend(true, {}, defaults, options, data),
timeout;
$this.hover(function() {
if(options.instantlyCloseOthers === true)
$allDropdowns.removeClass('open');
window.clearTimeout(timeout);
$(this).addClass('open');
}, function() {
timeout = window.setTimeout(function() {
$this.removeClass('open');
}, options.delay);
});
});
};
delay
パラメータはかなり自明です、とinstantlyCloseOthers
ときにホバー新しい1以上開いています瞬時に近い他のすべてのドロップダウン。
純粋なCSSではありませんが、うまくいけば、この遅い時間に他の人を助けてくれるでしょう(つまり、これは古いスレッドです)。
必要に応じて、#concrete5
この要点のさまざまな手順で動作するように(IRCのディスカッションで)実行したさまざまなプロセスを確認できます:https : //gist.github.com/3876924
プラグインパターンアプローチは、個々のタイマーなどをサポートするのにはるかにクリーンです。
詳細については、ブログ投稿を参照してください。
これは私のために働きました:
.dropdown:hover .dropdown-menu {
display: block;
}
jQueryでさらに良く:
jQuery('ul.nav li.dropdown').hover(function() {
jQuery(this).find('.dropdown-menu').stop(true, true).show();
jQuery(this).addClass('open');
}, function() {
jQuery(this).find('.dropdown-menu').stop(true, true).hide();
jQuery(this).removeClass('open');
});
jQuery('ul.nav li.dropdown').hover(function() { jQuery(this).closest('.dropdown-menu').stop(true, true).show(); jQuery(this).addClass('open'); }, function() { jQuery(this).closest('.dropdown-menu').stop(true, true).hide(); jQuery(this).removeClass('open'); });
サブメニューがホバーに表示されないようにコードを変更しました。
追加したいのは、(私がするように)複数のドロップダウンがある場合は、次のように記述することです。
ul.nav li.dropdown:hover > ul.dropdown-menu {
display: block;
}
そして、それは適切に動作します。
margin: 2px 0 0;
、上からの遅いmouseEnterがメニューを時期尚早に隠してしまうことを意味していました。 ul.dropdown-menu{ margin-top: 0; }
私の意見では、最良の方法は次のとおりです:
;(function($, window, undefined) {
// Outside the scope of the jQuery plugin to
// keep track of all dropdowns
var $allDropdowns = $();
// If instantlyCloseOthers is true, then it will instantly
// shut other nav items when a new one is hovered over
$.fn.dropdownHover = function(options) {
// The element we really care about
// is the dropdown-toggle's parent
$allDropdowns = $allDropdowns.add(this.parent());
return this.each(function() {
var $this = $(this),
$parent = $this.parent(),
defaults = {
delay: 500,
instantlyCloseOthers: true
},
data = {
delay: $(this).data('delay'),
instantlyCloseOthers: $(this).data('close-others')
},
settings = $.extend(true, {}, defaults, options, data),
timeout;
$parent.hover(function(event) {
// So a neighbor can't open the dropdown
if(!$parent.hasClass('open') && !$this.is(event.target)) {
return true;
}
if(settings.instantlyCloseOthers === true)
$allDropdowns.removeClass('open');
window.clearTimeout(timeout);
$parent.addClass('open');
}, function() {
timeout = window.setTimeout(function() {
$parent.removeClass('open');
}, settings.delay);
});
// This helps with button groups!
$this.hover(function() {
if(settings.instantlyCloseOthers === true)
$allDropdowns.removeClass('open');
window.clearTimeout(timeout);
$parent.addClass('open');
});
// Handle submenus
$parent.find('.dropdown-submenu').each(function(){
var $this = $(this);
var subTimeout;
$this.hover(function() {
window.clearTimeout(subTimeout);
$this.children('.dropdown-menu').show();
// Always close submenu siblings instantly
$this.siblings().children('.dropdown-menu').hide();
}, function() {
var $submenu = $this.children('.dropdown-menu');
subTimeout = window.setTimeout(function() {
$submenu.hide();
}, settings.delay);
});
});
});
};
$(document).ready(function() {
// apply dropdownHover to all elements with the data-hover="dropdown" attribute
$('[data-hover="dropdown"]').dropdownHover();
});
})(jQuery, this);
マークアップの例:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-delay="1000" data-close-others="false">
Account <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a tabindex="-1" href="#">My Account</a></li>
<li class="divider"></li>
<li><a tabindex="-1" href="#">Change Email</a></li>
<li><a tabindex="-1" href="#">Change Password</a></li>
<li class="divider"></li>
<li><a tabindex="-1" href="#">Logout</a></li>
</ul>
</li>
これを行う最良の方法は、ホバーでBootstrapのクリックイベントをトリガーすることです。このようにして、それはまだタッチデバイスフレンドリーのままである必要があります。
$('.dropdown').hover(function(){
$('.dropdown-toggle', this).trigger('click');
});
私はそれを次のように管理しました:
$('ul.nav li.dropdown').hover(function(){
$(this).children('ul.dropdown-menu').slideDown();
}, function(){
$(this).children('ul.dropdown-menu').slideUp();
});
これが誰かに役立つことを願っています...
また、margin-top:0を追加して、.dropdown-menuのブートストラップcssマージンをリセットし、ユーザーがドロップダウンメニューからメニューリストにゆっくり移動したときにメニューリストが消えないようにしました。
ul.nav li.dropdown:hover > ul.dropdown-menu {
display: block;
}
.nav .dropdown-menu {
margin-top: 0;
}
Bootstrap 3ドロップダウンホバー機能用の適切なプラグインを公開しました。このプラグインでは、dropdown-toggle
要素をクリックしたときの動作を定義することもできます(クリックを無効にすることができます)。
https://github.com/istvan-ujjmeszaros/bootstrap-dropdown-hover
以前に存在していたすべてのソリューションに問題がありました。シンプルなCSSはの.open
クラスを使用していない.dropdown
ため、ドロップダウンが表示されている場合、ドロップダウントグル要素に対するフィードバックはありません。
jsのものはをクリックすることを妨げている.dropdown-toggle
ので、ドロップダウンはホバーに表示され、開いているドロップダウンをクリックすると非表示になり、マウスを移動するとドロップダウンがトリガーされて再び表示されます。一部のjsソリューションはiOSの互換性を壊し、一部のプラグインはタッチイベントをサポートしている最新のデスクトップブラウザーで動作しません。
そのため、私は標準のBootstrap JavaScript APIのみを使用して、ハックなしでこれらの問題をすべて防止するBootstrap Dropdown Hover プラグインを作成しました。Aria属性でさえ、このプラグインで正常に機能しています。
bootstrap-dropdown-hover
、でうまくいきました。左側のナビゲーションバーで着陸地点を構築しています。
このコードを使用して、マウスホバーでサブメニューを開きます(デスクトップのみ)。
$('ul.nav li.dropdown').hover(function () {
if ($(window).width() > 767) {
$(this).find('.dropdown-menu').show();
}
}, function () {
if ($(window).width() > 767) {
$(this).find('.dropdown-menu').hide().css('display','');
}
});
また、ファーストレベルメニューをクリック可能にしたい場合は、モバイル上でもこれを追加します。
$('.dropdown-toggle').click(function() {
if ($(this).next('.dropdown-menu').is(':visible')) {
window.location = $(this).attr('href');
}
});
サブメニュー(ドロップダウンメニュー)は、デスクトップではマウスホバーで、モバイルとタブレットではクリック/タッチで開きます。サブメニューが開いたら、2回目のクリックでリンクを開くことができます。のおかげif ($(window).width() > 767)
で、サブメニューはモバイルで全画面幅になります。
タブレットよりも小さい場合、これによりドロップダウンとそのキャレットが非表示になります。
@media (max-width: 768px) {
.navbar ul.dropdown-menu, .navbar li.dropdown b.caret {
display: none;
}
}
jQueryソリューションは優れていますが、ホバーが適切に機能しないため、クリックイベント(モバイルまたはタブレットの場合)に対処する必要があります...ウィンドウのサイズ変更の検出を行うことができますか?
Andres Ilichの回答はうまく機能しているようですが、メディアクエリでラップする必要があります。
@media (min-width: 980px) {
.dropdown-menu .sub-menu {
left: 100%;
position: absolute;
top: 0;
visibility: hidden;
margin-top: -1px;
}
.dropdown-menu li:hover .sub-menu {
visibility: visible;
}
.dropdown:hover .dropdown-menu {
display: block;
}
.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu, .navbar .dropdown-menu {
margin-top: 0;
}
.navbar .sub-menu:before {
border-bottom: 7px solid transparent;
border-left: none;
border-right: 7px solid rgba(0, 0, 0, 0.2);
border-top: 7px solid transparent;
left: -7px;
top: 10px;
}
.navbar .sub-menu:after {
border-top: 6px solid transparent;
border-left: none;
border-right: 6px solid #fff;
border-bottom: 6px solid transparent;
left: 10px;
top: 11px;
left: -6px;
}
}
バージョン2の非常にシンプルなソリューションで、CSSのみです。モバイルとタブレットで同じフレンドリーな機能を維持します。
@media (min-width: 980px) {
.dropdown:hover .dropdown-menu {
display: block;
}
}
このスクリプトでbootstrap.jsを上書きします。
jQuery(document).ready(function ($) {
$('.navbar .dropdown').hover(function() {
$(this).addClass('extra-nav-class').find('.dropdown-menu').first().stop(true, true).delay(250).slideDown();
}, function() {
var na = $(this)
na.find('.dropdown-menu').first().stop(true, true).delay(100).slideUp('fast', function(){ na.removeClass('extra-nav-class') })
});
$('.dropdown-submenu').hover(function() {
$(this).addClass('extra-nav-class').find('.dropdown-menu').first().stop(true, true).delay(250).slideDown();
}, function() {
var na = $(this)
na.find('.dropdown-menu').first().stop(true, true).delay(100).slideUp('fast', function(){ na.removeClass('extra-nav-class') })
});
});
メニューまたはトグルボタン上でのホバリングを停止した後、メニューが閉じる前にわずかな遅延を追加する私のテクニックは次のとおりです。<button>
あなたは、通常のナビゲーションメニューが表示しますということ#nav_dropdown
。
$(function() {
var delay_close_it, nav_menu_timeout, open_it;
nav_menu_timeout = void 0;
open_it = function() {
if (nav_menu_timeout) {
clearTimeout(nav_menu_timeout);
nav_menu_timeout = null;
}
return $('.navbar .dropdown').addClass('open');
};
delay_close_it = function() {
var close_it;
close_it = function() {
return $('.navbar .dropdown').removeClass('open');
};
return nav_menu_timeout = setTimeout(close_it, 500);
};
$('body').on('mouseover', '#nav_dropdown, #nav_dropdown *', open_it).on('mouseout', '#nav_dropdown', delay_close_it);
return $('body').on('mouseover', '.navbar .dropdown .dropdown-menu', open_it).on('mouseout', '.navbar .dropdown .dropdown-menu', delay_close_it);
});
Sudharshanの回答を拡張するために、これをメディアクエリにラップして、XS表示幅でのホバーを防止します...
@media (min-width:768px)
{
ul.nav li.dropdown:hover > ul.dropdown-menu {
display: block;
}
.nav .dropdown-menu {
margin-top: 0;
}
}
また、マークアップでキャレットはただ、必要とされていないドロップダウンのためのクラス李。
だからあなたはこのコードを持っています:
<a class="dropdown-toggle" data-toggle="dropdown">Show menu</a>
<ul class="dropdown-menu" role="menu">
<li>Link 1</li>
<li>Link 2</li>
<li>Link 3</li>
</ul>
通常はクリックイベントで動作し、ホバーイベントで動作するようにします。これは非常に簡単です。次のJavaScript / jQueryコードを使用してください。
$(document).ready(function () {
$('.dropdown-toggle').mouseover(function() {
$('.dropdown-menu').show();
})
$('.dropdown-toggle').mouseout(function() {
t = setTimeout(function() {
$('.dropdown-menu').hide();
}, 100);
$('.dropdown-menu').on('mouseenter', function() {
$('.dropdown-menu').show();
clearTimeout(t);
}).on('mouseleave', function() {
$('.dropdown-menu').hide();
})
})
})
これは非常にうまく機能します。ここに説明があります。ボタンとメニューがあります。ボタンにカーソルを合わせるとメニューが表示され、ボタンからマウスアウトすると100ミリ秒後にメニューが非表示になります。なぜ私がそれを使用するのか疑問に思うのは、メニューの上にあるボタンからカーソルをドラッグする時間が必要だからです。メニューを表示すると、時間がリセットされ、好きなだけそこにとどまることができます。メニューを終了すると、タイムアウトなしでメニューが即座に非表示になります。
私は多くのプロジェクトでこのコードを使用していますが、このコードの使用で問題が発生した場合は、遠慮なく質問してください。