clipプロパティでマウスがa要素の上に乗ったときに画像全体を見えるようにするソースでうまくいかない

このQ&Aのポイント
  • clipプロパティを使用してa要素の上にマウスのカーソルが乗ったときに画像全体を表示させるソースを作成したが、うまくいかない。
  • 作成したソースでは、a要素にマウスが乗っていないときには画像の一部が見え、乗ったときにも変化がない。
  • 自作のソースは、IE7以外のブラウザ(Firefox2、Opera9、Safari3)では正常に動作するが、IE7では正常に動作しない。原因は何か?
回答を見る
  • ベストアンサー

clipプロパティでマウスがa要素の上に乗ったときに画像全体を見えるようにするソースでうまくいかない

clipプロパティでa要素の上にマウスのカーソルが乗っていないときに画像の一部を見せて、a要素の上に乗ったときに画像全体を見せるソースを作ったのですが、a要素に乗っていないときは画像の一部だけ見え、乗ったときでも変化がありません。 それは、 http://w3g.jp/css/display_position/clip このサンプルを見て作ったのですが、 1.IE7でURLのサンプルは正常に動作する。 2.自作のソースでIE7で試したときに、a要素の上に乗っても画像が変わらない。 3.自作のソースでIE7以外(Firefox2、Opera9、Safari3)は正常に画像全体が見える。 「2」の自作のソースでIE7のときのみ正常に動作しません。これは何が原因なのでしょうか? 回答よろしくお願いします。 ■CSSソース img.clip { position: absolute; clip: rect(10px 50px 50px 25px); } a:hover img.clip { clip: rect(0 256px 387px 0); } ■HTMLソース <a href="image.jpg"><img src="image.jpg" class="clip" /></a>

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

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

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.2

すっきりとした説明が出てこないところを見ると、 IE7の仕様なのか、バグなのか知りませんが、共通性の無いところはわれわれを悩ませるところですね。おそらく当ページの製作者も経験として知っていたのでデフォルトのCSSとして設定していたのでしょうね、

miya_HN
質問者

お礼

IE7の仕様かあるいはバグということですか。 はっきりとは分からないんですね。 ありがとうございました。

その他の回答 (1)

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

a:hover img.clip { background:transparent; clip : rect(0 320px 240px 0) ; } としてみてください。 指定URLの <link rel="stylesheet" type="text/css" href="../../style/default" /> にありました。

miya_HN
質問者

お礼

今更ですが、お礼の記載が大変遅くなり、申し訳ありません。 ありがとうございました。

miya_HN
質問者

補足

「background:transparent;」でうまくいきました。 ありがとうございます。 背景を透過色にすることで画像全体を表示することができるんですね。 しかし、IE7以外で「background:transparent;」がなくても正常に動作するのになぜIE7のみうまくいかないのでしょうか? すいませんがよろしくお願いします。

