ドロップダウン メニューに Twitter ブートストラップ サブメニューを作成しようとしましたが、問題が発生しました。ページの右上隅にドロップダウン メニューがあり、そのメニューにはもう 1 つのサブメニューがあります。ただし、サブメニューが開くと、ウィンドウに収まらず、右に移動しすぎて、ユーザーが最初の文字しか見ることができません。そのサブメニューを右ではなく左に開くにはどうすればよいですか?
12 に答える
現在のクラス.dropdown-submenu > .dropdown-menu
にはleft: 100%;
. したがって、左側にサブメニューを開きたい場合は、これらの設定をオーバーライドして左の負の位置にします。たとえばleft: -95%;
。左側にサブメニューが表示され、他の設定を微調整して完全なプレビューを取得できます。
ここにデモがあります
EDIT:OPの質問と私の答えは2012年8月のものです.その間、Bootstrapが変更されたため、.pull-leftクラスがあります。あの時、私の答えは正しかった。これで、css を手動で設定する必要がなくなりました。その .pull-left クラスがあります。
編集 2: Bootstrap が URL を変更したため、デモは機能していません。jsfiddle の外部リソースを変更して、新しいリソースに置き換えるだけです。
レベルが 1 つしかなく、ブートストラップ 3 を使用する場合は、要素に追加pull-right
しますul
<ul class="dropdown-menu pull-right" role="menu">
右側に十分なスペースがあるかどうかを確認する JavaScript 関数を作成しました。ある場合は右側に表示し、ない場合は左側に表示します
テスト済み:
- ファイアフォックス (マック)
- クローム (mac)
- サファリ (マック)
Javascript:
$(document).ready(function(){
//little fix for the poisition.
var newPos = $(".fixed-menuprofile .dropdown-submenu").offset().left - $(this).width();
$(".fixed-menuprofile .dropdown-submenu").find('ul').offset({ "left": newPos });
$(".fixed-menu .dropdown-submenu").mouseover(function() {
var submenuPos = $(this).offset().left + 325;
var windowPos = $(window).width();
var oldPos = $(this).offset().left + $(this).width();
var newPos = $(this).offset().left - $(this).width();
if( submenuPos > windowPos ){
$(this).find('ul').offset({ "left": newPos });
} else {
$(this).find('ul').offset({ "left": oldPos });
}
});
});
新しいクラスを作成したすべてのメニュー項目にこの修正を追加したくないためです。ul に固定メニューを配置します。
<ul class="dropdown-menu fixed-menu">
これがうまくいくことを願っています。
ps。Safari と chrome の小さなバグです。最初にホバーすると左側に移動し、修正された場合はこの投稿が更新されます。
ブートストラップの最新バージョンを使用していますか? 以下に示すように、Fluid Layout の例の html を適応させました。pull-right
ドロップダウンを追加し、クラスを追加して右側に配置しました。ドロップダウン メニューにカーソルを合わせると、自動的に左に移動し、何も隠されません。すべてのメニュー テキストが表示されます。私はカスタムCSSを使用していません。
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">Project name</a>
<div class="nav-collapse collapse">
<ul class="nav pull-right">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
<li class="dropdown open">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-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>
</ul>
<p class="navbar-text pull-right">
Logged in as <a href="#" class="navbar-link">Username</a>
</p>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
あなたがしなければならない唯一のことは
<ul style='left:-100%'>
右側に表示したいメニューの