Amazonの商品一覧にあるような、画像とテキストに同時にリンクを貼るためのCSSを教えて頂きたいです。(javascript等を使わずに)
画像にマウスオーバーするとテキストに下線が入り、テキストにマウスオーバーするとテキストに下線が入るようにしたいのですが、うまくいきません。
<a>
<div>
<img src="#" width="#" height="#" alt="#">
<p>商品説明</p>
</div>
</a>
このようにhtml5では、<div>を<a>タグで囲めるみたいで、
<div>全体にリンクが貼れるのは良いのですが、
マウスオーバーした時にテキストに下線が入らなくて困ってます。
この方法で無理ならば、他にCSSでやり方があるのか教えて頂けたらと思います。
No.3ベストアンサー
- 回答日時:
>このようにhtml5では、<div>を<a>タグで囲めるみたいで、
ここ誤解されています。
The a element may be wrapped around entire paragraphs, lists, tables, and so forth, even entire sections, so long as there is no interactive content within (e.g. buttons or other links).( http://www.w3.org/TR/2014/REC-html5-20141028/tex … )
入れられるのではなく、「段落(p)、リスト(ol,ul,dl)、表(table)だけでなく、セクション(section)も、a要素で囲める」
だからと言って、divを使うべきではない。divはHTML5では原則使わない。
Authors are strongly encouraged to view the div element as an element of last resort, for when no other element is suitable.( http://www.w3.org/TR/2014/REC-html5-20141028/gro … )
著者は、他に適切な要素がないときの最後の手段として、div要素を使用することが強く奨励されます。
「HTML4.01以降、「構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」と言われ、プレゼンテーションのためにHTMLを書かない。」これは、スタイルシートの概説( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )にもこんこんと書かれいている。
単純にナビゲーションリストですから、
<ul class="ItemList">
<li><a href=""><img src="" width="" height="" alt="">
<ol>
<li>【Amazon.co.jp限定】Transcend SDHCカード 16GB</li>
<li>トランセンド・ジャパン</li>
<li>¥ 827</li>
</ol>
</a></li>
であっても構わない。li:リストアイテムをa要素に含めています。
これが【HTMLではブロック要素も含めることができる】という意味です。もちろん、HTML4.01なら
<ul>
<li><a href=""><img src="" width="" height="" alt=""></a>
<p>
<a href=""><span>【Amazon.co.jp限定】Transcend SDHCカード 16GB</span>
<span>トランセンド・ジャパン</span>
<span>¥ 827</span></a>
</p>
</li>
とかになっちゃう。いずれも画像にマウスオーバーしても次のa要素にアンダーラインするとか、同様に同じプレゼンテーションにできますが・・隣接セレクタを使う。
>マウスオーバーした時にテキストに下線が入らなくて困ってます。
これはブラウザがHTML5に対応していない場合に、次のように補完してしまうからです。
<ul class="ItemList">
<li><a href=""><img src="" width="" height="" alt="">
<ol>
<li>【Amazon.co.jp限定】Transcend SDHCカード 16GB</li>
<li>トランセンド・ジャパン</li>
<li>¥ 827</li>
</ol>
</a></li>
↓これをブラウザが修正する。
<ul>
<li><a href=""><img src="" width="" height="" alt=""></a>
<ol>
<li><a href="">【Amazon.co.jp限定】Transcend SDHCカード 16GB</a></li>
<li><a href="">トランセンド・ジャパン</a></li>
<li><a href="">¥ 827</a></li>
</ol>
<a href=""></a></li>
そのために、画像にマウスオーバーしても認識されない。
例)
<ul class="ItemList">
<li><a href=""><img src="" width="" height="" alt="">
<ol>
<li>【Amazon.co.jp限定】Transcend SDHCカード 16GB</li>
<li>トランセンド・ジャパン</li>
<li>¥ 827</li>
</ol>
</a></li>
ul.ItemList{padding:0;list-stype-type:none;}
ul.ItemList li{display:inline-block;height:200px;width:150px;position:relative;}
ul.ItemList li img{width:100%;height:auto;}
ul.ItemList li ol li{display:list-item;list-style-type:decimal;}
/* これが要るかも */
ul.ItemList a a{text-decoration:underline;}
色々と例文を出していただき、ありがとうございました。
<div>タグがこんなに冷遇されてるなんて…。
勉強になりました!
とりあえず、<head>にIE8でもHTML5が使用できる記述を入れて、
<a>タグで要素を囲むと、全てのブラウザで希望通りに表示されました〜
No.1
- 回答日時:
これでどうですか?
<style type="text/css">
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
cursor: pointer;
}
</style>
記述してませんでした。申し訳ありませんでした。
もちろん、text-decoration: underline;は設定しているのですが、
ブラウザの「Safari」だけ、マウスオーバーすると、テキストにアンダーラインが表示されるのですが、他のブラウザでは、表示されなくて困っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS サルワカさんの吹き出しのスタイルシートについて。 https://saruwakakun.com/h 2 2022/10/28 22:55
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像にリンクを張ると画像がず...
-
ポップアップメニューを表のよ...
-
リストの数字のフォントサイズ...
-
ポップアップメニューの作成方...
-
HTMLで組織図を作成する方法
-
<li>でドロップダウンボタンを...
-
<table>の高さ固定。情報増加時...
-
html <ul></ul>の並びで一行空...
-
「olタグ」内に「hタグ要素」...
-
リンク文字同士の間隔を開ける...
-
バーナーヘッダーを固定する方法
-
罫線の長さが可変するテキスト...
-
タイトルの横にサブタイトルが並ぶ
-
css 横並びのナビゲーションバ...
-
ol、liをスタイルシートで中央寄せ
-
画像横のテキストをセンターに...
-
HTMLで語の先頭をそろえるには?
-
テーブル内のプルダウンの下に...
-
「・」(黒い点)を非表示にした...
-
CSSでリスト[li]の表示がズレる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リストマーカーをボックス内に...
-
番号付きリスト(<Ol><Li>・・...
-
liタグの中に<p>タグやら<dl>を...
-
レスポンシブWebデザインでリン...
-
<table>の高さ固定。情報増加時...
-
<ul><li></li></ul>にするメリ...
-
リストの数字のフォントサイズ...
-
HTMLで組織図を作成する方法
-
ulタグやliタグの中でbrタグ...
-
divタグ内のコンテンツが重なっ...
-
画像にリンクを張ると画像がず...
-
複数行にまたがる括弧を表示し...
-
ページを開いているときのリン...
-
html <ul></ul>の並びで一行空...
-
html/cssの、navを2段にする...
-
HTML5のfooterに見出しを付けて...
-
<ul>~</ul>が二つ続くと間に改...
-
htmlの<ol>タグで、数字などを...
-
リンク文字同士の間隔を開ける...
-
CSSでつくったメニューのアニメ...
おすすめ情報
現在<div>をfloat: left;しているのですが、float: left;を削除すると、
マウスオーバー時に、テキストにアンダーラインが表示されました。
floatが原因なのでしょうか…?
たびたびすいません。
<div>
<a>
<img src="#" width="#" height="#" alt="#">
<p>商品説明</p>
</a>
</div>
<div>の中に<a>タグを入れれば出来ました。
これで良いのか分かりませんが…。