ブートストラップ3はまだRC版ですが、実装しようとしていました。サブメニュークラスの入れ方がわかりませんでした。CSSにはクラスがなく、新しいドキュメントでさえそれについて何も言わない
2.xにはドロップダウンサブメニューとしてクラス名がありました。
ブートストラップ3はまだRC版ですが、実装しようとしていました。サブメニュークラスの入れ方がわかりませんでした。CSSにはクラスがなく、新しいドキュメントでさえそれについて何も言わない
2.xにはドロップダウンサブメニューとしてクラス名がありました。
回答:
2018年更新
dropdown-submenu
ブートストラップ3 RCで削除されました。Bootstrapの作者Mark Ottoの言葉を借りれば、
「現在、サブメニューはウェブ上であまり場所がありません。特にモバイルウェブです。3.0で削除されます。」-https ://github.com/twbs/bootstrap/pull/6342
ただし、少しだけCSSを追加すれば、同じ機能を利用できます。
ブートストラップ4(ホバーのナビゲーションバーサブメニュー)
.navbar-nav li:hover > ul.dropdown-menu {
display: block;
}
.dropdown-submenu {
position:relative;
}
.dropdown-submenu>.dropdown-menu {
top:0;
left:100%;
margin-top:-6px;
}
ナビゲーションバーサブメニュードロップダウンホバー
ナビゲーションバーサブメニュードロップダウンホバー(右揃え)
ナビゲーションバーサブメニュードロップダウンクリック(右揃え)
ナビゲーションバードロップダウンホバー(サブメニューなし)
ブートストラップ3
3.0 RC 1を使用する例を次に示します。http://bootply.com/71520
Bootstrap 3.0.0(最終版)を使用した例を次に示します。http://bootply.com/86684
CSS
.dropdown-submenu {
position:relative;
}
.dropdown-submenu>.dropdown-menu {
top:0;
left:100%;
margin-top:-6px;
margin-left:-1px;
-webkit-border-radius:0 6px 6px 6px;
-moz-border-radius:0 6px 6px 6px;
border-radius:0 6px 6px 6px;
}
.dropdown-submenu:hover>.dropdown-menu {
display:block;
}
.dropdown-submenu>a:after {
display:block;
content:" ";
float:right;
width:0;
height:0;
border-color:transparent;
border-style:solid;
border-width:5px 0 5px 5px;
border-left-color:#cccccc;
margin-top:5px;
margin-right:-10px;
}
.dropdown-submenu:hover>a:after {
border-left-color:#ffffff;
}
.dropdown-submenu.pull-left {
float:none;
}
.dropdown-submenu.pull-left>.dropdown-menu {
left:-100%;
margin-left:10px;
-webkit-border-radius:6px 0 6px 6px;
-moz-border-radius:6px 0 6px 6px;
border-radius:6px 0 6px 6px;
}
マークアップの例
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
<li class="menu-item dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Drop Down<b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="menu-item dropdown dropdown-submenu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Level 1</a>
<ul class="dropdown-menu">
<li class="menu-item ">
<a href="#">Link 1</a>
</li>
<li class="menu-item dropdown dropdown-submenu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Level 2</a>
<ul class="dropdown-menu">
<li>
<a href="#">Link 3</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
PS-左側の位置を調整するナビゲーションバーの例:http ://bootply.com/92442
.dropdown-submenu:hover {background: #e2e1e1;}
@skellyソリューションは優れていますが、ホバー状態が機能しないため、モバイルデバイスでは機能しません。
BS 2.3.2の動作を元に戻すために、JSを少し追加しました。
PS:それはあなたがそこに着くCSSで動作します:http : //bootply.com/71520次の部分にコメントすることができます:
CSS:
/*.dropdown-submenu:hover>.dropdown-menu{display:block;}*/
JS:
$('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
// Avoid following the href location when clicking
event.preventDefault();
// Avoid having the menu to close when clicking
event.stopPropagation();
// If a menu is already open we close it
$('ul.dropdown-menu [data-toggle=dropdown]').parent().removeClass('open');
// opening the one you clicked on
$(this).parent().addClass('open');
});
結果は私のWordPressテーマ(ページのトップ)にあります:http : //shprinkone.julienrenaux.fr/
$(this).closest(".dropdown-submenu").toggleClass("open");
ます。これは、リンクメニュー項目を開閉します。デスクトップ上でホバーを維持するには、ブラウザーのビューポート幅のチェックが必要であり、サイトごとに異なります。
今日(2014年1月9日)まで、Bootstrap 3はまだサブメニューのドロップダウンをサポートしていません。
レスポンシブなナビゲーションメニューについてGoogleを検索しましたが、これが最高です。
それはスマートメニュー http://www.smartmenus.org/
これが、マルチレベルのサブメニューを備えたナビゲーションメニューが必要なすべての人にとっての方法であることを願っています。
更新2015-02-17スマートメニューは、サブメニューのBootstrap要素スタイルを完全にサポートするようになりました。詳細については、スマートメニューのウェブサイトをご覧ください。
Shprinkのコードは私に最も役立ちましたが、ドロップダウンが画面から消えないようにするために、次のように更新しました。
JS:
$('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
// Avoid following the href location when clicking
event.preventDefault();
// Avoid having the menu to close when clicking
event.stopPropagation();
// If a menu is already open we close it
$('ul.dropdown-menu [data-toggle=dropdown]').parent().removeClass('open');
// opening the one you clicked on
$(this).parent().addClass('open');
var menu = $(this).parent().find("ul");
var menupos = $(menu).offset();
if (menupos.left + menu.width() > $(window).width()) {
var newpos = -$(menu).width();
menu.css({ left: newpos });
} else {
var newpos = $(this).parent().width();
menu.css({ left: newpos });
}
});
CSS:FROM background-color:#eeeeee TO background-color:#c5c5c5-白いフォントと明るい背景が美しくありませんでした。
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
background-color: #c5c5c5;
border-color: #428bca;
}
これが私と同じくらい人々に役立つことを願っています!
しかし、Bootstrapがサブ機能をできるだけ早く追加できることを願っています。
Skellyの非常に役立つ回避策にコメントします。Bootstrap-sass3.3.6では、utilities.scss、19行目:.pull-left
ありfloat:left !important
ます。それ以来、彼のCSSでも!importantを使用することをお勧めします。
.dropdown-submenu.pull-left {
float:none !important;
}
数日前にこの問題にぶつかった。私は多くの解決策を試しましたが、最終的にはどれも実際にはうまくいきませんでした。結局、ブートストラップのドロップダウンコードの拡張/オーバーライドを作成してしまいました。これは、closeMenus関数が変更された元のコードのコピーです。
ブートストラップjsのコアクラスに影響を与えないので、それは良いソリューションだと思います。
あなたはそれをgihubでチェックアウトできます:https : //github.com/djokodonev/bootstrap-multilevel-dropdown
ドロップダウンの別のソリューションを作成します。これが役に立てば幸いこのjsスクリプトを追加するだけです
<script type="text/javascript"> jQuery("document").ready(function() {
jQuery("ul.dropdown-menu > .dropdown.parent").click(function(e) {
e.preventDefault();
e.stopPropagation();
if (jQuery(this).hasClass('open2'))
jQuery(this).removeClass('open2');
else {
jQuery(this).addClass('open2');
}
});
}); < /script>
<style type="text/css">.open2{display:block; position:relative;}</style>