![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
とりあえず原理のみ。
きっかけはマウスオーバーとのことなので、対象となる要素にイベントをセットすればよいですが、個々にセットするよりも上位要素に1個だけセットしておく方がいろいろと都合がよろしいかと思います。
自動開閉は(多分縦に開閉でよいのだろうと推測しましたが)、対象とする要素をoverflow:hiddenなどに設定しておいて、そのheightを順次変化させるアニメーションを行なうことで可能になります。(横とかその他でも原理は同じです)
>「設定した秒数の間スムーズに自動開閉」
の意味がわかりかねますが、表示したのち一定時間後に自動的にクローズという意味と解釈すれば、上記のアニメーション(表示)が終わったところでsetTimeoutなどを利用して、再度アニメーションでクローズさせるという手順でよろしいかと。
内容がよくわからないので、上記の原理の部分の原型サンプルを以下に。
(とりあえず原理なので、1階層限定で考えてあります)
CSSも必要以外は設定してありません。
動作や仕様が違うところは適当にアレンジしてください。
(全角空白は半角に)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>sample</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<style type="text/css">
<!--
#navi ul { overflow:hidden; zoom:1; }
#navi ul.hide { display:none; }
//-->
</style>
<script type="text/javascript">
<!--
function disp(evt){
var speed = 20; // スライド速度
var interval = 2000; // 開いている時間
var t = evt.target || evt.srcElement;
var p = t.parentNode;
if(t.nodeName!="LI" || p.id!="navi") return;
var u = t.getElementsByTagName("ul")[0];
if(u && u.className=="hide"){
u.className = "";
var h = u.clientHeight;
u.style.height = "0px";
slide(u, 0, h, function(){
setTimeout(function(){
slide(u, h, 0, function(){
u.className = "hide";
u.style.height = h + "px";
})
}, interval);
});
}
function slide(u, h, end, func){
var dir = h>end?-2:2;
var id = setInterval(function(){
h += dir;
if((dir>0 && h>end) || (0>dir && end>h)) h = end;
u.style.height = h + "px";
if(h==end){
clearInterval(id);
func();
}
}, speed);
}
}
//-->
</script>
</head>
<body>
<ul id="navi" onmouseover="disp(event)">
<li>menu1
<ul class="hide">
<li>sub_menu1-1</li>
<li>sub_menu1-2</li>
<li>sub_menu1-3</li>
</ul>
</li>
<li>menu2
<ul class="hide">
<li>sub_menu2-1</li>
<li>sub_menu2-2</li>
<li>sub_menu2-3</li>
</ul>
</li>
</ul>
</body>
</html>
この回答へのお礼
お礼日時:2011/08/22 18:21
回答ありがとうございます。
質問の意図をくみ取っていただき、sampleまで!
ありがとうございます。
またまたの質問で恐縮ですが、親・子要素のhover時にアコーディオンを閉じない(hoverを外れるとintervalやsetTimeoutが作動)ように調整するにはどのようにすればよいのでしょうか?
No.2
- 回答日時:
#1です。
>親・子要素のhover時にアコーディオンを閉じない(hoverを外れるとinterval
>やsetTimeoutが作動)ように調整するにはどのようにすればよいのでしょうか?
質問の意味がよくわかりませんけど…
それって、もしかして普通のマウスオンタイプのメニューの開閉のことでしょうか?
もしそうなら、自動で閉じるようなことはせずに、マウスがはずれたら閉じるようにするだけでよいのではないでしょうか?
それならごく普通にあるメニューの動作なので、探せばたくさんサンプルやライブラリが見つかることと思います。
原理的には、#1と同じようなことを行なっているはずと思います。
(実装はいろいろでしょうけれど)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 電子レンジ・オーブン・トースター 電子レンジの非科学的(カルト的)動作の原因について考えられる理由を知りたい 8 2022/11/29 14:47
- docomo(ドコモ) 通話録音が(最初から)自動的に始まるアプリは? 7 2023/01/16 15:53
- その他(コンピューター・テクノロジー) PC利用中に勝手に起動する窓を消し去る方法を教えて下さい。 1 2023/05/08 16:48
- Excel(エクセル) 開いているフォルダを全て閉じる、マクロを教えて下さい 3 2022/08/28 08:42
- 車検・修理・メンテナンス ワゴンRパワーウインドウの不具合 平成24年MH34S 昨日運転席の内張を外す作業をして、パワーウイ 1 2022/08/15 09:39
- その他(プログラミング・Web制作) ゲーム開発をするならUnityとJavaScriptどちらがおすすめですか? 別で作ったアニメーショ 2 2022/09/29 06:34
- JavaScript javascript で外部サイトにデータ入力させて自動でボタンを押すことは可能ですか? 1 2023/01/30 16:23
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(車) 手動式サイドミラーの車について。 私の車は古いためミラーが自動で開け閉めができるやつではなく手動で開 5 2023/07/04 17:30
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「jQuery」アコーディオンメニ...
-
【javascript で動的に a タグ...
-
戻ってきた時ツリーメニューが...
-
JqueryFileTree.js でフォルダ...
-
クリックした<a>タグのみにClas...
-
階層式メニューの設置について
-
javascriptでEnterキーをtabキ...
-
Jquery タブで、4つのliのうち...
-
【JavaScript】階層関係から要...
-
for(var i=0;...) の i の値を...
-
javascriptで、jとlの打鍵でリ...
-
メニューのリンクをクリックし...
-
jqueryのsortableで一部ソート...
-
【jQuery】遅延実行(タイムラ...
-
【jQuery】 if else 文の合体
-
Jquery の slide.toggle で要素...
-
MAX関数を使ってからLEFT JOIN...
-
jspでcssが読み込めない
-
スクロール可能なチェックボックス
-
「戻る」「進む」ボタンで画像...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
クリックした<a>タグのみにClas...
-
どの<li><a> が押されたか判別...
-
【javascript で動的に a タグ...
-
文字と数字が混在する要素のsor...
-
javascriptでEnterキーをtabキ...
-
チェックボックスに入っている...
-
複数のラジオボタン項目でのテ...
-
jquery ドロップダウンメニュー...
-
jQueryのeqで最後からn番目以降...
-
JavaScriptで、?マークとコロ...
-
質問に答えていくと、回答によ...
-
Jqueryでリストのスクロール
-
多階層ドロップダウンのスマホ...
-
JQueryタブのアクティブ アン...
-
gridstack.jsについて教えてく...
-
タブ切り替えの初期表示について
-
オンマウスで画像ロールオーバ...
-
「jQuery」アコーディオンメニ...
-
複数の画像をランダム(シャッ...
おすすめ情報