Проблема в том, что #one перекрывается с #three. Почему z-index не работает?
#one {
position: relative;
top: 35px;
z-index: 2;
}<div id = "one">one</div>
<div>two</div>
<div id = "three">three</div>проверьте этот пример jsfiddle.net/r1yvga44, он работает даже в вашем коде.
z-index работает в вашем коде. «один» и «три» перекрываются, потому что они расположены в одном и том же месте, поскольку вы указали значения position и top для «единицы». Если вы добавите background-color в #one, вы увидите, как работает z-idex
А в чем вроде проблема? Все работает как надо ...
Если вы не хотите, чтобы они перекрывались, просто удалите CSS. Все работает как положено.






<html>
<head>
<title>Page Title</title>
<style>#one{position:relative; top:35px; z-index: 1;background:white}
#three{
z-index:-3; background:white}
</style>
</head>
<body>
<div id = "one">one</div>
<div>two</div>
<div id = "three">three</div>
</body>
</html>
как далеко вы указали z-index? попробуйте что-нибудь выше 99.