REDLINE MAGAZINE | Spryの開閉パネルの件REDLINE MAGAZINEトップページへ

すべてのエントリを見る

Spryの開閉パネルの件

このサイトの最下部で使ってる開閉パネルについてメールを頂いたので、それについて書いてみます。jQuery以外のライブラリに触れるの久しぶりすぎて記憶が飛んでた・・・。

Sakkさんへ。
メールありがとうございました。お返事です(n'∀')η

ダウンロードと必要なファイル

まず本体をダウンロードします。

Adobe Labs - Spry framework for Ajax

このページの「Downloads」んとこのリンクを辿っていくとダウンロードできます。途中Adobe IDが必要になります。IDをまだお持ちでないなら作ってダウンロードしてくださいまし。

うちで使ってるのと同じようにするなら必要なのは上でダウンロードしたものの中の「widgets/collapsiblepanel/SpryCollapsiblePanel.js」と「widgets/collapsiblepanel/SpryCollapsiblePanel.css」の2つだけです。

ちなみにうちでは、CSSファイルについては必要な部分だけ抜き出して他のCSSファイルの中に入れて一緒に管理してます。

手順

まずサイト内のどっかに先ほどの2つのファイル(CSSは他とまとめるぜーの場合はjsファイルだけ)をコピーしてhead内で読み込みます。

<script type="text/javascript" src="SpryCollapsiblePanel.js"></script>
<link rel="stylesheet" href="SpryCollapsiblePanel.css" type="text/css" />

んでもって、次にbodyの中なんですが、さっきダウンロードしたjsファイルとcssファイルと同じ場所に動きのサンプルを見るためのhtmlファイルが同梱されてたと思うんですが、基本はその通りです。そのファイルでは5つのパネルがあったと思うんですがちょっと分かりやすいかなと思って1つにしてみました。(下記)

<div class="CollapsiblePanel" id="sample">
    <div class="CollapsiblePanelTab" tabindex="0">ここクリックするところ</div>
    <div class="CollapsiblePanelContent">
    ここに内容入れる<br />
    ここに内容入れる<br />
    ここに内容入れる<br />
    ここに内容入れる<br />
    </div>
</div>

なんかサンプルのソース見てるとdivが鬼のように出てきて頭痛くなるんですが、クリックするところと内容をまとめたdiv(class="CollapsiblePanel" id="sample")、次のdiv(class="CollapsiblePanelTab")がクリックするところ、次のdiv(class="CollapsiblePanelContent")が内容をいれるところです。

上のソースを入れた後、下記のスクリプトを挿入します。

<script language="JavaScript" type="text/javascript">
new Spry.Widget.CollapsiblePanel("sample");
</script>

「Spry.Widget.CollapsiblePanel("sample");」の"sample"の部分と先ほど上で書いたソースのクリックするところと内容をまとめた親div(<div class="CollapsiblePanel" id="sample">)に指定したidを合わせます。

>>サンプルページ

あ、でもすいません。うちで使ってるのと今のはバージョンが違うと思うのでスクリプトの部分、同梱されてたhtmlに書いてあったみたいに

var sample = new Spry.Widget.CollapsiblePanel("sample");

こういう風に書かなきゃならないかもです。最新バージョンでの確認はしてません。すみません><

開閉したいパネルが複数ある場合は同じようにソースを用意してidを書換え、スクリプト内にも同じようにidを変更したものを追加してやればOKです。あとはCSS側で見た目をコントロールすれば完成っす!

で、上のサンプルでは最初は内容パネルが開きっぱなしバージョンなんですが、パネルのデフォルトの状態を設定することもできます。その場合はさっきのスクリプト部分にその指定を足してやります。

<script language="JavaScript" type="text/javascript">
new Spry.Widget.CollapsiblePanel("sample", { contentIsOpen : false });
</script>

{contentIsOpen : false}の部分がデフォルトではパネルを閉めます、の設定部分です。

>>サンプルページ(デフォルトでパネル閉じてる)

その他のお返事

「クリックしたあと下にスクロールしなきゃいけないので、上方向に開く感じだといいなぁ」の件について。

そうなんですよね。それは今のデザインにリニューアルした時から実は私も思ってて、上方向に開くように頑張ってみたんですが、なんかコレはマズいなと思う事があったんですよね。何だっけな・・・。確かこのSpryで上方向に開くやり方が分からなくて、CSSでその部分を常に最下部に表示するようにしたらパネルが上に上がったんですが、JSが無効のブラウザで見ると何か肝心のコンテンツの一部が読めなかったか何かだった気がします。違うかも・・でも何か不都合があったんですよね・・・うる覚えでごめんなさい><

あと開閉時にガクガクの件、私のほうでも時々そうなりますね。これはー・・・どうにもできそうにないので放置してます><
というか、こういうもんなんだと思ってます・・・。

当時まだjQueryに出会ってなくてSpryを実験的に使ってみたんですが、今なら確実にjQuery使ってると思います。よかったらこっちのやり方も試してみてください。RedLine Magazine : jQueryでリストを開閉させたい

<< jQueryのスルスルスクロールを指定1つでバシバシ使う | jQueryでパンくずをうまくスペースに収める >>

トラックバック

このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/222

コメント (2)

わー!
ものすごい丁寧にありがとうございます~。
勉強のためにもSpryとJQuery両方試してみたいと思います^^

ちなみに最初に以下のサイト(ページ右上のCONTACT)で初めてこの挙動をみて大変驚いた次第です。
http://yurivish.com/yshout/

どうもありがとうございました~!

>Sakkさん
こんばんわ。コメントありがとうございました。
お役に立ててよかったです。

>http://yurivish.com/yshout/
このサイトのcontactの部分はjQueryのslideToggleですね。なのでやっぱりSakkさんの好みなのはjQueryの方なのかもですw




※コメント欄に「<」「>」等を含むソースを記載する場合は実体参照に変換してください。

このページの一番上へ

その他の情報など

最近のコメント

PHP オブジェクト指向の勉強
  • Red - 2010.01.08
  • hogepage - 2010.01.21
  • Red - 2010.01.22
  • - 2011.11.27
  • houseiii - 2011.11.27
Fireworks トリミング画像を一括書出 CS4編
  • Iper - 2009.06.27
  • Red - 2009.06.27
  • mala - 2011.11.17
  • Red - 2011.11.18
jQueryでボックスを上下左右中央に簡単配置
overflow を使用したボックス背景のこと
  • - 2007.12.13
  • Red - 2007.12.13
  • - 2007.12.13
  • Red - 2007.12.13
  • hj - 2011.09.23
IE6 → 透過PNG+overflow=混ぜるな危険(追記有)

メッセージを送る

こちらのメッセージ送信フォームは閉鎖させて頂きました。
御用の方は新しい方のブログ にコメント頂くか、 連絡用のフォーム もありますので、そちらからご連絡ください。