• 締切済み

Javascriptを使わないロールオーバーのやり方

CSSのみでロールオーバーの指定をしたいとき、皆さんはどのような方法を使われていますか? ・a:hoverで画像を入れ替える (ボタン画像を背景に指定し、文字をインデントで飛ばしている時) ・a:hoverでボタン部分の背景をnoneにして、さらに後ろにある背景を表示させる ・通常時とhover時用の画像を一枚の画像にまとめて背景に指定し、a:hover時に背景画像を移動させる などなど。 いろいろとやり方はあるかと思いますが、皆さんがどのようにされているか教えていただけるとうれしいです。 よろしくお願いします。

noname#127481
noname#127481
  • HTML
  • 回答数3
  • ありがとう数3

みんなの回答

回答No.3

基本はjavascriptでやるべきだと思っていますが、どうしてもCSSという条件でなら今ならlist-item-imageじゃないですかね。 text-indentを使わない分弱点が少ないです。 ただしIE6とモダンブラウザのみで、IE5.5以下は切り捨てになります。 <a href="#"> <span>あああ</span> </a> a{ width:120px; height:50px; overflow:hidden; } a span { display:list-item; list-style:none url(link.gif) inside; } a:hover span{ list-style-image:url(hover.gif); } haslayoutがらみでもう少しなにかやらないといけなかった気がしますが・・・ ずっと前に作ったやつなのでよく覚えてないですが↓みたいな方法もあります。 <p class="RollOver"><a href="#"><img src="link.gif"></a></p> /* RollOver -- IE4~ MacIE5.1~ NN6.2~ FF1~ OP7~ SF1~ */ .rollOver { display:table; } .rollOver a { display:table-cell !important; display:inline-block; text-decoration:none; background:url(hover.gif) transparent 0 0; } .rollOver a img { position:relative; } .rollOver a:hover { background-position: 0% 0%; } .rollOver a:hover img { z-index:-1; } /* RollOver End */

noname#127481
質問者

お礼

基本はjavascriptでやるべき なのですね。 CSSでやったほうがいい、と勘違い?していました。 大変参考になりました。 ありがとうございました。

回答No.2

どこからどこまでがアンカーとして有効なのかわかるように、hover指定はしてほしいですね。 colorでもbackgroundでも、borderでもtext-decorationでもいいですし。 linkさえ指定なしにしてもらえると、ブラウザの設定の色が反映されるのでいいのですが。 クリックの代わりとしてmouseover/hoverを使うのは、わたしも好ましいとは思いません。 > いろいろとやり方はあるかと思いますが、皆さんがどのようにされているか教えていただけるとうれしいです。 ネットワークリソース、ファイルサイズの節約の意味も込めて、 JavaScript/CSSいずれも、画像をひとまとめにする方法にするようにしています。 (画像の作り方や作成手間の関係で変わります。) > (ボタン画像を背景に指定し、文字をインデントで飛ばしている時) この方法はCSSオン、画像オフの場合に文字が表示されなくなりますから、好ましくないと思います。

noname#127481
質問者

お礼

大変おそくなりました。 とても参考になりました。 ありがとうございました。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

ちなみに私はホバーは嫌いです。 きっちりとクリックして欲しいです。 マウスを動かすだけでベロベロ変わるのは嫌いです。 こんな人もたくさんいるのをお忘れなく

noname#127481
質問者

お礼

ご意見ありがとうございました★

