CSSを用いた画像にカーソルを合わせる効果の作成方法

このQ&Aのポイント
  • HTMLとCSSを使用して画像にカーソルを合わせると、別の画像が現れる効果を作りたいと思っています。
  • しかし、現在実装したところ画像の一部だけが繰り返された画像になり、別の部分が消えてしまいます。
  • アドバイスをいただけると助かります。
回答を見る
  • ベストアンサー

HPの作成について質問です。cssを用いてある画像にカーソルを合わせる

HPの作成について質問です。cssを用いてある画像にカーソルを合わせると、別の画像が現れるという効果をつけたいと思っています。下記のような(該当部分と思われるところ)htmlとcssを作成したのですが、画像の1の部分だけがカーソルにあわせた画像が繰り返された画像となります。また画像の2の部分が画像にカーソルを合わせるとなぜか消えてしまいます。アドバイスお願いします。 *HTML <div id="naraberu"> <ul> <li class="Qone-one"><a href="kikimashita1.html"></a></li> (省略) <li class="Qone-twelve"><a href="kikimashita1.html"></a></li> <li class="Qone-thirteen"><a href="kikimashita1.html"></a></li> <li class="Qone-fourteen"><a href="kikimashita1.html"></a></li> <li class="Qone-fiveteen"><a href="kikimashita1.html"></a></li> <li class="Qone-sixteen"><a href="kikimashita1.html"></a></li> <li class="Qone-seventeen"><a href="kikimashita1.html"></a></li> <li class="Qone-eighteen"><a href="kikimashita1.html"></a></li> <li class="Qone-nineteen"><a href="kikimashita1.html"></a></li> <li class="Qone-twenty"><a href="kikimashita1.html"></a></li> <li class="Qone-twentyone"><a href="kikimashita1.html"></a></li> </ul> <!--end div#naraberu--> </div> *CSS #naraberu { position: relative; margin-top: 10px; margin-left: 20px; width: 400px; height: 1000px; } #naraberu a{ display:block; width:64px; height:79px; } #naraberu a:hover{ position: absolute; left: 380px; top: 90px; display:block; width:210px; height:278px; } (省略) .Qone-fourteen a { background-image: url(../images/card_moto.png); } .Qone-fourteen a:hover { background-image: url(../images/card_example.png); } .Qone-fiveteen a { background-image: url(../images/card_moto.png); } .Qone-fiveteen a:hover { background-image: url(../images/card_example.png); } .Qone-sixteen a { background-image: url(../images/card_moto.png); } .Qone-sixtten a:hover { background-image: url(../images/card_example.png); } (省略) .Qone-nineteen a { background-image: url(../images/card_moto.png); } .Qone-nineteen a:hover { background-image: url(../images/card_example.png); } .Qone-twenty a { background-image: url(../images/card_moto.png); } .Qone-twentyone a:hover { background-image: url(../images/card_example.png); }

  • HTML
  • 回答数2
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
  • kawacchi
  • ベストアンサー率83% (26/31)
回答No.2

質問内に記述されていない部分なのであくまでも推測ですが、 liまたはa要素に対して「float:left」を宣言していませんか? a要素のマウスオーバー時に、ポシション指定で右側に移動させていますね。 その移動して空いた部分に後続のa要素が詰めて表示されるため、 2の画像が消えたように見えるのではないかと思います。 現在、すべて同じ画像を使用されているのでわかりにくいと思いますが、 それぞれ違う画像を表示させてみるとわかるのでは? マウスオーバーでマウスの範囲外に画像を移動させ、 マウスオーバーでなくなったため瞬時に元の位置に戻る・・・。 おそらく画像がチラチラして見えると思いますよ。

tiroze
質問者

お礼

回答ありがとうございます。 参考になりました。

tiroze
質問者

補足

回答いただきありがとうございます。 確かにli要素に『float: left;』を指定してました。 kawacchiさんの説明ですと、2の画像だけでなく、他のものも消えたように見えないとおかしいのかなぁとおもってしまいます。いかがでしょうか? おなじ画像にしているのも分かりにくくなっている原因だと思いますので、違う画像で試してみます。 教えていただきありがとうございます。

