- ベストアンサー
a:hoverで背景色を指定すると文字が消える!
- a:hoverで背景色が赤になった時、文字が消えてしまう現象が発生しています。どうすれば文字が見えるようになるでしょうか?
- CSSとHTMLを用いてa要素に:hoverの時に背景色が赤に変化し、文字色が白に変化するように設定しましたが、文字が消えてしまいます。どのように修正すれば良いでしょうか?
- 背景色が赤に変わったとき、文字が見えなくなる問題が発生しています。どのようにすればこの問題を解決できるでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
突っ込みどころはあるのですが、 結論から言うと、これでいけます。 ------------------------------------------------------------ .box-cell { float: left; position: relative; color: #000; background-color: #fff; } .box-cell:hover { background: #f00; color: #fff; } .box-cell:after { clear: both; } .box-cell a { display: block; width: 100%; height: 100%; position: absolute; top: 0; left: 0; } ------------------------------------------------------------ aタグにposition: absolute;しているため、レイヤーが上位にきてしまい、 aタグが文字の上に覆いかぶさってしまっているのが原因です。 ですので親要素のbox-cellにhoverすれば いけるというわけです。 指摘点としては、 そもそもhtmlの記述として、 ------------------------------------------------------------ <div class="box-cell"> あいうえお<br /> かきくけこ<a href="http://www.yahoo.co.jp/"></a> </div> ------------------------------------------------------------ とするのではなく、 ------------------------------------------------------------ <div class="box-cell"> <a href="http://www.yahoo.co.jp/">あいうえお<br /> かきくけこ</a> </div> ------------------------------------------------------------ とするのがスマートです。 またはhtml5であれば ------------------------------------------------------------ <a href="http://www.yahoo.co.jp/"> <div class="box-cell"> あいうえお<br /> かきくけこ </div> </a> ------------------------------------------------------------ でも可能ですが、いずれにしてもaタグが独立しているのに 違和感を感じます。 通常、リンクエリアはリンクさせたい箇所を囲うのが普通です。 なので先に結論としてあげたCSSもhtmlとの兼ね合いを見たら スマートではないですね。 ただどうしてもhtmlは変更できない事情がおありなら、 先に書いたCSSのようにする必要があります。 その他指摘点として、 cssのプロパティでdisplay: table;とdisplay: table-cell;を使っているのに なぜfloat: left;を使用しているのかが違和感です。 display: table-cell;の時点で横並びは成立しているので、 float: left;を使う必要がないです。 display: table;とdisplay: table-cell;を使うのをやめるか、 float: left;を使うのをやめるとかしたほうがいいと思います。 先に書いたCSSはdisplay: table;をやめてfloat: left;を採用した例です。
お礼
出来ました! floatは本当に難しいです・・・。 display: table-cell;は外せましたが、display: table;を外そうとするとなんか上手くいかなかったのでお勉強しながら外していきたいと思います。 ご丁寧な回答をありがとうございました。