Z-индекс не работает в IE8?

Этот код работает во всех других браузерах, которые я пробовал, кроме IE8.

IE8 игнорирует z-индекс, и всплывающее окно становится всплывающим.

Он в нужном месте, просто рендерится под миниатюрой.

Кто-нибудь?

Спасибо!

HTML:

<a class="thumbnail" href="#thumb">
    <img src="comic_a3_thumb.jpg" height="300" width="212" border="0"
         style="float:right; margin-top:10px;margin-bottom:10px;"
         alt="description" />
    <span>
        <img src="/images/comic_a3_popup.jpg" />
    </span>
</a>

CSS:

.thumbnail{
    position: relative;
    z-index: 0;
}

.thumbnail:hover{
    background-color: transparent;
    z-index: 50;
}

.thumbnail span{ /*CSS for enlarged image*/
    position: absolute;
    background-color: lightyellow;
    padding: 5px;
    left: 0px;
    border: 1px dashed gray;
    visibility: hidden;
    color: black;
    text-decoration: none;
}

.thumbnail span img{ /*CSS for enlarged image*/
    border-width: 0;
    padding: 2px;
}

.thumbnail:hover span{ /*CSS for enlarged image on hover*/
    visibility: visible;
    top: -140px; /*position where enlarged image should offset horizontally */
    left: -500px;
}

person Community    schedule 17.08.2009    source источник


Ответы (4)


Простой ответ — добавить значение z-index, превышающее значение .thumbnail:hover, к состоянию наведения span.

.thumbnail:hover span{ /*CSS for enlarged image on hover*/
    visibility: visible;
    top: -140px; /*position where enlarged image should offset horizontally */
    left: -500px;
    z-index: 51;
}
person Jordan S. Jones    schedule 17.08.2009

Поместите эти строки в заголовок страницы

<!--[if IE]>
    <style>
            #your_faulty_div{
            background-color:#000; /*any color it doesn't matter*/
        filter: alpha(opacity=0);
        }
        </style>
<![endif]-->

your_faulty_div — это div, который ведет себя неправильно из-за ошибки z-index в IE.

Работает гладко, я использую его во всех своих проектах, где я располагаю перекрывающиеся элементы.

person Juan M.    schedule 15.05.2010
comment
Что значит плохо себя вести? Это div, который должен идти сверху, или тот, который должен идти сзади? Присвоение ему непрозрачности 0 скроет все это вместе? У меня самого проблемы с похожей проблемой. Спасибо! - person cederlof; 31.01.2012

Если я вас правильно понял, вы хотите, чтобы span отображалось над элементом, отмеченным как миниатюра. Вы не указали z-index для элемента span. Вот рабочий пример:

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
    <title>Pop-up Test</title>
    <style type="text/css">
        #vbox {
            border: 1px solid black;
            height: 200px;
            position: relative;
            width: 200px;
            z-index: 0;
        }

        #vbox:hover #hbox {
            display: block;
        }

        #hbox {
            border: 1px solid blue;
            display: none;
            height: 200px;
            left: 50px;
            position: relative;
            top: 50px;
            width: 200px;
            z-index: 1;
        }
    </style>
</head>
<body>
    <div id="vbox">
        <p>Hover over this box to show a hidden "pop-up".</p>
        <p id="hbox">This box is a pop-up.</p>
    </div>
</body>
</html>
person James Sumners    schedule 17.08.2009

Чтобы решить эту проблему, добавьте класс к миниатюре следующим образом:

.thumbnail:hover img.thumb {z-index:-50; position:relative;}
person Chris    schedule 06.01.2010