ウィンドウが 800 ピクセル未満の幅でロードされたとき (またはサイズが変更されたとき) にドロップダウン メニューに変えたい、Superfish 対応の水平メニューがあります。ウィンドウのサイズが 800 ピクセルを超えると、ドロップダウンが水平リストに戻ります。
水平メニューは次のようになり、PHP 経由で出力されます (ここでは単純化されています)。
<ul id="menu-primary">
<li id="menu-item-683">...</li>
<li id="menu-item-10">
<a class="sf-with-ul" href="about-us">About Us</a>
<ul class="sub-menu"> </ul>
</li>
...
</ul>
そこで、メニューを次のようにラップしてみました。
$("#menu-primary").wrap("<ul id='menu-dropdown' class='sf-menu sf-vertical'><li id='li_drop' class='menu-item'></li></ul>");
$("#menu-primary").before("<span id='nav-dropdown' class='sf-with-ul'>MENU</span>");
そして、ウィンドウサイズが小さい場合はラッパーでスーパーフィッシュを呼び出し、ウィンドウサイズが大きい場合はラッパーからスーパーフィッシュクラスを単純に削除します。
function menudrop(){
if ( $(window).innerWidth() < 800) {
$("#menu-dropdown").addClass("menu menu-dropdown superfish sf-js-enabled");
$('#menu-dropdown').superfish({delay:100,animation:{height:'show'},dropShadows: false, speed: 1});
}
else {
$("#menu-dropdown").removeClass("menu menu-dropdown superfish sf-js-enabled");
}
}
ほとんどの場合は機能しますが、ページを <800 ピクセルで読み込み、サイズを >800 に変更すると表示され#menu-primary
ません。ラッパーを追加しなかった場合とまったく同じように CSS を作成しようとしましたが、うまくいきません。どうにか元に戻す必要があるようですが$('#menu-dropdown').superfish();
、その方法がわかりません。
これは可能ですか、または (メニューをメニューに変換せずに) このアイデアを実現するより良い方法はあり<select><option>...
ますか?