※ ChatGPTを利用し、要約された質問です(原文:jQueryでメニューの開閉スライド)
jQueryでメニューの開閉スライド
このQ&Aのポイント
jQueryを利用して、メニューの開閉スライドを実装したいです。現在、クリックしたカテゴリの次階層をスライドして表示していますが、開かれていたカテゴリをスライドアップして非表示にしたいです。複数階層があるため、開いていた間隔や今回開くべき間隔を補足できず、実現できません。最終的には動的スクリプトで実装する予定で、必要最小限のidやclassを使用したいです。
この問題を解決するために、開かれていたカテゴリをスライドアップして非表示にする方法を探しています。現在は間隔用のHTMLを削除することで実現していますが、補足することができないため、うまく表現できません。複数階層があるため、元々開いていた間隔や今回開くべき間隔を特定する必要があります。
最終的には動的スクリプトでメニューを実装するため、階層や機能が可変になる可能性があります。そのため、idやclassを必要最小限に留めたいと考えています。また、動的スクリプト側でも、空けるべき間隔を意識するようなコードは避けたいです。アドバイスをいただけると助かります。
ソース
http://pastie.org/9724183
jQueryは1.x系を利用していただければ動くと思います。
http://jquery.com/download/
jquery.corner.js
http://jquery.malsup.com/corner/
画像はテキトーに用意していただければ。。。
現在、クリックしたカテゴリの次階層を表示するのに、スライドして表示しています。
例えばカテゴリ2→サブカテゴリ2-2→機能2-2-2まで表示されている状態で、
カテゴリ1をクリックすると、1階層目、2階層目、3階層目とも表示されていた部分が
パッと消えます。
これは、そういう動作にしているので当たり前なのですが・・・。
これを、『開かれていたカテゴリをスライドアップして非表示にさせる』ということを
行いたいです。
クリックされて他のメニューが表示させる際、メニュー間の空けるべき間隔を求めて、
その間隔を保持した上で、不要な間隔分をスライドアップして非表示にさせる。
もしくは、間隔が不足しているのであれば、不足分のみスライドダウンして表示させる。
現在が、一旦間隔用のHTMLを全削除している関係で単純に上記を求めることは
できませんが、加工して何度かトライしてみましたが、以下の点が問題になって
うまく表現させることができません。
・複数階層(4階層以上も考慮)があるため、現在開いている間隔を補足できない。
・上記も起因して、元々開いていた間隔と今回開くべき間隔が補足できない。
最終的には動的スクリプトによって表現されるメニューであるため、階層や機能がどうなるかは可変です。
そのため、あまり様々なidやclassを乱発させたくなく、必要最小限に留めたいと思っています。
また、動的スクリプト側にて、空けるべき間隔を意識するようなコードは避けたいと考えています。
以上、アドバイスいただけたら幸いです。
お礼
Ctrl+Aなどによって、選択状態にするだけでも再レンダリングされて正常な描画に戻りますね。 せっかくスライドアニメーションをしているのに、ムリヤリレンダリングすることで瞬間的に描画されるのもあれなので、ちょっと悩ましいです・・・。 IE8で動作してくれないと困るので、切るに切れないという現実もあるんですが^^; 教えて頂いた方法を参考にして、『それらしい』ものとしてみたいと思います。 長々とお付き合いいただき、ありがとうございました。