I have a div with absolute position on a page which overlaps on another div when scrolling. I want to make it invisible when it scrolls to a specific div.
For that purpose, I'm using the z-index
. I'm setting the z-index
1 of the div which I want to hide, and much higher z-index
for the other div. However it does not hide the div. If I set the z-index
to -1 then it hides but then the links on that div are no more clickable. How can I fix this?
Here's my code:
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;
}
So the problem in above example is that the links in the .box are not clickable (because of -ve z-index
value), and if I set it positive, it wont hide behind the .down.
JSFiddle: http://jsfiddle.net/G2xRA/
I had the same problem too. I solved it by changing the z-index values with a value greater than -1.
I made the front layer 2 and behind 1, so it worked.
In order for z-index's to go on top of each other you will both elements to have positioned.
A better description:
So you will need:
Actually
z-index
only works withposition
so I gave theposition:relative;
to your.down
class.See the mentioned below CSS & DEMO.
DEMO
Make these 2 changes in the classes. Z-index won't work in .down as you didn't put position. And, there is no need for the -ive z-index in .box. Z-index works like layers, an element with z-index 1 will be under any element that has higher z-index than 1. Ofcourse for this to work the elements need to be positioned.