Здравствуйте! Возникла проблема с z-index’ами в ИЕ7. Раньше никогда на ИЕ7 внимание не обращал, так как за браузер его не считал. Тут требование заказчика чтоб в Ие7 было также как и в остальных.

Описание сути: есть 2 родительских блока 1 и 2. В каждом из них есть по дочернему блоку 3 и 4 соответственно.
Блок 1(красный на рисунке) имеет стили
position:relative;
z-index:10;

Блок 2 (голубой на рисунке )имеет стили
position:absolute;
z-index:52;

Блок 3 (желтый на рисунке) имеет стили
position:relative;
z-index:auto;

Блок 4 (фиолетовый на рисунке) имеет стили
position:absolute;
z-index:90

Во всех броузерах кроме ИЕ7 блок 4 (фиолетовый) перекрывает и блок1 (красный) и блок 2 (голубой), а блок 2 перекрывает блок 3(желтый). В ИЕ7 блок 4 не перекрывает блоки 1 и 2 — это непрваильно, блок 2 перекрывает блок 3 — это правильно.

Подскажите как это лечиться для ие7 и что можно предпринять

171_zIndex

Оценить:|
  
Комментировать
Раздел: CSS    
Просмотров: 2075
Комментариев (5)
  1. AlexNGerman
    AlexNGerman
    31.01.2013 в 12:26

    Напиши нормально код разметки, слои и стили. А то этот псевдокод нифига не понятен где что, какой слой в какой вложен.

    Во всех броузерах кроме ИЕ7 блок 4 (фиолетовый) перекрывает и блок1 (красный) и блок 2 (желтый), а блок 2 перекрывает блок 3(голубой). В ИЕ7 блок 4 не перекрывает блоки 1 и 2 — это непрваильно, блок 2 перекрывает блок 3 — это правильно.

    Это описание вообще выносит мозг. У тебя Блок 3 жёлтый, ты пишешь «голубой».

  2. kukushka
    31.01.2013 в 12:46

    Код сюда: https://codepen.io/pen/ и потом нам ссылку.

  3. Ольга [Olga]
    31.01.2013 в 13:55

    Судя по тому, как отображается в IE7 родительские блоки 1 и 3, а 2 и 4 дочерние. IE7 ориентируется только на z-index родительского элемента, т.е. все дочерние блоки блока 1, будут над блоком 3, не зависимо от какой z-index прописан для дочерних блоков. Блоки 2 и 4 всегда отображаются? Если не всегда, а например при hover или при click, тогда стоит увеличить значение z-index для блока 3 на время этого состояния. Если всегда, тогда надо решать этот вопрос как-то иначе, например убрать position:relative у одного из родительского блока, и marginом спозиционировать блок относительно родительского, чтобы во всех браузерах отображалось верно, блок с absolute надо прописать вначале блока.

  4. serg32
    31.01.2013 в 13:55

    Описание поправил.

  5. serg32
    31.01.2013 в 13:58

    Судя по тому, как отображается в IE7 родительские блоки 1 и 3, а 2 и 4 дочерние — все верно. Насчет всего остального может и поможет, но дочерние блоки 2 и 4 генерятся внутри родительских в произвольном месте (не обязательно вначале или в конце). Принцип генерации мне не известен.

Оставить комментарий