※記事内に広告を含みます。
flexboxで作ったブロック全体をリンクさせたい時、全体に反映させるようaタグで囲ったらflexboxが崩れてしまった時の原因と解決方法です。
このように赤色の点線でかこったボックス(ブロック)全体をリンクできるようにします。
ボックス(ブロック)全体なので親要素直下にaタグを挿入すると、flexboxが崩れてしまいます!!!
崩れた原因:flexboxで作られたブロック全体にaタグでかこうと
aタグはinline要素なのでflexboxが効かなくなってしまいます。
解決方法:全体を囲うのではなく、ボックス(ブロック)内に設置し、CSSでボックス全体にaタグリンクを反映させる方法です。
HTML
<div class="box"> <div class="box-left"> <img src="img/パンケーキ.png"> </div> <div class="box-right"> <div class="box-right-top"> <p class="p_recipe">レシピ</p> <p class="p_cat">スイーツ</p> </div> <p>パンケーキ<br> 〜季節のフルーツ添え〜</p> <p>【材料】<br> ・小麦粉:1kg<br> ・牛乳:2L<br> ・季節のフルーツ:<br> 好きなだけ</p> <a href="#"></a> <-- ここへaタグ挿入 --> </div> </div>
CSS
/* ボックス全体にrelative */ .box { position: relative; } /* aタグの設定 */ .box a{ position: absolute; width: 100%; height: 100%; top: 0; left: 0; text-indent: 100%; white-space: nowrap; overflow: hidden; }
※装飾にあたるCSSは省いています。