• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定の画像リンクだけhover時の文字色を変更)

特定の画像リンクのhover時の文字色を変更する方法

このQ&Aのポイント
  • 特定の画像リンクにクラス名“diet”を付けて、hover時の文字の色を赤色に変更する方法を教えてください。
  • HTMLに直接書き込む方法とCSSを利用する方法の2つの書き方を教えてください。
  • 上記のように記述しているにも関わらず、うまくいかない理由について教えてください。

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.4

>画像の文字色を変えることなどできませんでしたね。  はい、しかし・・ <a href="./index.html"><img src="./images/Logo.gif" width="80" height="80" alt="Topへ"></a>  このままでも、驚かれますが・・文字を表示させれば出来ます。 a[href="./index.html"]{ position:relative;line-height:80px; /* 画像の高さに合わせる */ text-align:center;display:inline-block; } a[href="./index.html"]:after{ content:"TOPへ";color:blue;position:absolute;top:0;left:0; font-weight:bold;font-size:20px;/*テキストの大きさ太さ */ width:80px;/* 画像の巾に合わせる */ } a[href="./index.html"]:hover:after{color:red;}  面白いでしょ(^^)  

arbert
質問者

お礼

ご回答いただきありがとうございます。 しかしすごいですね。 何でもできますね・・・。

その他の回答 (3)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

すみません。 回答のサンプルは、擬似要素、contentを使わない方法です。 擬似要素、contentを使うと、LogoRed.gifを用意する必要はありませんが、IEは半透明な要素に対応していませんのでまだ使わないほうが良いでしょう。 ※クラスの書き方がよくないのでしょうか?  クラスやIDは、デザインやスタイルシートのために書くものではありません。 DIV,SPANのみならず 【引用】____________ここから id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[The global structure of an HTML document (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.5.4 )]より  そのうえで、その文書構造にしたがってセレクタを使って、スタイルを適用させる要素を特定していくのです。  いちいちクラス名を書いていたら、HTMLは膨大で複雑怪奇になってしまいます。  先のサンプルでしたら、HTML変更することないし、スタイルシートも「リンク先が./index.htmlのa要素」とその関連要素の設定だと、一目でわかるでしょ!!!。そしてなによりも先でもHTMLを書き換えなくてデザインを変更できる。 ※HTMLに直接書く方法はありません。javasciptを使う方法くらいしか思いつきません。  要素のstyle属性に:hoveのような擬似クラスはかけません。

arbert
質問者

お礼

ご回答いただきありがとうございます。 クラスは結構使っていて、そのクラス名も似ているものがあるので見分けるのが大変です。 その結果、おっしゃるように、HTMLが非常に複雑になってしまい、後から編集するのに時間がかかってしまいます。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

a.diet:hover{} です。半角スペースも:も意味があって、半角スペースは子孫セレクタですから、 a.diet *:hover{}と解釈されます。*は全称セレクタ また、img要素は空要素で内容がありませんから、色をつける対象がありません。 <a href="URL">テキスト</a> なら出来ます。・・・ <a href="アドレス"><img src=画像のアドレス></a> であっても、:after,;before擬似クラスと、content:プロパティを使えば出来なくはないですが、・・・。なお、デザインのためにclass名なんぞつけなくて良いです。 たとえば、 <a href="./index.html"><img src="./images/Logo.gif" width="80" height="80" alt="Topへ"></a> だとすると・・Logo.gifと、それに置き換える赤っぽい画像(LogoRed.gif)は用意してください。 a[href="./index.html"]{position:ralative;width:80px;height:80px;display:inline-block;background-image:url(./images/LogoRed.gif);} a[href="./index.html"] img{border:none;} a[href="./index.html"]:hover img{display:none;} とか・・。 最後のスタイル指定を分解すると・・ a             要素セレクタ 詳細度 [0,0,0,1] 半角スペース      子孫セレクタ [href="./index.html"] 要素セレクタ 詳細度[0,0,1,0] :hover          動的な擬似クラス 詳細度[0,0,1,0] 半角スペース      子孫セレクタ img            要素セレクタ 詳細度[0,0,0,1] 詳細度の合計は[0,0,2,2]です。

arbert
質問者

お礼

ご回答いただきありがとうございます。 画像の文字色を変えることなどできませんでしたね。 申し訳ありませんでした。

  • aoumiushi
  • ベストアンサー率45% (234/512)
回答No.1

<a>タグ内にクラスが指定されていません。 <head> <style type="text/css"> <!-- a.diet:hover { color: red; } --> </style> </head> <body> <a class="diet" href="アドレス"><img src=画像のアドレス></a> </body> ================================ ※外部ファイル化する場合 エディタ等で、以下のように書いてファイル名を”style.css”で保存する。ファイル名は例です a.diet:hover { color: red; } HTML本体の<head>タグ内にスタイルシートのパス&ファイル名を記述します。 パス名&ファイル名は、間違わないようにして下さい <head> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <a class="diet" href="アドレス"><img src=画像のアドレス></a> </body> 本体内に書いたCSSは削除してください。

arbert
質問者

お礼

ご回答いただきありがとうございます。 確かに、<a>タグ内にクラスをつけていませんでしたね。

関連するQ&A