タブ
投稿日: 2008-06-03 /
カテゴリー:job
prototype.js(バージョン:1.6.0)を使います。
以下を適当な名前で保存。tab.jsとか。
function controltabs(tablistid, idx, tabidnm, tabbodyidnm){ var i = 0; objp = $(tablistid); if (objp) { $A(objp.getElementsByTagName("a")).each(function(obj, index){ i = getindexfromname(obj.id, tabidnm); if (i >= 0) { controltab(i, tabidnm, tabbodyidnm, false); } }); } controltab(idx, tabidnm, tabbodyidnm, true); } function controltab(idx, tabidnm, tabbodyidnm, val){ var obj; var classnm = "unselect"; if (val == true) classnm = "select"; obj = $(tabidnm + idx); if (obj) obj.className = classnm; obj = $(tabbodyidnm + idx); if (obj) obj.className = classnm; } function getindexfromname(id, idnm) { rtn = -1; var len1 = id.length; var len2 = idnm.length; var str = id.substr(len2, len1 - len2); if (str != "") { rtn = eval(str); } return rtn; }
以下も。tab.cssとか。
div.tablist { font-size: smaller; font-weight: normal; text-align: left; vertical-align: middle; margin: 0px; margin-top: 10px; padding: 2px; border-bottom: 2px solid #cccccc; } div.tablist a { vertical-align: middle; margin: 0px; margin-right: -1px; padding: 4px; background-color: #ffffff; border: 1px solid #cccccc; text-decoration: none; } div.tablist a.select { background-color: #c5e0e5; } div.tablist a:hover { background-color: #ffeecc; } div.tablist a.select:hover { background-color: #ffeecc; } div.tablist a.select:hover { background-color: #bbccbb; } div.frame { text-align: left; margin-top: 0px; margin-bottom: 10px; border: none; padding: 2px; padding-top: 10px; } div.frame div.select { display: block; } div.frame div.unselect { display: none; }
本体はこんな感じ。多分動くと思います。
<?xml version="1.0" encoding="EUC-JP"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head><meta http-equiv="content-type" content="text/html; charset=EUC-JP" /> <link rel="stylesheet" type="text/css" href="../css/tab.css" /> <script src="../js/prototype.js" type="text/javascript"></script> <script src="../js/tab.js" type="text/javascript"></script> </head> <body > <div> <div class="tablist" id="tablist"> <a href="#" class="select" id="tab1" onclick="controltabs('tablist', 1, 'tab', 'frame');">1</a> <a href="#" class="unselect" id="tab2" onclick="controltabs('tablist', 2, 'tab', 'frame');">2</a> <a href="#" class="unselect" id="tab3" onclick="controltabs('tablist', 3, 'tab', 'frame');">3</a> </div> <div class="frame"> <div class="select" id="frame1">1ページ目!</div> <div class="unselect" id="frame2">2ページ目?</div> <div class="unselect" id="frame3">3ページ目!!</div> </div> </body> </html>
動けばいいや的発想なのでjsとcssがセットじゃないと動かないじゃんかとかそういうツッコミはまったくもって正しいです。
ちなみに印刷するときは、cssの@media printで「unselect」クラスのdisplayをblockにしたりするといいと思います。私はさらにtablistのdisplayをnoneにしました。
ああ!やっと追いついた。(日記が。)
男子バレーの試合は録画してるので後でゆっくり観ます。がんばれーーー!!!