[JS] thickboxを活用して利用者に分かりやすいサイトを作ろう | A Day In The Boy's Life
Ameba Ameba 20th Anniv. ホーム ピグ アメブロ
芸能人ブログ 人気ブログ
新規登録
ログイン

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

  • ブログトップ
  • 記事一覧
  • 画像一覧

少し古いライブラリですが、thickboxというjQueryをベースにしたJavaScriptのライブラリがあります。

Ajaxを使った非同期通信で、画像や別のHTMLファイルを画面にオーバーレイして表示してくれるという特徴があります。


手っ取り早くthickboxを知りたい場合は、 公式サイト の中にあるサンプル(上部メニューのExamplesから)を見てみるのが早いでしょう。

このように画像やコンテンツをページ遷移することなく、しかも格好よく見せることができるライブラリです。


このライブラリ自体は結構有名なのですが、実際に使うとなると使い道があまり見出せないと思う人も多いかもしれません。

個人のブログで、掲載した画像を格好よく見せたいという場合はありかもしれませんが、サイトやアプリケーションを構築するにあたって、画像を強調するような見せ方をすることは多くありません。


で、もう一つの機能である別のHTMLファイルを表示するという機能を使って、利用者に分かりやすいサイト作りをする方法を考えてみたいと思います。

例えば業務アプリケーションで多い、入力フォームを用意した画面に各項目の説明をこのthickboxを通して分かりやすく見せてあげるとか、文章中に出てくる難しい言葉の説明を、その文字列をクリックする事でFAQのように見せてあげるというような使い道があったりします。


こんな感じのHTMLがあって、特定の文字にthickboxを呼び出すロジックを組み込んでおきます(リンク部分)


thickboxサンプル1

このリンク部分をクリックすると


thickboxサンプル2


thickboxを動かして、そのリンク部分の説明書きを表示するとか。


以前に紹介した、特定の文字にマウスをあてると吹き出しを表示してくれる Hints.js でも似たような事はできるのですが、このようなFAQ形式であれば文字数が多くなったりしますし、画面のレイアウトを自由に変えれるのでお勧めです。(Hints.jsは特定の位置にマウスをあて続けなければ表示が消えてしまいますし)



thickboxの設置方法


1. jQueryのダウンロード


最初に説明したとおり、thickboxはjQueryをベースに作られているので、まずはjQueryを設置する必要があります。

jQueryのダウンロードは、 公式サイト より行えます。

今回は、2008年11月時点で最新のバージョン1.2.6を使用しています。

また、ここではファイル名をjquery.jsとしています。



2. thickboxのダウンロード


thickboxを使用するには3つのファイルが必要です。


- thickbox本体 (JavaScriptファイル)

- thickbox用のCSSファイル

- ページ読み込み時のアニメーションGIF (※)


※ なくても動きます。


しかし、thickbox本体に関しては、公式ページからダウンロードするのではなく、下記サイトからダウンロードしたものを利用した方がよさそうです。


Thickbox 3.1 IE7 Positioning bug @ Jamie Thompson


※ thickbox.patch.jsをダウンロード


理由は、本家のthickboxを利用するとInternet Explorer7で見たときに表示位置やレイアウトがずれるというバグがあります。

どうも表示するコンテンツの高さがブラウザのウィンドウサイズを超えて表示した場合に、位置がずれるというバグが出てくるようです。



3. jQueryとthickboxの配置


では、ダウンロードしたjQueryとthickboxを配置してみましょう。

今回は、下記のような構成で配置してみました。


.
|-- css
| `-- thickbox.css
|-- img
| `-- loadingAnimation.gif
|-- index.html
|-- js
| |-- jquery.js
| `-- thickbox.js
`-- readme.html

配置する位置は任意の位置でかまいませんが、thickbox本体(thickbox.js)内にローディング時のアニメーションGIFのパスを指定している箇所があるので、そこを編集しておく必要があります。


- thickbox.js 11行目

var tb_pathToImage = "/img/loadingAnimation.gif";


thickboxの使い方


先ほどの例で示したようなFAQ形式でHTMLファイルを表示する場合の方法について書きたいと思います。

呼び出しもとのHTMLファイルを作ります。


- index.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>a day in the boy's life</title>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/thickbox.js"></script>
<link rel="stylesheet" href="/css/thickbox.css" type="text/css" media="screen" />
</head>
<body>
<br />
<br />
このサイトは、<a href="/help.html?height=200&width=400" class="thickbox">A Day In The Boy's Life</a>の別館です。
</body>
</html> 

最初に、jQueryのJavaScriptファイル(jquery.js)を呼び出した後に、thickbox本体を呼び出します。