その他の回答 (1)

  • zeff
  • ベストアンサー率69% (137/198)
回答No.1

「1」の部分と言うのが1番目から20番目のことなのか、 15番目だけなのかわからなかったのですが、 (fiveteenでなくfifteenのような)。 background-repeatは何も指定しないと 初期設定がrepeatになるので、 そこを追加してやればよいです。 http://www.htmq.com/style/background-repeat.shtml #naraberu a{ display:block; width:64px; height:79px; /*背景画像を繰り返さない*/ background-repeat:no-repeat; } #naraberu a:hover{ position: absolute; left: 380px; top: 90px; display:block; width:210px; height:278px; /*背景画像を繰り返さない*/ background-repeat:no-repeat; } それと以下をケアレスで指定し忘れているので、 画像が消える(表示されていない)現象が起こっているのでは。 21番目だけでなく20番目も。 .Qone-twenty a { background-image: url(../images/card_moto.png); } /*お忘れです*/ .Qone-twenty a:hover { background-image: url(../images/card_example.png); } /*お忘れです*/ .Qone-twentyone a { background-image: url(../images/card_moto.png); } .Qone-twentyone a:hover { background-image: url(../images/card_example.png); } 状況を再現できないので論理だけですが、 変だなと思った点を指摘させていただきました。

tiroze
質問者

お礼

回答ありがとうございます。 参考になりました。

tiroze
質問者

補足

回答いただきありがとうございます。 『1』というのは、15番目のみという意味で書きました。 分かりにくくて申し訳ありません。 15のスペルに関してもご指摘ありがとうございます。 ご指摘どおり、background-repeatの設定をしました。 繰り返さない画像にすることができました。 しかし、私はA画像→B画像にしたいのですが、A画像→A画像になってしまいます。 しかも、画像のはじと、中心でカーソルを置いたときにうつる画像が違ってしまっているのです。 なぜか分かりますでしょうか? また、指定忘れの件ですが、私の自分のCSSの写し間違いでした。元のCSSではa:hover,aに関する指定がされておりました。正確な情報を伝えられず手間を取らせてしまい、申し訳ありませんでした。

