
アコーディオンの入れ子(多階層)について、お教えください。
JQueryで入れ子のアコーディオンメニューを作成したいと思っています。
入れ子の数は計3つを予定してます。(第3階層まで)
1~3つ目それぞれのメニューは増減する可能性がある為、出来るだけ数字で割り振ったIDなどは使用せずに表現したいと思っています。(メニューを増やす度にIDが増えるのを止めたい)
■HTMLソース例
<ul class="navi">
<li>第1階層
<ul class="navi-sub">
<li>第2階層
<ul class="navi-sub2">
<li><a href="#">第3階層</a></li>
<li><a href="#">第3階層</a></li>
<li><a href="#">第3階層</a></li>
</ul>
</li>
<li>第2階層
<ul class="navi-sub2">
<li><a href="#">第3階層</a></li>
<li><a href="#">第3階層</a></li>
<li><a href="#">第3階層</a></li>
</ul>
</li>
</ul>
</li>
</ul>
上記のようなHTMLソースで入れ子のアコーディオンを作成することは可能でしょうか?
(ID、CLASSのセレクタの振り方は上記以外でもかまいません)
また、最初からアコーディオンメニューの1部分だけ展開した状態にする事は可能なのでしょうか?
(上の質問にも言える事ですが、JavaScriptにこだわっている訳ではないので、CSSでも表現が可能であればCSSでも構いません)
JavaScriptがよく分からない為、お教え頂けると大変助かります。
何卒宜しくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
可能不可能かに対する回答は実現可能という答えです。
簡単にですが作ってみました。
もっと良い作り方があると思いますので参考程度にお願いします。
(仕事の片手間で作ってみたのでバグ等あったらごめんなさい)
==== sample.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>【JQuery】アコーディオンの入れ子について</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7. …
<script type="text/javascript">
$().ready ( function () {
var navi = $('.navi');
var pms1 = { height:'toggle',opacity:'toggle'};
navi.each ( function(index) {
$('li > a', this).each ( function(index) {
var obj = $(this);
// .defの設定してある部分は開いておく
if ( !obj.parent().is('.def') ) obj.next().hide();
obj.addClass('link');
if ( obj.parent().is('.sub') ) {
// 親が.subクラスについてはlinkクラスを削除
obj.removeClass('link');
obj.click ( function() {
// アニメーションで開くまたは閉じる
// 現在表示されているものを選択し閉じる
obj.next().animate(pms1).parent().siblings().children('ul:visible').animate(pms1);
});
}
});
});
navi.find('> .sub').each ( function(index) {
$(this).find(' > a').click( function() {
navi.find('ul.menu').animate ( {height:'hide',opacity:'hide'} );
});
});
});
</script>
<style type="text/css">
ul.navi { width:300px; }
ul.navi , ul.navi li ul {
maring:0;
padding:0;
list-style:none;
}
ul.navi a {
display:block;
height:30px;
line-height:30px;
text-decoration:none;
text-align:center;
font-weight:bold;
color:#ccc;
}
ul.navi { background-color:#000; }
ul.navi a:hover { color:#fff; }
ul.navi ul li { background-color:#333; }
ul.navi li ul a:hover { color:#fff; }
.link { background-color:#999; }
</style>
</head>
<body>
<ul class="navi">
<li class="sub"><a href="#">第1階層(1)</a>
<ul>
<li class="sub"><a href="#">第2階層(1-1)</a>
<ul class="menu">
<li><a href="./1-1-1.html">第3階層(1-1-1)</a></li>
<li><a href="./1-1-2.html">第3階層(1-1-2)</a></li>
<li><a href="./1-1-3.html">第3階層(1-1-3)</a></li>
</ul>
</li>
<li class="sub"><a href="#">第2階層(1-2)</a>
<ul class="menu">
<li><a href="./1-2-1.html">第3階層(1-2-1)</a></li>
<li><a href="./1-2-2.html">第3階層(1-2-2)</a></li>
<li><a href="./1-2-3.html">第3階層(1-2-3)</a></li>
</ul>
</li>
</ul>
</li>
<li class="sub def"><a href="#">第1階層(2)</a>
<ul>
<li class="sub"><a href="#">第2階層(2-1) Default Open</a>
<ul class="menu">
<li><a href="#">第3階層(2-1-1)</a></li>
<li><a href="#">第3階層(2-1-2)</a></li>
</ul>
</li>
</ul>
</li>
<li class="sub"><a href="#">第1階層(3)</a>
<ul>
<li class="sub"><a href="#">第2階層(3-1)</a>
<ul class="menu">
<li><a href="./3-1-1.html">第3階層(3-1-1)</a></li>
<li><a href="./3-1-2.html">第3階層(3-1-2)</a></li>
<li><a href="./3-1-3.html">第3階層(3-1-3)</a></li>
</ul>
</li>
<li class="sub"><a href="#">第2階層(3-2)</a>
<ul class="menu">
<li><a href="./3-2-1.html">第3階層(3-2-1)</a></li>
<li><a href="./3-2-2.html">第3階層(3-2-2)</a></li>
<li><a href="./3-2-3.html">第3階層(3-2-3)</a></li>
<li><a href="./3-2-4.html">第3階層(3-2-4)</a></li>
<li><a href="./3-2-5.html">第3階層(3-2-5)</a></li>
<li><a href="./3-2-6.html">第3階層(3-2-6)</a></li>
</ul>
</li>
<li class="sub"><a href="#">第2階層(3-3)</a>
<ul class="menu">
<li><a href="./3-2-1.html">第3階層(3-3-1)</a></li>
<li><a href="./3-2-2.html">第3階層(3-3-2)</a></li>
<li><a href="./3-2-3.html">第3階層(3-3-3)</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</body>
</html>
No.1
- 回答日時:
普通に考えれば必要なidはトップのnaviだけですむのではないでしょうか?
ナビゲーション関連は皆が考えているので、ちょっとでも探す気があればゴマンと見つかると思いますが?
以下、ごく一例(内容は見ていませんが)
<CSS関連>
http://www.red-team-design.com/css3-dropdown-menu
http://www.cssplay.co.uk/menus/skeleton2.html
<javascript関連>
http://onehackoranother.com/projects/jquery/drop …
http://codepress.ru/jquery/amenu/
http://www.filamentgroup.com/lab/jquery_ipod_sty …
http://www.dynamicdrive.com/dynamicindex17/ddacc …
http://www.designchemical.com/lab/demo-wordpress …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS htmlについて質問です! 写真のように写真の部分が?になってしまいます。 ファイルもしっかり選べて 1 2023/07/09 21:17
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- その他(IT・Webサービス) html cssについて 3 2023/05/13 12:48
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリックで表示、非表示するメ...
-
jQueryについて質問なのですが...
-
DOM の 要素の数え方について
-
オンマウスで画像ロールオーバ...
-
jQueryのhide,showで中の要素が...
-
CSSとJavaScriptを使ってドロッ...
-
ajaxローディングで取得したデ...
-
【JQuery】アコーディオンの入...
-
タブ切り替えの初期表示について
-
マウスカーソルを画像や文字に...
-
画像ランダム表示、しかしダブ...
-
新規ウインドウ+submit
-
JSPでの画像ファイル表示
-
CSSで親ボックスの背景画像を設...
-
イラストのボタンを押したとき...
-
【WEBデザイン】ディスプレイ環...
-
fontsize.jsでhtmlの大中小の設...
-
画像をクリックしたら別ウイン...
-
ホームページ 縦書き
-
classList で、class名が付かな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
同一ページ内で、任意の文字列...
-
タブ切り替えの初期表示について
-
ネストされたチェックボックス...
-
JQueryタブのアクティブ アン...
-
Jquery の slide.toggle で要素...
-
ホームページビルダー17のフ...
-
【javascript で動的に a タグ...
-
javascriptで正規表現の検索が...
-
JavascriptのDOMについて
-
javascript テキストエリアを1...
-
for(var i=0;...) の i の値を...
-
クリックで表示、非表示するメ...
-
jQueryで電卓を作っているのですが
-
js ライブラリ iscrollの利用に...
-
jquery ドロップダウンメニュー...
-
プルダウンのメニュー表示について
-
jQueryのhide,showで中の要素が...
-
gridstack.jsについて教えてく...
-
【HP制作】メールフォームの設...
おすすめ情報