関連するQ&A

  • スタイルシート a:activeで画像を変える

    スタイルシートの設定で画像メニューの切替を行おうとしていたんですが a.activeの設定の時のみ画像切替の反応が見られません。 どうしたらいいでしょうか? 切替はclip:rect(top right bottom left)を使って一枚の画像の表示範囲で切り換えています。 【htmlメニュー部分】 <div class="MENU">  <a href="./"><img src="btn001.png"></a> </div> <div class="MENU">  <a href="./"><img src="btn002.png"></a> </div> 【スタイルシート部分】 IMG.MENU{ position:absolute; } DIV.MENU{ border:none; position:relative; float:left; } DIV.MENU A:link IMG{ clip:rect(0px 133px 25px 0px); top:0px; } DIV.MENU A:visited IMG{ clip:rect(0px 133px 25px 0px); top:0px; } DIV.MENU A:hover IMG{ clip:rect(50px 133px 75px 0px); top:-50px; } DIV.MENU A:active IMG{ clip:rect(25px 133px 50px 0px); top:-25px; } よろしくお願いします。

    • ベストアンサー
    • CSS
  • 画像の上に文字をのせ、ボックス全体にリンクを設定したい CSS&HTM

    画像の上に文字をのせ、ボックス全体にリンクを設定したい CSS&HTML お世話になっております。 ある画像の上にposition:rerative;を使って文字をのせています。 この画像にリンクを設定したいのですが、文字の上になるとリンクが効かなくなってしまいます。文字も含めた全体にリンクをかけることはできるのでしょうか? 下記ソースです。 /*css*/ img.button{/*画像*/ margin:0px 0px 8px; padding:2px; border:#999999 1px solid; } .text{/*画像上の文字*/ margin:0px; padding:0px; font-size:14px; text-align:left; } <!--html--> <div style="position:relative;"> <a href="index.html"><img src="image/photo1.jpg" alt="" width="346" height="98" border="0" class="button"/></a> <div style="position:absolute; left: 24px; top: 13px; width: 217px;"> <p class="text">画像上の文字</p> </div></div> 検索してdisplay:block;などのやり方を試してみたのですが、position:relative;を使っているからか?うまくいきませんでした。 お知恵をお借りできれば幸いです。どうかよろしくお願いいたします。 表現の仕方や言葉の使い方を間違っていたらすみません…。

    • ベストアンサー
    • HTML
  • 「:after」を使って画像の上に画像を重ねたい

    スマフォサイトを作っています。 画像を配置して、その上に枠を重ねて表示したいと思いました。 position: relative; position: absolute; を使えばできるのは分かっているのですが、 この場合、<img>タグを2つ書かなくてはいけない。 これを写真画像にクラス指定をするだけでいい手段はないかと思い、 「:after」要素を使えばできるのではないかとやってみました。 ▼HTML <p class="photo"> <a href="#"><img src="img/image.jpg"></a> </p> <p> テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト </p> ▼CSS img { max-width: 100%; height: auto; } .photo { position: relative; } .photo:after { position: absolute; content: url(img/photo_waku.png); top: 0px; left: 0px; } こんな感じでやってみたところ、添付画像のような状態になりました。 表示はしてくれました。 しかし写真画像は自動でサイズ変更が行われるのに、 枠画像は実寸表示されています。 これはつまり「img」で指定しているスタイルが効いていないということ。 しかしこれをどういじれば、枠画像も自動で変更されるのかが分からなくて困っております。 そもそも可能かどうかも分かっておりません。 ご存知の方いらっしゃいましたら、ご教授いただければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • IE <a>要素の上にimgを置くと

    <a>の上にimgを置きたいです。 以下の様に書きました。IE以外は赤のBOXの上でもimgの上でも リンクが生きてます。 でもIEはimgの上ではリンクが機能しません。 <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/> <meta http-equiv='Content-Style-Type' content='text/css'> <style> a { display: block; background-color: red; width: 300; } </style> </head> <body> <a href='javascript:alert(0);'> <div style="position: relative; height: 300"> <img src="hoge.jpg" style="position: absolute; top: 50; left: 50"'> </div> </a> </body> </html> どうしたらIEでも期待した結果を得られますでしょうか? 以上、ご指導の程、宜しくお願いいたします。

    • ベストアンサー
    • CSS
  • IE6,7で画像の上に載せた文字がずれる

    HTMLなのですが、 画像が縦に3つつながって1つの画像のようになった状態で表示しようとしています。 さらに上と下の画像にはテキストを上にかぶせて表示します。 画像全体にリンクを貼ってあります。 下記のようなコードで作成した所、IE6,7でのみ、下記のバグが出てしまいました。 ・画像とテキストの縦位置のズレ ・画像間に2px程度の空白が生じる ・画像に設定したリンクが開かない 大変困っています。 どなたか原因と修正方法を教えていただけますでしょうか。 <a href="test.html"> <div style="position: relative; width: 183px; height: 265px; "> <img src="images/top.jpg" width="183" height="36" /> <div style="position: absolute; top: -11px; left: 55px;" class="font16b"> <p align="center">text1</p> </div> <img src="images/main.jpg" width="183" height="193" border="0" /> <img src="images/bottom.jpg" width="183" height="36" /> <div style="position: absolute; top: 218px; left: 4px; width: 181px;" class="font13"> <p align="left">text2</p> </div> </div> </a>

    • ベストアンサー
    • CSS
  • 【CSS】list要素の画像メニュー

    CSSのlist要素で画像を横並べのロールオーバーにしたいので、本に載っているようにしてみましたが、 このようなCSSにしてしまうと、ページ全体のA要素に背景画像が付いてしまいます。 ul { width: 772px; list-style: none; } li,a { display: block; width: 193px; height: 38px; } li { float: left; textindent: -9999px; } a { text-decoration:none; background: url(画像URL) no-repeat; overflow: hidden; } #navi1 a { background-position: 0px 0px; } #navi2 a { background-position: -193px 0px; } #navi3 a { background-position: -386px 0px; } #navi4 a { background-position: -579px 0px; } #navi1 a:hover { background-position: 0px -38px; } #navi2 a:hover { background-position: -193px -38px; } #navi3 a:hover { background-position: -386px -38px; } #navi3 a:hover { background-position: -579px -38px; } 全体のA要素は普通にしたいのですが、どのように改善すればよろしいでしょうか? 初歩的な質問で申し訳ありませんが、よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • CSSでa要素全体をリンク出来るようにしたいのですが

    CSSでa要素全体をリンク出来るようにしたいのですが、 Firefoxなら出来るもののIE8、Sleipnirでは文字の上しかリンクされません。(文字の上にマウスを当てると全体の色は変わったりするのですが。) 5時間くらい迷ってるので少しでも分かる方、いらっしゃいましたら 何でもお願いします。。 色々検索してソースに付け加えたりしてるので適切ではないものが多々あるかと思いますが、とにかくCSSソースをそのまま載せます。 div#link ul { list-style: none outside; overflow : hidden; padding: 0; margin: 0; letter-spacing:7px; font-weight: bold; } div#link li a { display: block; width: 100%; overflow : hidden; padding: 5px; padding-left: 20px; padding-right: 0px; font-size: 14px; color: #0000ff; } div#link li a:hover { display: block; overflow : hidden; background-color: #ffff33; color: #000; } HTMLは <div id="link"> <ul> <li><a href=".html">あいうえお</a></li></ul></div>です。 なにとぞ宜しくお願い致します。

    • ベストアンサー
    • HTML
  • マウスをのせると画像が動くcssについて

    マウスをのせると画像が動くCSSについて質問します。 http://kumacrow.blog111.fc2.com/blog-entry-486.html このページに書いてあることをやりたいです。 通常ですと、<head>内にCSSを記入して、html内でclassで呼び出すと思うのですが、html内に全て書く場合はどうすればいいのでしょうか? <a href="http://~" style=" a:hover { position: relative; top: 5px; left: 5px;}"><img src="(画像のある場所)" /></a> このような書き方では上手くいきません。 どのように書けばいいのか教えてください。

  • 画像の上に、背景を表示させテキストを非表示させたdisplay:block;を表示させたい

    よくliなどでテキストを非表示にさせ、背景画像を表示させたメニューがありますが、それを画像の上に表示させる方法を教えてください。 通常ならその画像をcssで背景画像に出来るのですが、 画像に順番ずつじんわり表示させるjavascriptの指示をしており、 その画像をcssで背景画像とするわけにいかないのです。 現在ですと、Dreamweaverのデザインプレビューだと正しい位置にdisplay:block;が存在するのですが、 実際にブラウザで確認すると、何も表示されていないように見えます。 下記がソースです。 よろしくお願いします。 ------------------------------------------------------------ 【HTML】 <div id="containerTop"> <div id="titleTop"> <h1><a href="index.html">タイトル</a></h1> <h2>サイト説明</h2> <ul> <li id="profile"><a href="#">プロフィール</a></li> <li id="photo"><a href="#">写真</a></li> <li id="blog"><a href="#">ブログ</a></li> <li id="contact"><a href="#">お問い合わせ</a></li> </ul> </div> <div id="topbgphoto" class="pics"> <img src="img/top/001.jpg" /> <img src="img/top/002.jpg" /> <img src="img/top/003.jpg" /> </div> </div> ------------------------------------------------------------ 【CSS】 /* container [ ----------------------------------------------------------- */ #containerTop { width:1024px; position:relative; margin:106px auto auto 0; } /* titleTop [ ----------------------------------------------------------- */ #titleTop { width:661px; position: absolute; top: 241px; left: 0px; height: 138px; } #titleTop h1 a{ display:block; text-decoration:none; text-indent:-7777px; width:246px; height:24px; position: absolute; top: 25px; left: 370px; padding:0; font-size:12px; } #titleTop h2{ display:block; text-decoration:none; text-indent:-7777px; width:310px; height:16px; position: absolute; top: 70px; left: 304px; padding:0; font-size:12px; } /* menu [ ----------------------------------------------------------- */ #titleTop ul { position: absolute; top: 87px; left: 0x; padding:0px; list-style:none; } #titleTop li { } #titleTop li a { display:block; text-decoration:none; text-indent:-7777px; height:17px; width:59px; } #titleTop li a:hover { background-image: url(../img/top/menu_ov.jpg); } #titleTop li#profile a{ background-position: 0 0; position: absolute; top:17px; left:344px;} #titleTop li#photo a{ background-position: -70px 0; position: absolute; top:17px; left:414px;} #titleTop li#blog a{ background-position: -140px 0; position: absolute; top:17px; left:484px;} #titleTop li#contact a{ background-position: -210px 0; position: absolute; top:17px; left:554px;} /* ゆっくり表示させる背景画像 [ ----------------------------------------------------------- */ .pics { width:1024px; height:587px; padding: 0; margin: 0; }

    • ベストアンサー
    • HTML
  • clip:rect(*px,*px,*px,*px)について

    お世話になります clip:rectを試しているのですが疑問があるので教えていただきたいのですが <style type="text/css"><!-- #clip { position:absolute; clip:rect(5px,40px,40px,5px); background-color:blue; } --></style> <div id="clip"> あいうえお<br> かきくけこ<br> さしすせそ<br> </div> Firefox、Operaでは表示されているのですがIE6ではclipされずに全表示されています サイト検索してもIE6は対応しているように書かれているのですが・・・(例文は大抵imgでしたけど) そしてclipを動的にするとIE6でもちゃんとなるのですが何故でしょう? <script language="javascript"><!-- function move(ht,wr,hb,wl) { obj = document.getElementById("game"); ht--; if(ht < 0) ht = 0; hb++; if(hb > 300) hb = 300; wr++; if(wr > 500) wr = 500; wl--; if(wl < 0) wl = 0; obj.style.clip = "rect("+ht+"px "+wr+"px "+hb+"px "+wl+"px)" ; if(ht == 0 && wl == 0) return false; setTimeout("move("+ht+","+wr+","+hb+","+wl+")",10); } //--></script> <style type="text/css"><!-- #game { width:500px; height:300px; background-color:lightcyan; position:absolute; } --></style> <body onload="move(150,250,150,250)"> <div id="game">&nbsp;</div>

    • ベストアンサー
    • HTML

専門家に質問してみよう