関連するQ&A

  • ボタンのa:activeの画像が表示されません

    ●質問させて頂きます。cssで指定したa:activeの画像が表示されません。 html <ul> <li class="sogo"> <a href="index.html">●●</a> </li> <li class="kinri"> <a href="kinri.htmi">●●</a> </li> <li class="shinsa"> <a href="shinsa.html">●●</a> </li> <li class="gendo"> <a href="gendo.html">●●</a> </li> <li class="raiten"> <a href="raiten.html">●●</a> </li> </ul> css  ● >996 付け足しです。関係あるかわかりませんが、書いたcssの上に次のようなソースもあります。 css .sogo { background-image: url("../images/sogo.jpg"); display: inline; height: 45px; text-indent: -9999px; width: 180px; .sogo a { background-image: url("../images/sogo.jpg"); display: block; float: left; height: 45px; text-indent: -9999px; width: 180px; } .sogo a:hover { background-image: url("../images/sogo_on.jpg"); } .sogo a:active { background-image: url("../images/sogo_on.jpg"); } このように指定すると、a:hoverでは画像が変わるのですが、a:activeではaの画像のままです。どうぞご教示ください。

    • ベストアンサー
    • CSS
  • CSSについての質問

    現在、CSSを使用して、ホームページを制作しています。 a:hoverを使って、メニューを作成しようとしているのですが、 http://www5.atpages.jp/ri19960914/menu.png ↑のようになってしまいます。(URLは、必ず直接入力、またはコピペしてください) イメージとしては、「BBS」を「TOP」と同じ高さにしたいのですが・・・(↓の画像のように) http://www5.atpages.jp/ri19960914/souzou.png メニュー周辺の、CSSとHTMLです。 --------------CSS------------------------- #head { background:url("/images/imgX.png") repeat-x; } #head .menu { padding:100px 0px; } #head .menu li a { padding:40px 40px; border-left:1px solid #0ff; border-right:1px solid #0ff; color:#000; float:left; } #head .menu li a:hover { padding:40px 40px; border-left:1px solid #0ff; border-right:1px solid #0ff; color:#000; background-color:#0ff; } ----------HTML----------- <div id="head"> <div class="menu"> <li><a href="/">TOP</a></li><li><a href="/bbs/">BBS</a></li> </div> ご指導いただければ、幸いです。 お願いします。

    • ベストアンサー
    • CSS
  • CSSについての質問

    /** ナビゲーション */ #mainNavi { width:740px; height:50px; overflow:hidden; margin-left:200px; } #mainNavi li, #mainNavi li.acitve { float:left; padding-left:10px; margin-left:1px; background:url(/images/navi.png) left 0px no-repeat; } #mainNavi a { height:50px; display:block; line-height:50px; padding:0 13px 0 3px; background:url(/images/navi.png) right 0px no-repeat; color:#fff; font-size:13px; font-weight:bold; text-decoration:none; } #mainNavi li.active { background:url(/images/navi.png) left -10px no-repeat; } #mainNavi li.active a { background:url(/images/navi.png) right -100px no-repeat; color:#fff; } #mainNavi .wii li.active { background:url(/images/navi.png) left -50px no-repeat; } #mainNavi .wii li.active a { background:url(/images/navi.png) right -50px no-repeat; color:#fff; } #mainNavi .ds li.active { background:url(/images/navi.png) left -150px no-repeat; } #mainNavi .ds li.active a { background:url(/images/navi.png) right -150px no-repeat; color:#fff; } #mainNavi a:hover{ color:#ff0; text-decoration:underline; } #mainNavi li.active a:hover { } というCSSを使って、 下のようなホームページを作成しました。 http://www.nin-site.net/ すべて人から教えてもらったものなので、CSSは初心者です・・・。 そこで思ったのですが、 TOP・掲示板・メール等・・・ のメニューを、左寄りにすることはできないのでしょうか? 下は、イメージ図です。(編集しました。) http://www.nin-site.net/image_style.jpg よろしくお願いします。 すべての内容が見たい場合は、 HTMLソース:http://www.nin-site.net/index.txt CSS:http://www.nin-site.net/css/style.css です。

    • ベストアンサー
    • CSS
  • cssスプライト positionが効かない

    現在サイトを制作中で、グローバルナビのcssスプライトでつまずいてしまいました。 background-positionがなぜか効きません、、、、。 htmlとcssのチェックをしていただけないでしょうか?? どなたか親切なかた宜しくお願い致します!! <div id="gnav"> <ul> <li class="gnav_1"><a href="#"><img src="images/gnav_home.png" width="164" height="60" alt="ホーム" /></a></li> <li class="gnav_2"><a href="#"><img src="images/gnav_intro.png" width="164" height="60" alt="初めての方へ" /></a></li> <li class="gnav_3"><a href="#"><img src="images/gnav_staff.png" width="164" height="60" alt="スタッフ紹介" /></a></li> <li class="gnav_4"><a href="#"><img src="images/gnav_price.png" width="164" height="60" alt="料金" /></a></li> <li class="gnav_5"><a href="#"><img src="images/gnav_access.png" width="164" height="60" alt="アクセス" /></a></li> <li class="gnav_6"><a href="#"><img src="images/gnav_q&a.png" width="164" height="60" alt="よくあるご質問" /></a></li> </ul> </div><!--gnav--> --------------------------------css------------------------------ #gnav { overflow: hidden; } #gnav ul { margin: 24px 0 0 7px ; } #gnav ul li { float: left; width: 164px; height:60px; background: url(images/gnav_on.png) 0 0 no-repeat; } #gnav ul li a { display:block; } .gnav_2 { background-position: -164px 0; } .gnav_3 { background-position: -328px 0; } .gnav_4 { background-position: -492px 0; } .gnav_5 { background-position: -656px 0; } .gnav_6 { background-position: -820px 0 ; } #gnav ul li a:hover img{ visibility:hidden; }

    • ベストアンサー
    • CSS
  • IEでCSSによる背景画像の高さが伸びる原因は?

    2枚の画像で、リンクを行おうとした場合、 div内にh2とulでリンクを行っています。 ところが、高さ(hight)を全てに指定しているにも関わらず、 divが引き伸ばされて、background-imageの不要な部分まで出てきてしまいます。 borderを入れると全体を挟んでいるDIVが何かによって引き伸ばされていますが、なぜIEだと引き伸ばされているのでしょうか? FIREFOXだと綺麗に表示されます。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>無題ドキュメント</title> <style> <!-- * { margin:0; padding:0; } h2,ul { text-indent:-9999px; list-style:none; } h2 a { width:175px; height:28px; display:block; } ul a { display:block; width:175px; height:24px; } ul li { padding:0; margin:0; } .float_right { float:right; } .mgn_btm7 { margin-bottom:7px; } div#NAVIBAR { width:175px; margin-top:43px; height:398px; background-image:url(image/test-a.gif); background-repeat:no-repeat; border:1px #FF0000 solid; } h2 a:hover { background-image:url(image/test.gif); background-position:0 0; background-repeat:no-repeat; height:23px; } ul a:hover { background-image:url(image/test.gif); background-repeat:no-repeat; height:23px; } ul a#E:hover { background-position:0 -28px; } ul a#F:hover { background-position:0 -52px; } ul a#G:hover { background-position:0 -76px; } ul a#H:hover { background-position:0 -100px; } ul a#I:hover { background-position:0 -124px; } ul a#J:hover { background-position:0 -155px; } ul a#K:hover { background-position:0 -179px; } ul a#L:hover { background-position:0 -203px; } ul a#M:hover { background-position:0 -227px; } ul a#N:hover { background-position:0 -251px; } ul a#O:hover { background-position:0 -275px; } ul a#P:hover { background-position:0 -299px; } ul a#Q:hover { background-position:0 -323px; } ul a#R:hover { background-position:0 -347px; } ul a#S:hover { background-position:0 -371px; } --> </style> </head> <body> <div id="NAVIBAR" class="float_right"> <h2><a href="#">タイトル</a></h2> <ul class="mgn_btm4"> <li><a href="#" id="E">ああああああ</a></li> <li><a href="#" id="F">いいいいいい</a></li> <li><a href="#" id="G">うううううう</a></li> <li><a href="#" id="H">ええええええ</a></li> <li class="mgn_btm7"><a href="#" id="I">おおおおおおお</a></li> <li><a href="#" id="J">かかかかかか</a></li> <li><a href="#" id="K">きききききき</a></li> <li><a href="#" id="L">くくくくくく</a></li> <li><a href="#" id="M">けけけけけけ</a></li> <li><a href="#" id="N">ここここここ</a></li> <li><a href="#" id="O">ささささささ</a></li> <li><a href="#" id="P">しししししし</a></li> <li><a href="#" id="Q">すすすすすす</a></li> <li><a href="#" id="R">せせせせせせ</a></li> <li><a href="#" id="S">そそそそそそ</a></li> </ul> <hr> </div> </body> </html>

    • ベストアンサー
    • HTML
  • ホームページ作成について質問です。

    ホームページ制作について質問です。 http://siterepair.ddo.jp/ のグローバルナビゲーションのように、ソース上ではテキストだが、ブラウザ上では画像アイコンのボタンにする方法が知りたいです。 私のホームページのグローバルナビゲーションのソースです ※html <div id=mainImage> <ul> <li><a href="A"><img src="../images/gnavi01.png" alt="あいうえお" width="100" height="25" /></a></li> <li><a href="B">"><img src="../images/gnavi02.png" alt="かきくけこ" width="100"height="25" /></a></li> <li><a href="C">"><img src="../images/gnavi03.png" alt="さしすせそ"width="100"height="25" /></a></li> </ul> </div> ※css #mainImage{ height: 250px; width: 900px; margin-right: auto; margin-left: auto; background-image: url(../images/header.png); background-repeat: no-repeat; padding-top: 1px; } #mainImage ul { margin-left: 362px; margin-top: 233px; } #mainImage li { float: left; } 試しに、 <a herf="A" class="home">として、 .home { display: none background-image: url(../images/gnavi01.png); } のように設定したら、gnavi01.pngも一緒に消えてしまいmainImageの背景に設定した画像が表示されているだけになってしまいます。 http://siterepair.ddo.jp/ のグローバルナビゲーションのように、 <ul id="globalmenu" class="clearfix"> <li><a class="home" href="./">SEO無料</a></li> <li><a class="seoexamine" href="seoexamine/">SEO診断ツール</a></li> <li><a class="seotools" href="seotools/">SEO対策サービス</a></li> <li><a class="seoplan" href="fixedseo/">SEOプラン</a></li> <li><a class="seminar" href="seminar/">SEO対策セミナー</a></li> <li><a class="faq" href="faq/">よくある質問</a></li> <li><a class="inquiry" href="inquiry/">お問い合わせ</a></li> </ul> alt属性による説明文ではなく、テキストでの入力をしたいのですが、無知なもので色々調べましたが出来ません。 ご教授頂けるよう宜しくお願いします。(dreamweaver cs4を使って作成しています) .

  • ホームページ作成について質問です

    ホームページ制作について質問です。 http://siterepair.ddo.jp/ のグローバルナビゲーションのように、ソース上ではテキストだが、ブラウザ上では画像アイコンのボタンにする方法が知りたいです。 私のホームページのグローバルナビゲーションのソースです ※html <div id=mainImage> <ul> <li><a href="A"><img src="../images/gnavi01.png" alt="あいうえお" width="100" height="25" /></a></li> <li><a href="B">"><img src="../images/gnavi02.png" alt="かきくけこ" width="100"height="25" /></a></li> <li><a href="C">"><img src="../images/gnavi03.png" alt="さしすせそ"width="100"height="25" /></a></li> </ul> </div> ※css #mainImage{ height: 250px; width: 900px; margin-right: auto; margin-left: auto; background-image: url(../images/header.png); background-repeat: no-repeat; padding-top: 1px; } #mainImage ul { margin-left: 362px; margin-top: 233px; } #mainImage li { float: left; } 試しに、 <a herf="A" class="home">として、 .home { display: none background-image: url(../images/gnavi01.png); } のように設定したら、gnavi01.pngも一緒に消えてしまいmainImageの背景に設定した画像が表示されているだけになってしまいます。 http://siterepair.ddo.jp/ のグローバルナビゲーションのように、 <ul id="globalmenu" class="clearfix"> <li><a class="home" href="./">SEO無料</a></li> <li><a class="seoexamine" href="seoexamine/">SEO診断ツール</a></li> <li><a class="seotools" href="seotools/">SEO対策サービス</a></li> <li><a class="seoplan" href="fixedseo/">SEOプラン</a></li> <li><a class="seminar" href="seminar/">SEO対策セミナー</a></li> <li><a class="faq" href="faq/">よくある質問</a></li> <li><a class="inquiry" href="inquiry/">お問い合わせ</a></li> </ul> alt属性による説明文ではなく、テキストでの入力をしたいのですが、無知なもので色々調べましたが出来ません。 ご教授頂けるよう宜しくお願いします。(dreamweaver cs4を使って作成しています) .

  • CSSについて

    /** ナビゲーション */ #mainNavi { width:740px; height:50px; overflow:hidden; margin-left:200px; } #mainNavi li, #mainNavi li.acitve { float:left; padding-left:10px; margin-left:1px; background:url(/images/navi.png) left 0px no-repeat; } #mainNavi a { height:50px; display:block; line-height:50px; padding:0 13px 0 3px; background:url(/images/navi.png) right 0px no-repeat; color:#fff; font-size:13px; font-weight:bold; text-decoration:none; } #mainNavi li.active { background:url(/images/navi.png) left -10px no-repeat; } #mainNavi li.active a { background:url(/images/navi.png) right -100px no-repeat; color:#fff; } #mainNavi .wii li.active { background:url(/images/navi.png) left -50px no-repeat; } #mainNavi .wii li.active a { background:url(/images/navi.png) right -50px no-repeat; color:#fff; } #mainNavi .ds li.active { background:url(/images/navi.png) left -150px no-repeat; } #mainNavi .ds li.active a { background:url(/images/navi.png) right -150px no-repeat; color:#fff; } #mainNavi a:hover{ color:#ff0; text-decoration:underline; } #mainNavi li.active a:hover { } というCSSを使って、 ホームページを作成しました。 すべて人から教えてもらったものなので、CSSは初心者です・・・。 そこで思ったのですが、 TOP・掲示板・メール等・・・ のメニューを、左寄りにすることはできないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • CSS
  • CSSでの画像メニューの設定について

    現在CSSの勉強中です。 外部CSSで画像を使用してリンクメニューを作ったのですが、 やり方があっているか確認をお願いしたいのですが。 off時の画像(白)、ページのin時の画像(赤)、hover(青)の画像を用意しています。 CSS部分▼ .navi01 a{ width:102px; height:43px; background-image:url(common/img/navi_top_off.gif); background-repeat:no-repeat; } .navi01_on a{ width:102px; height:43px; background-image:url(common/img/navi_top_on.gif); background-repeat:no-repeat; } .navi01 a:hover{ width:102px; height:43px; background-image:url(common/img/navi_top_hover.gif); background-repeat:no-repeat; } .navi01_on a:hover{ width:102px; height:43px; background-image:url(common/img/navi_top_hover.gif); background-repeat:no-repeat; } HTML部分▼ <li class="navi01_on"><a href="index.html" title="トップページ"><span class="none">トップページ</span></a></li> <li class="navi02"><a href="work.html" title="仕事内容"><span class="none">仕事内容</span></a></li> CSSの講座のページなどを見ると、設定がもうすこし少なくても うまく動いていたりして、無駄な部分があるのではと思っています。 今の私の知識ではどこが悪いのか分からないので、 教えて頂けると幸いです。 (もし良い講座のページ、本がありましたら教えて頂ければと思います。) 宜しくお願い致します。

    • ベストアンサー
    • CSS
  • IE6とXHTML+CSS

    外部スタイルシート+XHTMLでサイトを作成したのですがその際メニュー項目のロールオーバーのオーバー時がIE7だと正常に見えるのですがIE6だとオーバー時の画像が消えてしまいます。その部分の外部スタイルシートとXHTMLをそれぞれ記述するので詳しい方アドバイスお願いします!ちなみにメニューボタンの高さは一緒で幅はそれぞれ違います。 <XHTML> <div id="sabNavi"> <ul> <li class="smenu01"><a href="#">サイトマップ</a></li> <li class="smenu02"><a href="#">プライバシーポリシー</a></li> <li class="smenu03"><a href="#">お問合せ</a></li> </ul> </div> <外部スタイルシート> #sabNavi{ width:300px; } #sabNavi a{ height:20px; display:block; text-indent:-9999px; } #sabNavi a:hover{ background-position:0 -20px; } .smenu01 a{ background:url(images/btn_sitemap.gif) no-repeat 0 0; width:71px; } .smenu02 a{ background:url(images/btn_privacy.gif) no-repeat 0 0; width:108px; } .smenu03 a{ background:url(images/btn_information.gif) no-repeat 0 0; width:55px; } .smenu01:hover{ background:url(images/btn_over_sitemap.gif) no-repeat 0 0; } .smenu02:hover{ background:url(images/btn_over_privacy.gif) no-repeat 0 0; } .smenu03:hover{ background:url(images/btn_over_information.gif) no-repeat 0 0; }

専門家に質問してみよう