
開発者はみんなみーーーーんな大好きIE(皮肉)。旧IE消えてくれ。
まあ、IE独自の仕様はたくさんあるけど、その中の1つを対処法こみで紹介
どんな時に起きるか
こんな時。
<div class="block_test">
<p class="block_test_img"><img src="./images/block_test_img.png" alt=""></p>
<p class="block_test_link"><a href="./test.html"></a></p>
</div>
.block_test {
position: relative;
}
.block_test_img {
position: relative;
z-index:5
}
.block_test_link {
position: absolute;
top: 0;
left: 0;
z-index: 10;
width: 100px;
height: 100px;
display: block
}
.block_test_link a {
display: block;
width: 100%;
height: 100%;
}
デザインの都合上で、画像全体にリンクはかけたくない、クリッピングマスクも使いにくいって場面。
こういう時は空のAタグを設置することがあるけど、chrome、firefox、safari、ie11等は大丈夫なのにie10ではz-indexが効いてくれない。
よくあるミスとしてz-indexとセットでおく「position」プロパティが置いてなくて、とかでもない。
原因
原因は謎仕様の、「何も描写されていない空の要素にはz-indexが効かない」というもの。えぇ・・・。
要するに、空の要素に何かしらを中に入れるか、空の要素に対してbackgroudプロパティで背景にひくかしないとz-indexが効いてくれない。
対処法
一番シンプルな対処法は、backgroudで透明の1pxの画像をrepeatさせてひくこと。
これによって、透明が描写されていると認識されるため、ちゃんとz-indexが効いてくれる。
background: rgba(0,0,0,0)でもいいけど、これだとIE8が対応しないので、素直に1pxの透明画像にした方がいいかも。
では。