prototype.jsでサイドメニュー折りたたみ

サイドメニューを折りたたみ形式に変えたかったので、いろんな方法を探してみましたが、prototype.jsを実装していることもあって簡単にできないものかと思い。試してみたら実行できましたので紹介します。

prototype_png
Prototype JavaScript Framework: Class-style OO, Ajax, and more
http://prototype.conio.net/

画像をクリックすると元に戻ります。

トップページにて最近のコメント・トラックバックを表示していますが、それほど重要性がまだないようなので、非表示にすることにしました。クリックの頻度が薄いコンテンツを折りたたみ表示にすることでトップページを少しすっきりさせることができます。


prototype.js折りたたみ

今回実行する内容は、指定のボックス部分の表示・非表示の切り替えです。例えば以下のようなボックスをワンクリックで表示・非表示できるようにします。

今回は、prototype.jsのElementの中のhide並びにtoggleを使って折りたたみメニューを表示します。

今回のカスタマイズでprototype.jsについてprototype.js リファレンス並びにJavaScript リファレンス (ver 4)を参考にさせていただきました。

Element.hide(element)

ページ上のオブジェクトを非表示にする
ページ上のオブジェクトを非表示にするにはElement.hide()を使います。パラメータにはページ上のオブジェクトを指定します。ID名だけでなく$("box1")などオブジェクトを示すものであれば何でも指定することができます。
(引用:prototype.jsリファレンス>Element>hide

このhideを使ってページ読み込み時やリロード時に任意の指定するボックス部分を非表示にします。

JavaScriptのイベントにてonLoadElement.hide(element)を組み合わせることで任意のボックスを非表示にすることができます。

onLoad

<タグ onLoad = "イベント発生時の処理">
オブジェクト.onload = "イベント発生時の処理"
ページや画像などデータの読み込みが完了した時に発生します。

カンマを使って複数のid(ボックス要素の指定)を指定することができます。

Element.toggle(element)

ページ上のオブジェクトの表示状態を切り替える
ページ上のオブジェクトの表示状態を切り替えるにはElement.toggle()を使います。ID名だけでなく$("box1")などオブジェクトを示すものであれば何でも指定することができます。また、カンマで区切って複数の表示状態を切り替えることができます。
(引用:prototype.jsリファレンス>Element>toggle

toggleを使って、クリックされた時に任意のボックスを表示・非表示と切り替えれるようにします。

複数ある場合には、いろいろと探してみたのですが方法がわからず、もう一つtogglefunction toggleBox2())を用意しました。

上記のスクリプトを使って以下のコードのようにすることで、ワンクリックで表示の切り替えができます。以下の場合は、サイドメニュタイトルをクリックすると処理が実行されます。


prototype.js折りたたみ表示コード

上記の内容をまとめてコードにすると以下のようになります。

<head></head>の間に追加するスクリプトコード

表示・非表示ブロックの(X)HTMLコード


prototype.js折りたたみ表示導入

  1. Prototype JavaScript Framework: Class-style OO, Ajax, and moreから最新の(V1.4.0)をDLします。
  2. prototype.jsお使いのブログにフォルダにアップロードします。
  3. <head></head>の間に上記のコードを追加する
  4. サイドメニュータイトルブロック要素にonclick="toggleBox()"を追加する
  5. サイドメニューコンテンツブロック要素にid="任意のid"を追加する

以上でprototype.jsを使ってサイドメニューの折りたたみ表示が実行できます。


このブログでの実装例

サイドメニュータイトル部分は、リンクテキストとして認識されるようにstyle="color:#0000ff;"で表示を変えています。

このブログでは、Ajaxでアコーディオンタブを表現するためにRico・prototype.jsを実装していることもあって、prototype.jsを使いました。後々、Ajax表示のカスタマイズができるように勉強がてら素人ながらに試してみました。紹介している内容でおかしいところがありましたら、教えていただけるとありがたいです。他にもこんな感じで表示できるなどといった方法があれば、コメント・トラックバックお待ちいたしております。今後も更なるカスタマイズができるようにして行きたいと思っています。


その他のjavascriptを使ったサイドメニューの折りたたみ表示

いろんな方がjavascriptでサイドメニューの折りたたみを紹介しています。以下のエントリーも参考にしてみて、自分に合った方法を選んでみてください。

小粋空間: 折りたたみ アーカイブ
http://www.koikikukan.com/archives/cat_121.php
ダイズバタケ: サイドバーを折りたたみ式にしてみた
http://www.towofu.net/mt/archives/2005/09/20_00_50.php

トラックバック(0)

このブログ記事を参照しているブログ一覧: prototype.jsでサイドメニュー折りたたみ

このブログ記事に対するトラックバックURL: http://weblibrary.s224.xrea.com/x/mt/mt-tb.cgi/177

コメントする

アイテム

  • ff-logo-big

    ff-logo-big: firefoxロゴ

  • fmtube_image

    fmtube_image: fmtubesキャッチイメージ

  • mock.jpg

    mock.jpg: fm+tubesのモックページ(デザインレイアウト)。最終的にはこのスタイルでマルチブログで展開してみる構想。

  • mtdeinfo

    mtdeinfo: Movabletypeを勉強するならこのサイト。サンプルファイルもあって、情報も探しやすいです。とてもきれいに情報表示されていて、とても参考になります。

  • mytumblr

    mytumblr: 個人の趣味でのtumblrです。女性のポートレートなんかがおおいです

  • caputure_contextmenu

    caputure_contextmenu: tumblr caputureを右クリックコンテキストメニューで選択する

  • tumblrgallery

    tumblrgallery: tumblrを使ってWEBデザインGalleryを簡単に作ってみました。

  • psdtuts

    psdtuts: http://psdtuts.com/のイメージ画像

  • designflavor.

    designflavor.: http://www.designflavr.com/のイメージ

  • entrymain_template

    entrymain_template: ブログ記事の概要は、インデックステンプレート、ブログ記事のリスト(アーカイブテンプレート)、検索結果(システムテンプレート)の3つのテンプレートで共通に使われています。それぞれのテンプレートでの表示内容の違いをイメージに表してみました。

このブログ記事について

このページは、スカイが2006年10月23日 18:27に書いたブログ記事です。

ひとつ前のブログ記事は「Highslide JS用アトリビュート追加-Movable Type(ムーバルタイプ)埋め込み画像カスタマイズ」です。

次のブログ記事は「Answers.com for Firefox-検索結果を表示するには」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。