リンクの表示について

[新着] Webテンプレートを仮オープンしました



0   名前: 常磐 : 2006/02/03 02:02
サイト名の上にマウスを乗せると、
バナーに変わるようにしたいのですが、可能でしょうか?

自分で調べられる範囲で調べたのですが、未だ分からずにおります。
どうか、よろしくお願い致します。

1   名前: カヅサツ : 2006/02/03 02:02  [URL
> サイト名の上にマウスを乗せると、バナーに変わるようにしたいのですが、可能でしょうか?

あるテキストをポイントすると、画像に変わる(たぶん、加えて元テキストがalt属性値になる、が適切でしょうか)、ということでしたら、DOM と JavaScript で可能です(もちろん、JavaScriptをオフにしていたり、非(未)対応ブラウザを使っていれば何も起きませんが)。

2   名前: のぶ : 2006/02/03 02:02
スタイルシートを使っても、できるのではないでしょうか。
カーソルが該当するテキストに重なったとき(a:hover)、background-imgに
表示させたい、バナーの画像ファイルを指定すれば、良いのではないかと思うのですが。
スタイルシート ロールオーバーって、検索すると情報がでてくるのではないでしょうか。


JavaScriptでも、できるのでしょうが、僕にはわかりません。


3   名前: S : 2006/02/03 02:02
>>JavaScriptでも、できるのでしょうが
 いわゆる「ロールオーバー」ってやつなら、このサイトにある。

http://www.tagindex.com/javascript/link/index.html

 ただし、スクリプトが使えない(使わない)環境にも配慮が必要。

http://nekoshiki.poke1.jp/guidline/link.html
http://nekoshiki.poke1.jp/guidline/script.html
http://bakera.jp/html/opinion/zannen1.html
http://bakera.jp/html/opinion/zannen2.html

4   名前: カヅサツ : 2006/02/03 02:02
> カーソルが該当するテキストに重なったとき(a:hover)、background-imgに
> 表示させたい、バナーの画像ファイルを指定すれば、良いのではないかと思うのですが。

テキストはどうやって消しましょう?

5   名前: 常磐 : 2006/02/03 02:02
皆様、回答ありがとうございます。

ロールオーバーの場合、

<A href="URL" onmouseover="this.src='画像アドレス'" onmouseout="">サイト名</A>

のような感じでよろしいのでしょうか?
間違っていたら、ご指摘下さると幸いです。

6   名前: Pid : 2006/02/03 02:02
スクリプトを使う場合,バナーの URI をどこに格納しておくかが悩み所でしょうか。たとえば,独自の名前空間の属性を作って

<a href="sample.html" ro:banner="banner.png" onmouseover="ro (this);">サイト名</a>

function ro (anc) {
var node = document.createElement ('img');
node.src = anc.getAttribute ('ro:banner');
node.alt = anc.firstChild.data;
node.title = anc.title;
node.onmouseout = function () { this.parentNode.replaceChild (anc, this); }
return anc.parentNode.replaceChild (node, anc);
}

とか(なお,上記はあくまで考え方を示すもので,実際の使用には画像の先読み・要素の再利用・イベント切り離しなど,もう三工夫くらいは必要でしょう)。


スタイルシートを使う場合,a 要素の中にもう一つ要素をかませる必要があるでしょうか。

<a href="sample.html"><span>サイト名</span></a>

a:hover {
display: block;
width: 32px;
height: 32px;
background: url("banner.png");
text-decoration: none;
}

a:hover span {
visibility: hidden;
}

ロールオーバーのためだけに要素を増やすのは避けたいところですが,もっと良い方法はあるでしょうか。

一覧へ戻る