Ссылки не доступны для кликов из-за z-индекса

У меня есть div с абсолютной позицией на странице, которая накладывается на другой div при прокрутке. Я хочу сделать его невидимым, когда он прокручивается до определенного div.

Для этой цели я использую z-index. Я устанавливаю z-index 1 div, который я хочу скрыть, и намного выше z-index для другого div. Однако он не скрывает div. Если я установил z-index в -1, тогда он скрывается, но тогда ссылки на этом div больше не доступны для кликов. Как я могу это исправить?

Здесь мой код:

HTML:

<div class="wrap">
    <div class="up"><div class="box"><a href="#">Should hide</a></div></div>   
    <div class="down">Should be visible</div>
</div>

CSS

.wrap{
    width: 300px;
    position: relative;
    overflow: hidden;
    border: 1px solid #000;

}
.up{
    height: 100px;   
}

.box{
    position: absolute;
    top: 20px;
    background: yellow;
    width: 100px;
    height: 100px;
    z-index: -1; 
}

.down{
    background: green;
    overflow: hidden;
    z-index: 200;
    height: 400px;
}

Таким образом, проблема в приведенном выше примере заключается в том, что ссылки в .box не доступны для кликов (из-за значения -ve z-index), и если я положил его положительным, он не будет скрываться за .down.

JSFiddle: http://jsfiddle.net/G2xRA/

Ответы

Ответ 1

Фактически z-index работает только с position, поэтому я дал position:relative; вашему классу .down.

См. приведенный ниже CSS и DEMO.

.box{
        position: absolute;
        top: 20px;
        background: yellow;
        width: 100px;
        height: 100px;
        z-index: 1;  
    }

    .down {
        background: none repeat scroll 0 0 green;
        height: 400px;
        overflow: hidden;
        position: relative;
        z-index: 2;
    }

DEMO

Ответ 2

Для того, чтобы z-index переместился друг на друга, вы оба позиционируете оба элемента.

Лучшее описание:

Определение и использование

Свойство z-index указывает порядок стека элемента.

Элемент с большим порядком стека всегда находится перед элементом с более низким порядком стека.

Примечание: z-индекс работает только с расположенными элементами (позиция: абсолютная, позиция: относительная или позиция: фиксированная).

Итак, вам понадобится:

.up {
    height: 100px;
    position: absolute;
}

Ответ 3

.box{
    position: absolute;
    top: 20px;
    background: yellow;
    width: 100px;
    height: 100px;
    z-index: 1;  
}

.down{
    background: green;
    overflow: hidden;
    z-index: 2;
    height: 400px;
    position:relative;
}

Сделайте эти 2 изменения в классах. Z-index не будет работать в .down, поскольку вы не поставили позицию. И нет необходимости в -ive z-index в .box. Z-index работает как слои, элемент с z-индексом 1 будет находиться под любым элементом с более высоким z-индексом, чем 1. Для этого для работы элементы должны быть расположены.

Ответ 4

У меня была такая же проблема. Я решил это, изменив значения z-index со значением больше -1.

Я сделал передний слой 2 и позади 1, поэтому он работал.