テキストリンクについては、マウスオーバー時に下線が表示されても良いのですが、画像リンクについては下線を表示させたくないと考えています。
どうやったら、切り分けられますでしょうか。
現在、cssファイル内にて、
----------------
a:hover {
color: #色;
border-bottom: 1px solid #色;
}
-----------------
と書いてあり、これがテキストリンクにも画像リンクにも影響しています。
-------------------
【CSS】
img{
border:0;
}
--------------------
ではダメでした。
-------------------------
【HTML】
<a href="リンク先" class="img"><img src="画像URL"></a>
【CSS】
.img a:hover {
border-bottom:0px;
}
-------------------------
→これでもダメでした。
どなたかご助言よろしくお願いします。
No.8ベストアンサー
- 回答日時:
もう問題は解決されている様ですが、少々気になる事があったので横から失礼します。
ANo.7様の、
a:hover.img {
border: none;
} …(A)
という解決策に対する補足で、
> 通常、こういった場合は、スペースを空けて書きそうなものですが、
> 空けて書いてしまうとスタイルが効かないんですね。
> (これは例外的なケースなのかな~。)
とおっしゃっていますが、ちょっとセレクタの解釈を勘違いされている様に思われます。
a:hover.img { }、a.img:hover { }、はいずれもaタグ(マウスオーバー状態)に適用する"img"というクラス・セレクタです。
以前は後者の書き方のみ正しいとされていたと思うのですが、最近は実はどちらでもOKという記述が見られる様です。よって、この2つの結果は同じになります。
この設定は、HTML側が質問者様が現在意図されている下記の様な記述の、マウスオーバー時に適用されます。
<a href="リンク先" class="img"><img src="画像URL"></a>
しかし、ANo.1様が最初に書かれた、
a:hover .img {
border: none;
} …(B)
というセレクタの意味は、aタグ(マウスオーバー状態)の「子要素」に適用する"img"というクラス・セレクタ、という事になります。従って、このスタイルが適用されるHTML側の記述というのは、
<a href="リンク先"><img src="画像URL" class="img"></a> とか、
<a href="リンク先"><span class="img">テキスト</span></a> とかいった場合の事になりますので、スタイルの適用される先の構造自体が異なります。
つまり、「通常、こういった場合は、スペースを空けて書きそう」とか「例外的なケース」という事ではありません。(A)(B)のセレクタの書き方は、それぞれ異なる文書構造に対応する、全く意味の違うものです。
それから、ANo.4の補足欄で自己解決されたと仰っている方法(vertical-align: bottom;)ですが、実際にサンプル(XML宣言有りのXHTML1.1の文書で)で検証してみましたが、IE6/7でがいずれもマウスオーバー時に画像の下線が表示されてしまいます。質問者様の環境ではその様にならないのでしょうか?
蛇足ですが、
> 恐らく、ウェブデザイン界ではよく使われている手法なのでしょう。
…「よく」というわけでもないと思いますよ。この業界にもそれなりに長くおりますが、そういうスタイル(リンクの下線をわざわざborderで指定しなければ実現できない様な)の指定を要求された事はほとんどありません。ケースバイケースでしょう
この回答への補足
回答NO8,NO9をありがとうございます。
NO9に対する返答もここでさせて頂きます。
まず、ちょっとまとめてみました。
方法1
----CSS-----------------------------------------
a:hover.img{border: none;} /* スペース無し */
------------------------------------------------
----HTML----------------------------------------
<a href="リンク先" class="img">
<img src="画像URL">
</a>
------------------------------------------------
→ aタグ(マウスオーバー状態)に"img"というクラス・セレクタを適用
次に…、
方法2
----CSS-----------------------------------------
a:hover .img{border: none;} /* スペース有り */
------------------------------------------------
----HTML---例1---------------------------------
<a href="リンク先">
<img src="画像URL" class="img">
</a>
------------------------------------------------
----HTML---例2---------------------------------
<a href="リンク先">
<span class="img">テキスト</span>
</a>
------------------------------------------------
→「子要素」に、"img"というクラス・セレクタを適用
→ただし、本件の場合、マウスオーバー時の画像のボーダーは消えない
それは、先だって指定してある、
a:hover {
color: #色;
border-bottom: 1px solid #色;
}
のスタイルが継承されているから、ということですね。
だから、消えなかったわけですね~。納得。
>(A)(B)のセレクタの書き方は、それぞれ異なる文書構造に対応する、全く意味の違うものです。
大変よくわかりました!
まるで、参考書のようです。
>IE6/7でがいずれもマウスオーバー時に画像の下線が表示されてしまいます。
質問者様の環境ではその様にならないのでしょうか?
早速、調べてみました。
検証ブラウザは、IE6(だと思われます)です。
結果は、確かに、(透明な)下線のようなものが現れます。
有色の下線が表示されることはないのですが、マウスオーバー時だけ下線幅分だけ表示が下へズレます。
ドラッグしてみると、透明状態の下線が可視できる状態になりますので、そういった方法でも確認することができます。
サファリ3.2.1でも、目立ちはしませんが、チラッと表示されますね。
オペラでも同様の結果となりました。
Firefoxはなぜか表示されないようです。
有色無色問わず、この下線はやはり邪魔なので、上記の方法1を選んで処理したいと思います。
とても分かりやすく、そして、的を射た回答をありがとうございました。
大変勉強になりました。
また質問することがありましたら、その時も、どうぞよろしくお願いします。
No.9
- 回答日時:
ANo.8で一つ書き忘れました。
a:hover .img {
border: none;
} …(B)
仮にこのセレクタに対応する様な、
<a href="リンク先"><img src="画像URL" class="img"></a>
というマークアップであっても、マウスオーバー時の画像のボーダーは消えません。(B)に先だって指定してある、
a:hover {
color: #色;
border-bottom: 1px solid #色;
}
のスタイルは継承されたままとなります。
何でそうなるのか…については理屈があっての事ですので、セレクタの文法の解説をよく読んで把握されておく事をお奨めします。
この回答への補足
NO8の回答の所で返答しております。
こちらも大変参考になりました。
>何でそうなるのか…については理屈があっての事ですので、セレクタの文法の解説をよく読んで把握されておく事をお奨めします。
わかりました!しっかり、勉強していこうと思います。
本当に助かりました~。感謝感謝です。
No.7
- 回答日時:
ちょっと回答に補足。
a:hover.img{
border : none ;
}
でも、OKなはずです、たぶん。
順番というより、途中のスペースの問題です。
あと、関係ないですが、Class 名に、要素名と同じ名前を付けると CSS を見た時、混乱しやすいので、避けた方が賢明かも。まあ、今回は例題なので img とかいうclass 名なんでしょうけど。
この回答への補足
補足回答ありがとうございます。
提示頂いた例でもOKでした。
順番というより、途中の半角スペースの問題だったのですね。
通常、こういった場合は、スペースを空けて書きそうなものですが、
空けて書いてしまうとスタイルが効かないんですね。
(これは例外的なケースなのかな~。)
また、クラス名に要素名と同じ名前は使わないようにします。
確かに分かりにくいですね。
色々とありがとうございます。
助かります。
No.6
- 回答日時:
<a href="リンク先" class="img"><img src="画像URL"></a>
というようにマーク付けしているなら、
単純に
a.img:hover{
border : none ;
}
で解決すると思いますが。
この回答への補足
回答をありがとうございます。
実際に試してみました。
この方法でもイケマスネ。
素晴らしいです。
私のものより、これこそベストな回答だと思いました。
NO1の回答者の方は、
<a href="リンク先" class="img"><img src="画像URL"></a>
に適用するなら
a:hover .img{border:none;}
と説明されていましたが、
こちらではダメで、
a.img:hover{
border : none ;
}
こういった順序だとスタイルは上手く効くんですね。
順序を正確に理解していないとダメだということが分かりました。
これから勉強していきます。
回答を締め切らずに待っていて正解でした。
素晴らしい回答をありがとうございました。
No.5
- 回答日時:
文字には下線ありで、画像には無しということですか。
そもそも下線を付ける方法を間違えています。
単純に文字に下線を付けるのは、border(境界線)ではありません。
text-decoration: underline;
です。
http://www.htmq.com/style/text-decoration.shtml
【CSS】
a {text-decoration: none;}/*リンクのアンダーライン無し*/
a:link {}/*未訪問*/
a:visited {}/*訪問済み*/
a:hover {text-decoration: underline;}/*マウス重なった*/
a:active {}/*クリックした時*/
a img{border:none;}
線の位置や太さ等を細かく調整したいというなら#3,#4の方のような方法になります。
参考URL:http://www.htmq.com/style/text-decoration.shtml
この回答への補足
さらに補足をありがとうございます。
>単純に文字に下線を付けるのは、border(境界線)ではありません。
text-decoration: underline;
です。
自サイトのリンク下線は、単純な下線ではないので、text-decoration をあえて使っていません。
NO4の方の言葉を借りますと、
「これだと文字と下線の距離が近すぎるんですよね…という場合は、やっぱりボーダーになります。」
という問題もありますので、borderを使用しています。
テキストと下線の色を分ける時にも、borderである必要があると思います。実際に自サイトでも、色分けしています。
なお、私が今回解決策として見つけた方法は、
ある洗練されたサイトのCSSをくまなく調べて気付いたことです。
恐らく、ウェブデザイン界ではよく使われている手法なのでしょう。
ただの下線であれば、text-decorationによるスタイル指定をすれば良いでしょうね。
No.4
- 回答日時:
とりあえず、一番簡単なのは
a:hover{
color: #CC0000;
text-decoration:underline;
}
と記述することです。基本的には下線はボーダーじゃなくてテキストデコレーションです。
ただ、これだと文字と下線の距離が近すぎるんですよね…という場合は、やっぱりボーダーになります。
a{
text-decoration: none;
}
a:hover{
color: #CC0000;
border-bottom:#CC0000 solid 1px;
}
a:hover.img {
text-decoration:none;
border-bottom:none;
}
img{
border:0;
}
これでいけるとおもいます。
<a href="リンク先" class="img"><img src="../images/admin/btn3.jpg"></a>
の class="img"はそのまま残してください。適用されるはずです。
この回答への補足
回答ありがとうございます。
ちょっと前に自分で解決しちゃいました。
でも、私のためにご助言下さりありがとうございます。
頂いた回答は時間のあるときに試させていただきます。
ちなみに私が見つけた解決策は、自分で言うのもなんですが、一発でした。
a:hover の設定はそのままに、
img{
border:0;
vertical-align: bottom;
}
を追加するだけです。
ポイントは、vertical-align: bottom; これです。
画像をボトム配置にすると、下線が消える(下線の存在領域が消失する、ということなのでしょうか。)ということを見つけました。
これは、ある意味、裏技的な話なのでしょうが、
結果的に解決できたので良かったです。
この手の質問はネット上に多いのですが、
どの回答もパッとしなかったため、今回質問をさせていただきましたが、
幸運にもキレイサッパリ解決することができ、とても嬉しいです。
みなさんのご協力のおかげです。
感謝しています。
No.3
- 回答日時:
できないこともないですが、borderではできません。
a:hover {
background:url(image.gif) repeat-x 0 100;
}
img {
vertical-align:bottom;
}
a img {
border:0;
}
高さ1px程度の背景画像をaタグにリピートで指定して、imgが入ると見えなくなるという感じです。
使用にはそれなりに制限が付きますが、場合によっては使えるかもしれません。
この回答への補足
回答をありがとうございます。
画像を使う方法ということでしたが、好み的にはイマイチですね~。^^;
えっと、頂いた回答は、つまり、こういった方法でしか、目的を達成できないということを意味するのでしょうか?
回答1,2の方の方法では、無理ということなのでしょうか。
(私にはできませんでしたが、本来ならできることなのかな、とも思えているわけです。)
実際、皆さんはどうされているんでしょうね。
No.2
- 回答日時:
【CSS】
a img{border:none;}
【HTML】
<a href="xx"><img src="xx"></a>
とやっていれば、リンク時の線が出る事はありえません。
CSSの他の部分を全て削除して、上記のだけで試して下さい。
スタイルシートの全体をとおしての記述に問題があるはずです。
あとはブラウザの設定が考えられるけど、他のページ見てもリンク画像に線が付かないのなら、ブラウザのせいではありません。
この回答への補足
回答ありがとうございます。
a:hover {
color: #色;
border-bottom: 1px solid #色;
}
質問文にも書きましたが、この箇所を取り去ると、当然ながらマウスオーバー時の画像の下線は消えます。
この記述をテキストだけに適用する、という方向で考えていたのですが、
これがある限り、画像にも適用されてしまうようです。
a:hover
→テキスト、画像 どちらのリンクにも確実に作用するように思うわけです。(色々試した結果)
a img{border:none;}
↑これを使って、画像のみ、「上記スタイルを適用外にする」という指定はどうやらできなそうなのです。
(回答1の補足で試した結果、思うことです。)
※実際にはそんなことはないのでしょうか?
なので、考え方として、
a;hover img{border:none;} /* 画像のスタイル */
a:hover text{border:solid 1px;} /* テキストのスタイル */
というように、バラバラに指定するような方法(考え方として)を模索していますが、そんなものはありませんでしょうか。
それとも、やはり、どこかで何かを間違えているのでしょうかね。。。
No.1
- 回答日時:
.img a:hover {
border-bottom:0px;
}
CSSの書き方をしっかり理解されていないようですね。
これだと、クラス名「img」以下のa:hoverに対して作用します。
<a href="リンク先" class="img"><img src="画像URL"></a>
に適用するなら
a:hover .img{border:none;}
<a href="xx"><img src="xx"></a>
ともかく、画像にリンク時の線を付けたくないのなら、
a img{border:none;}
とするのが最も手軽です。
マウスオーバー時だけなら
a:hover img{border:none;}
この回答への補足
回答ありがとうございます。
早速アドバイスに従ってトライしてみました。
結果は以下の通りです。
a:hover .img{border:none;} →効果なし
a img{border:none;} →効果なし
a:hover img{border:none;} →効果なし
すべてダメでした。
IEだと、画像の最下部に下線が、
FireFoxだと、画像の下に3pxくらいの隙間をあけて下線が、
それぞれ表示されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
自分のセンスや笑いの好みに影響を受けた作品を教えて
子どもの頃に読んだ漫画などが その後の笑いの好みや自分自身のユーモアのセンスに影響することがあると思いますが、 「この作品に影響受けてるな~!」というものがあれば教えてください。
-
好きな「お肉」は?
牛肉、豚肉、鶏肉、ラム肉、クマやシカの狩猟肉……。 いろ〜んな肉が食べられるようになりましたよね。 あなたがこれまで食べて「これはうまい!」とか「なんじゃこりゃ!」と好きになったお肉を教えてください。
-
画像の場合のみ、下線を消す方法はありますか?
HTML・CSS
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cssで、チェックボックスの画像...
-
table で画像をピッタリとくっ...
-
アップロードするとレイアウト...
-
ボタンをセル内一杯に表示させ...
-
レスポンシブ対応のHTML・CSS(...
-
FC2カートのテンプレートでの商...
-
XML画像データををHTMLで簡単に...
-
リンクを知らせる手のマークが...
-
画像の場合のみ、下線を消す方...
-
リンクを選択したときの青い枠...
-
画像サイズの変更の仕方を教え...
-
HTMLタグ記述の方法
-
htmlのolやulなどlistにtitleや...
-
htmlの文字が縦書きになる
-
idの中のid指定
-
含む含まないという概念自体の...
-
liタグの中に<p>タグやら<dl>を...
-
smallにtext-allignが効かない
-
【ヒトの神秘】美男美女から何...
-
リストの並べ替え
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ボタンをセル内一杯に表示させ...
-
リンクを知らせる手のマークが...
-
画像をクリックして元に戻すには
-
favicon.ico はもういらない?
-
htmlでキャラクター画像を、サ...
-
機種依存文字、m2(平方メート...
-
HTMLのIMAGEに。。
-
XML画像データををHTMLで簡単に...
-
ホームページで画像を横に並べ...
-
UDP通信を使うチャットプログラ...
-
ポップアップウィンドウのサイ...
-
【HTML/CSS】ボタンの枠が伸び...
-
inputタグでサーバにデータを送...
-
アップロードするとレイアウト...
-
画像の場合のみ、下線を消す方...
-
cssで、チェックボックスの画像...
-
imgタグは何で囲むのが良いか
-
かなり初心者の質問です。簡単...
-
画像を隙間なく配置する方法
-
CSSの左横に隙間ができてしまい...
おすすめ情報