2016-02-05 2 views
0

Я пытаюсь создать меню на боковой стороне моего веб-сайта, которое выкатывается при наведении на него. Сначала у меня была ширина, но текст выглядел бы странно, поэтому я решил использовать анимацию CSS для изменения положения div таким образом, чтобы он перемещался вправо. Проблема, которую я получаю, состоит в том, что те меню divs накладывают «главный» div. Единственный способ получить эти divs под основным div - использовать z-index: -1, но затем :hover больше не работает. Я пробовал pointer-events: none;, но это тоже не работает.Как использовать зависание на div, который находится ниже другого div

<div id="container"> 
    <div id="header"> 
     <img id="mainpic" src="pokebalicon.png" /> 
    </div> 
    <div class="sidediv" id="first"> 
     <p>Homepage</p> 
    </div> 
    <div id="mainpage"> 
     text 
    </div> 
</div> 

И CSS

#container { 
    width: 820px; 
    height: 700px; 
    margin: 100px auto; 
    position: relative; 
} 
#header { 
    padding: 10px; 
    height: 100px; 
    width: 100%; 
    background-color: transparent; 
    overflow: hidden; 
} 
#mainpage { 
    height: 600px; 
    width: 100%; 
    background-color: #FFFFFF; 
    border-radius: 10px; 
    padding: 20px; 
    border: 1px solid #D5D4D4; 
    pointer-events: none; 
} 
.sidediv{ 
    position: absolute; 
    left: 721px; 
    height: 40px; 
    width: 170px; 
    text-align: center; 
    margin-top: 50px; 
    border: 1px solid #000000; 
    border-radius: 0 5px 5px 0; 
    z-index: -1; 
} 

.sidediv:hover запускает анимацию, которая меняет left таким образом, что это похоже, что это время вытащил. Но, к сожалению, ничего не происходит, паря на стороне. Любая идея, как это решить?

зависания выглядит следующим образом:

.sidediv:hover{ 
    -webkit-animation: example 0.5s forwards; 
    animation: example 0.5s forwards; 
} 
@-webkit-keyframes example { 
    100% {left: 841px;} 
} 
@keyframes example { 
    100% {left: 841px;} 
} 
+0

Можете ли вы опубликовать обновленный код, в котором на самом деле вы используете ': hover' и указывают на div, где вы хотите принять это действие. –

+0

Он просто вызывает анимацию, которая меняет атрибут 'left', как я уже сказал. Он работает, если я не установил z-index sidediv в -1, но после этого функция зависания просто исчезла. – tomishomo

+0

Можете ли вы, пожалуйста, поделиться с ним рабочей скрипкой. –

ответ

0

Попробуйте

#container { 
 
    width: 820px; 
 
    height: 700px; 
 
    margin: 100px auto; 
 
    position: relative; 
 
} 
 

 
#header { 
 
    padding: 10px; 
 
    height: 100px; 
 
    width: 100%; 
 
    background-color: transparent; 
 
    overflow: hidden; 
 
} 
 

 
#mainpage { 
 
    height: 600px; 
 
    width: 100%; 
 
    background-color: #FFFFFF; 
 
    border-radius: 10px; 
 
    padding: 20px; 
 
    border: 1px solid #D5D4D4; 
 
} 
 

 
.sidediv { 
 
    position: absolute; 
 
    left: 721px; 
 
    top: 80px; 
 
    height: 40px; 
 
    width: 170px; 
 
    text-align: center; 
 
    margin-top: 50px; 
 
    border: 1px solid #000000; 
 
    border-radius: 0 5px 5px 0; 
 
    z-index: -1; 
 
    transition: 0.7s 
 
} 
 

 
#container #mainpage:hover + .sidediv { 
 
    z-index: 1; 
 
    background: pink; 
 
    left: 0px 
 
}
<div id="container"> 
 
    <div id="header"> 
 
    <img id="mainpic" src="http://i.imgur.com/IMiabf0.jpg" /> 
 
    </div> 
 
    <div id="mainpage"> 
 
    text 
 
    </div> 
 
    <div class="sidediv" id="first"> 
 
    <p>Homepage</p> 
 
    </div> 
 
    
 
</div>

+0

Я пробовал это, но он, похоже, не работает. 'z-index' чувствует себя странно и для меня. Я, хотя, когда div имеет более высокий z-индекс, чем другой div, он будет помещен поверх другого. Но я могу получить sidediv ниже другого div при использовании значения -1. Кажется, он не работает с какой-либо другой ценностью, поэтому, возможно, это часть проблемы. – tomishomo

Смежные вопросы