そして、thickbox用のCSSも読み込むように指定します。


アンカータグ内で指定している、width(表示する画面の幅。デフォルト630px)とheight(表示する画面の高さ。デフォルト440px)のパラメータがthickboxで表示する際の横幅と縦幅になります。

これはお好みで調整可能です。

最後に、class名をthickboxと指定します。(このクラス名がthickboxの呼び出し対象となります)


呼び出し先のHTMLファイル(上記の場合、help.html)はなんでもかまいません。

この中に画像やFlashを埋め込んでいても問題なく動作します。

ただ、thickboxで表示する際の幅と高さにあわせた形で作っておいた方が綺麗に見せることができます。


また、今回は静的なHTMLファイルを呼び出してみましたが、FAQの文字列をDBに登録しておき、上手くパラメータを渡す事で動的に見せるプログラムファイルを指定しても問題なく動作します。



thickboxの応用


単純に言ってしまえば、ポップアップウィンドウの代用と言ったところですので、様々な応用が考えれます。

例えば、住所入力フォームで郵便番号検索を補助するような役割のヘルプ画面に応用してみましょう。

よくあるパターンでは、「郵便番号検索」というようなボタンをクリックすると新しいウィンドウが立ち上がって、そこから自分の住所を選択すると、元画面のテキストボックスに郵便番号が入っているというパターンです。


まずは、イメージから。


最初に、このような画面があって「こちら」の部分がリンクになっており、クリックする事でthickboxが呼び出されます。

thickbox-3

この画面から「こちら」というリンクをクリックすると、郵便番号検索画面がでてきます。


thickbox-4

この画面から「登録」というボタンを押すと、thickboxが解除されて元画面の「郵便番号」のテキストボックスに該当の住所の郵便番号が入るというものです。


ソースもいたって簡単にかけます。


- 呼び出しもとのファイル(input.html)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>a day in the boy's life</title>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/thickbox.js"></script>
<link rel="stylesheet" href="/css/thickbox.css" type="text/css" media="screen" />
</head>
<body>
<br />
<br />
<br />
郵便番号を入力してください。郵便番号が不明な場合は、<a href="address.html?width=400&height
=250" class="thickbox">こちら</a>から検索できます。
<br /> 郵便番号: <input type="text" name="text_box" id="zip_code"> </body> </html>


- 呼び出し先のファイル(address.html)

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>a day in the boy's life</title>
<link rel="stylesheet" href="/css/mystyle.css" type="text/css" />
<script type="text/Javascript">
<!--

function inputZipCode(zip_code) {
$("#zip_code").val(zip_code); // 開いたファイルにあるテキストボックスに郵便番号をセット
tb_remove(); // thickboxを解除する
}

// -->
</script>
</head>
<body>
<table class="help_tab">
<tr>
<th>-</th>
<th>住所</th>
</tr>
<tr>
<td><input type="button" value="登録" onClick="inputZipCode('160-0021')"></td>
<td>東京都 新宿区 歌舞伎町</td>
</tr>
<tr>
<td><input type="button" value="登録" onClick="inputZipCode('154-0017')"></td>
<td>東京都 世田谷区 世田谷</td>
</tr>
<tr>
<td><input type="button" value="登録" onClick="inputZipCode('150-0002')"></td>
<td>東京都 渋谷区 渋谷</td>
</tr>
</table>
</body>
</html>

「登録」ボタンが押されると、(jQueryの表記になりますが)受取った郵便番号を呼び出しもとのファイル(input.html)のテキストボックスの値にセットしてあげています。

そして、その後にtb_remove()関数でthickboxを解除しています。

tb_remove()関数は、thickbox.jsの中で定義されています。


使い方次第で色々な応用ができるライブラリなので活用してみては如何でしょうか。


[PR] ★ロリポップ!★WordPressやMovableTypeの簡単インストール、cron、共有SSL対応!

[PR] 光ファイバー/ADSLを楽しむなら「安心」「安全」の@nifty!


[PR] 世界にたった一つ、あなただけのドメインを登録しよう!




聚圣源店字起名字起名古文高新技术公司起名2018年十一月初八男孩起名卢姓女孩起名分数悠视游戏一方净土崔家男孩起名合作社起名字好听试炼之地纸包鱼起名大全cmi8738适合女孩子起名的字姓程起名字女孩子私生活韩剧起网名大全免费取名微信网名给男孩起名字姓董博 起名赞美桂花香的诗句www.readnovel.com棋牌室起啥名字好王爷你敢娶小三试试txt下载测绘公司起名大全电脑疯子win7北京外墙保温重庆公司起名述职述廉述德报告属牛的的孩子起名丫丫视频直播水产开店起名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化