как использовать z-index с относительным позиционированием? - PullRequest
38 голосов
/ 24 января 2012

У меня проблема с z-index и моим кодом.Я хочу иметь всплывающее окно в каждой строке, расположенной относительно этой строки.Таким образом, я создал этот код:

<div class="level1">
    <div class="level2">
        <input type="text" value="test1" />
        <div class="popup">test1</div>
    </div>
    <div class="level2">
        <input type="text" value="test2" />
        <div class="popup">test2</div>
    </div>
</div>

со следующим стилем

.level1
{
    position:relative;
    z-index:2;
}
.level2
{
    position:relative;   
    z-index:3;
}
.popup
{
    position:absolute;
    left:0px;
    top:10px;
    width:100px;
    height:100px;
    background:yellow;
    z-index:4;
}

Ответы [ 4 ]

59 голосов
/ 24 января 2012

Когда вы устанавливаете position: relative для элемента, тогда вы устанавливаете новый содержащий блок. Все позиционирование внутри этого блока относится к нему.

Установка z-index для элемента внутри этого блока будет изменять его слой только по отношению к другим элементам внутри того же блока.

Я не знаю никаких обходных путей.

3 голосов
/ 27 апреля 2016

Вы можете использовать z-index с позицией relative. Вам просто нужно указать position: relative. Если вы действительно хотите, чтобы это выглядело так, как будто выскочил, я предлагаю использовать box-shadow

.popup {
    position:relative;
    left: 0px;
    top: 10px;
    width: 100px;
    height: 100px;
    background:yellow;
    z-index: 4;

    -webkit-box-shadow: 0px 6px 6px 0px rgba(213,213,213,0.6);
    -moz-box-shadow: 0px 6px 6px 0px rgba(213,213,213,0.6);
    -ms-box-shadow: 0px 6px 6px 0px rgba(213,213,213,0.6);
    -o-box-shadow: 0px 6px 6px 0px rgba(213,213,213,0.6);
    box-shadow: 0px 6px 6px 0px rgba(213,213,213,0.6);
}
1 голос
/ 07 сентября 2017

попробуйте добавить z-index с отрицательными значениями к обратным элементам div

0 голосов
/ 18 июня 2019

Z-Index - это порядок правил, результаты которого будут видны ТОЛЬКО, когда два или более элементов перекрываются. Это означает, что если вы хотите, чтобы поведение z-index было таким же, как и в абсолютной позиции, вам нужно, чтобы они перекрывались. Относительное положение не заставляет их перекрываться, поэтому, например, в этом примере, чтобы перекрыть эти два деления, я должен установить верхнюю часть второго на -50px.

  <div style="background-color: blue; width: 500px; height: 100px; position: relative">
    <div style="background-color: red; width: 50px; height: 50px; position: relative; z-index: 1;  top: 0px"></div>
    <div style="background-color: yellow; width: 50px; height: 50px; position: relative; z-index: 0; top: -50px"></div>  
  </div> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...