2013-04-17 7 views
36

Пусть у меня есть этот код:Как сделать дочерний элемент верхнего чем родителя с г-индекс

<div class="parent"> 
    <div class="child"> 
     Hello world 
    </div> 
</div> 

<div class="wholePage"></div> 

Это jsFiddle: http://jsfiddle.net/ZjXMR/

Теперь мне нужно иметь <div class="child"> в сверху <div class="wholePage">, но в jsFiddle вы можете видеть, что дочерний элемент отображается до <div class="wholePage">.

Если вы удалите parent класс position или z-index, все будет хорошо. Это правильное поведение, которое мне нужно: http://jsfiddle.net/ZjXMR/1/

Как это сделать с z-index и не удаляя что-либо со страницы?

ответ

34

Это невозможно, так как у ребенка z-index установлен тот же индекс стека, что и его родитель.

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

+0

Спасибо Кайл, но, как я упоминал ранее, я должен решить проблему, не удаляя ничего. –

+6

'z-index' не наследуется. – BoltClock

+0

@boltclock Это взято из родителя: http://jsfiddle.net/ykzEH/ – Kyle

8

Для достижения желаемого результата без удаления каких-либо стилей вам нужно сделать z-индекс класса «.parent» более крупным, чем класс «.wholePage».

.parent { 
    position: relative; 
    z-index: 4; /*matters since it's sibling to wholePage*/ 
} 

.child { 
    position: relative; 
    z-index:1; /*doesn't matter */ 
    background-color: white; 
    padding: 5px; 
} 

jsFiddle: http://jsfiddle.net/ZjXMR/2/

3

Дайте родительский Z-индекс: -1, или непрозрачность: 0,99

+10

Если люди задаются вопросом, что такое непрозрачность: 0.99 - все, что я предлагаю вам прочитать эту ссылку. http://philipwalton.com/articles/what-no-one-told-you-about-z-index/ – johnsnails

+0

Это, похоже, не работает в IE 11 – Benedikt

0

Используйте нестатическое положение наряду с большим Z-индексом в дочернем элементе:

.parent { 
    position: absolute 
    z-index: 100; 
} 

.child { 
    position: relative; 
    z-index: 101; 
} 
1

Ничего не невозможно. Используй силу.

.parent { 
    position: relative; 
} 

.child { 
    position: absolute; 
    top:0; 
    left: 0; 
    right: 0; 
    bottom: 0; 
    z-index: 100; 
} 
+3

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. – gunr2171

0

У меня была та же проблема. То, что я сделал, это просто добавить позицию: относительная; и z-индекс: 1; к дочернему div.

.child-div { 
    position: relative; 
    z-index: 1; /*or greater*/ 
} 
Смежные вопросы