Container Family: Simple Tooltip Example
このExampleでは、Tooltipの簡単な作り方が示されている(たしかに簡単に作れる)。
Tooltip(ツールチップ)とは、YUIの上記リンクによれば、
The standard tooltip interaction pattern involves a small overlay that is displayed when the mouse hovers over a context element for a specified amount of time.(YUIのExample; Container Family: Simple Tooltip Exampleより引用)コンテキスト要素にマウスオーバーした際に、一定の時間表示されるもの
と定義されている。
先の例に書いたように、YAHOO.widget.TooltipはYAHOO.widget.Overlayの子孫にあたる。
Overlayとの違いとしては、
があげられる。
上記の定義から、Tooltipはコンテキスト要素(よく出てくる割に訳しづらい単語だが、漠然と「コンテンツ・エレメント」と同様の意味と捉えていいと思う)に対して設定するが、どのコンテンツに、どのようなテキストを表示するかは、インスタンス化する際にコンフィグ・パラメータとして設定するだけでよい。パラメータは以下。
パラメータ | 意味 | |
context | どのコンテキストにマウスオーバーした際に表示するかを指定する。idかelementの参照を設定する。 | |
text | マウス・オーバーした際に表示するテキスト。指定しなかった場合、コンテキストのtitleをこの値とみなす | |
showdelay | マウスオーバーしてから表示するまでの時間。デフォルト値は200msec。 | |
hidedelay | マウスアウトしてから消えるまでの時間。デフォルトは250msec。 | |
autodismissdelay | 表示してから自動的に消えるまでの時間。デフォルトは5000msec=5sec。 |
サンプルの初期画面は以下。
オレンジ色の矩形と、リンクが、tooltipのターゲットとなるコンテキスト。
オレンジの矩形にマウスオーバーすると、Tooltipが現れる。このツールチップはコンフィグ・パラメータで表示するテキストを指定している。
表示テキストに「黄色な矩形に囲まれるようなスタイル」が適用されていることが分かる。
YUIのExampleでは、beforeShowイベント(YAHOO.widget.Overlayの親たるYAHOO.widget.Moduleから継承)でloggerをつかってログを吐き出すようにしているが、このサンプルでは、id=logのdivに出すようにした。この要素にマウスオーバーすると、ログ(緑の文字)が表示される。
リンクにマウスオーバーすると、下のようなTooltipが現れる。
このTooltipのテキストは、aタグのtitle属性から拾ってきている。
このリンクにマウスオーバーしても、ログは表示されない。
以下に、Javascriptを含むHTMLの全文を示す。
<HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <TITLE>Ajax_Sampling</TITLE> <style type="text/css"> body { margin:0; padding:0; } </style> <link rel="stylesheet" type="text/css" href="scripts/yui/fonts/fonts-min.css" /> <link rel="stylesheet" type="text/css" href="scripts/yui/container/assets/skins/sam/container.css" /> <script type="text/javascript" src="scripts/yui/yahoo-dom-event/yahoo-dom-event.js"></script> <script type="text/javascript" src="scripts/yui/container/container-min.js"></script> <style type="text/css" id="defaultstyle"> #container { margin: 2px; padding: 3px; width: 400px; height: auto; border:1px dashed #999999; } #ctx { background:orange; width:200px; height:200px; } a hover { cursor:pointer; } </style> <script type="text/javascript"> YAHOO.namespace("example.container"); YAHOO.example.container.SimpleTooltip = function() { var tt1,tt2; var Dom = YAHOO.util.Dom; return{ init: function() { tt1 = new YAHOO.widget.Tooltip("tt1", { context:"ctx", text:"これはconfigの'text'プロパティーで設定した文です" } ); tt1.beforeShowEvent.subscribe(function(){ Dom.get('log').innerHTML += '<hr><font color="green">Tooltipが現れますよ</font>'; // YAHOO.log("Tooltip one is appearing.","info","example"); }); tt2 = new YAHOO.widget.Tooltip("tt2", { context:"link" } ); } }; }(); //DOMが完全にloadされたら、サンプルを初期化する。 YAHOO.util.Event.onDOMReady( //DomReadyイベントで発火するハンドラ YAHOO.example.container.SimpleTooltip.init, //ハンドラに渡すオブジェクト(関数) YAHOO.example.container.SimpleTooltip, //ハンドラは、上記のオブジェクトのスコープをもつ。 true ); </script> </HEAD> <BODY class="yui-skin-sam"> <div id="container"> <p> 簡単なTooltipのサンプルです。 </p> <p id="ctx">マウスを重ねるとtooltipがでます。</p> <p> <a id="link" href="http://www.yahoo.com/" title="これはaタグの'title'属性で設定した文です"> マウスを重ねるとtooltipがでます。 </a> </p> <!-- 以下にログを出します。 --> <div id="log"> </div> </div> </BODY>