関連するQ&A

  • CSS・HTMLのロールオーバーについて

    テキストリンクにロールオーバーで任意の背景画像を入れるにはどうしたら良いでしょうか。 cssにて:hover擬似クラスで背景画像を指示し、テキストリンクにカーソルを合わせると背景画像が表示されるところまでは出来ましたが、リンク毎に画像を変える方法はありますでしょうか。(:hoverの擬似クラスを増やせば出来るとは思いますが、猥雑になってしまうので…) リンクが画像だったらonmouseoverで指定したことがありますが…。浅学なりに調べながら書いておりましたが、行き詰まってしまいました。 どなたかお知恵をおかしいただけますと幸いです。

  • メニューのロールオーバーについて

    メニューボタンをロールオーバーさせようと思った時 現在の主流テクニックはどのような方法なのでしょう? 一時期cssで背景画像を変える方法が流行りましたが、 text-indent; -9999pxを使って文字を消すようなやり方は もう古い(意味がない)でしょうか。 素直に画像を埋め込んで使おうかなーとも思っています。 そうすると、Javascriptを使うやり方が無難でしょうか? cssを使うなら、ロールオーバーで、透明画像をかぶせるのもいいかな?とか考えていますが。 ご意見お聞かせくださいませ。

    • 締切済み
    • CSS
  • CSSでのロールオーバー

    CSSでのロールオーバーについての質問です。 通常時A ロールオーバーB クリック時C この3つの画像を使ってメニューをロールオーバーさせたいのですが、 クリック時に切り換えさせる術を知らず、困っております。 a:link,a:visited{background-image:url(通常時A); a:active,a:hover{background-image:url(ロールオーバーB); でロールオーバーさせることは出来たのですが、クリック(Onclick)時に画像を切り換えることは、CSSで可能なのでしょうか。 宜しく御願い致します。

    • ベストアンサー
    • HTML
  • cssで、一枚の画像でロールオーバーができない。

    一枚の画像でロールオーバーさせたいのですが、 どうしてもうまくいきません; 全体 幅495px,高さ60px の画像。 幅99x30pxのボタンで、縦2,横5つ並んでいます。 縦1行目に、通常ボタンが横5つ。 縦2行目に、オンマウスボタンが横5つ。 nav1~nav5のボタンに、 通常は、1行目、1つ目のボタンが表示されていて、 オンマウスすると、画像が消えてしまいます。 わかる方、回答お願いします。 ■html <div id="globalnav"> <ul> <li id="nav1"><a href="#">a</a></li> <li id="nav2"><a href="#">b</a></li> <li id="nav3"><a href="#">c</a></li> <li id="nav4"><a href="#">d</a></li> <li id="nav5"><a href="#">e</a></li> </ul> </div> ■css #globalnav{ width:495px; height:30px; margin-left:305px; margin-top:70px; padding:0; } #globalnav ul{ list-style: none; margin:0; padding:0; } #globalnav li{ float:left; width:99px; margin:0; padding:0; text-indent:-9999px; } #globalnav li a{ display:block; text-decoration:none; width:99px; height:30px; background: url(rollover.gif) no-repeat; } /*通常*/ #nav1 a { background: 0 0; } #nav2 a { background: -99px 0; } #nav3 a { background: -198px 0; } #nav4 a { background: -297px 0; } #nav5 a { background: -396px 0; } /*オンマウス*/ #nav1 a:hover { background: 0 -30px; } #nav2 a:hover { background: -99px -30px; } #nav3 a:hover { background: -198px -30px; } #nav4 a:hover { background: -297px -30px; } #nav5 a:hover { background: -396px -30px; }

  • cssとjavascriptを使って画像の一部をロールオーバー

    以下の条件でロールオーバーをさせることが可能かどうか、また可能な場合はどのようにしてやるのか教えていただきたいです。 (1)1枚のgif画像がある。画像内にいくつか文字があり、文字の上にカーソルが上がった時に文字の色を変えたい。 (2)文字がすべてロールオーバーしていない元画像と、文字がすべてロールオーバーした画像の2枚を用意。 (3)CSSとjavascriptを駆使して作りたい。 元画像を背景に設定し、その上にロールオーバー後の画像を配置し、隠す。→文字の上にカーソルが来たら、隠していたロールオーバー後の画像の一部をその同じ場所に表示させる というような考え方でやってみたのですが、どうもうまくいきませんでした。Flashでやった方が簡単なのですが、Flashは使わずに作るということになっているので困っています。 何卒、よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 「ロールオーバー」という単語の出典は?

    ある要素にhover擬似クラスがセレクタとして指定されていて, そこでbackground-imageプロパティやbackground-colorプロパティが指定されていると,マウスカーソルがその要素上に移動したとき,背景画像や背景色が変化します。 http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-18.html さて、HTMLカテゴリやWeb Page Designカテゴリでは,このことが良く 「ロールオーバー」という言葉で呼ばれているのを見かけますが、 これは公式に定義された用語なのでしょうか? そうでなければ,どこから使われだした用語でしょうか?

    • ベストアンサー
    • CSS
  • Javascriptによる2系統のロールオーバー指示について

    お世話になります。 ロールオーバーで困っています。 困っているのは下記です。 「A」と言う画像をロールオーバーで赤文字の画像に変える。 「A」と言う画像にロールオーバーで「B」の画像を変える。 上記の場合はそれぞれ1系統の指示ですよね? 上記場合の両方への指示はできないものでしょうか? 制作ソフトはDreamweaver 8です。 ご教授よろしくお願い致します。

  • CSSの画像のマウスオーバーの質問です

    こんにちは [画像A]にリンクをはって、マウスオーバーの時に、[画像B]に切り替わるようにしたいのですが、できません。 ドリームウィーバーのビヘイビアパネル→スワップイメージを使うとできました。 しかし、CSSを使って、マウスオーバー時に画像を切り替えたいのです。 テキストを入れて、テキストインデント、-9999でテキストを飛ばして背景に「画像A」を持ってきて、a:hoverで「画像B」をいれて、マウスオーバーを切り替える。これもできました。 しかし、 <body> <a href="#"><img src="images/gazou.jpg" width="100" height="100" /></a> </body>      ↑ このような画像のリンクにCSSを使ってマウスオーバーの画像切り替えをしたいのです。 どなたか、ご存知の方教えてください。 よろしくお願いします。

    • ベストアンサー
    • CSS
  • cssスプライトで作ったボタンがIE6でロールオーバー時に消える

    CSSでロールオーバーするボタンを作りました。(CSSスプライトという手法で作っています) ところが、IE6でのみ、ロールオーバー時に、ボタン画像が消えます。 ためしにjavascriptで先にキャッシュを読み込ませてみましたが、やっぱり消えてしまいました。 どうしたらIE6でも正常に表示できますか?

  • FC2ブログ ロールオーバー

    私はFC2でブログをやっていてheaderの画像をロールオーバーを使いマウスが上に行ったときに違う画像が表示されるというのに挑戦し以下のものを使ってみたのですがFireFoxではちゃんとロールオーバーできたのですがIEやスレイプニルだとロールオーバーできません。何か心辺りのある方がいらっしゃいましたらご教授お願いします。 #header_body { width: 810px; /* 画像1枚分の横幅 */ height: 250px; /* 画像1枚分の高さ */ margin:10px 5px 10px; background-image: url("http://~"); /* 画像ファイル名 */ } #header_body:hover { background-position: top right; /* 背景画像の表示開始基準を右上に変更 */ }

専門家に質問してみよう