kasheibess
@kasheibess
веб уже не тот

Z-index. Как подвинуть элемент повыше, если у родителя тоже задан z-index?

Всем доброго дня! Собственно вопрос уместился в шапке. В данном примере есть проблема - нужно поднять синий блок над белым.
Z-index у div class="wrap" необходим, так как реализуется хитрая галерея работ. Этот блок появляется при наведении мышки на белый блок( в оригинале img ) .

Вот собственно сам пример jsfiddle.net/login2030/w298vpaz/1 , главная загвоздка в комментарии прописана. Копал, читал про z-index все что можно, но так и не нашел решения.

Есть конечно одна идейка - при наведении на первый белый блок, второму задавать отрицательный z-index через js. Но во-первых я не знаю как можно это сделать, ведь работ то в реале не 2, а бесконечное множество.
А во вторых мне кажется должен быть менее костыльный вариант.

Если кто сталкивался с такими граблями - подскажите пожалуйста, хоть примерный алгоритм, хоть просто мысли выскажите. Заранее всем огромное спасибо.

Добавлен пример с примерным экшеном jsfiddle.net/login2030/w298vpaz/3

Добавлен скриншот реальной задачи :
2b73e645229847c393613be0fefc2da4.png

Как видно из примера - всплывающий серый блок закрывает соседнюю работу. А синий блок из примера - это значок глаза и текст "Посмотреть ".
  • Вопрос задан
  • 3114 просмотров
Решения вопроса 2
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
При конкуренции между контекстами z-index определяет победителя. Так что да — если вы для позиционируемого блока для контейнера выставили z-index, то этот блок не может выиграть у любого другого позиционируемого блока в контексте, который расположен в контексте, выигравшем у контейнера первого блока.
Изменить ситуацию можно, либо не выставляя z-index для контекстов, либо динамически меняя эти значения.

Счёт насчёт счёта. Граф считает счета на своём счету.

Update: Вот так примерно решается ваша задача. Ничего хитрого — просто смена z-index при наведении.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Пригласить эксперта
Ответы на вопрос 2
@Beefeater
Не очень понимаю вопрос.
Чем больше Z-index - тем выше элемент.
У Вас у Wrap - z-index = 1, а у Img = 4
Соответственно все что будет во wrap - ниже Img. А все, что Вам нужно - это увеличить Z-index у wrap
Ответ написан
PretorDH
@PretorDH
HTML5, CSS3, PHP, JS - люблю в чистом виде.
Убирай все z-index - они лишние у неактивных элементов. И ставь на .wrapper:hover вот такой стиль:
.wrapper:hover .wrap,.image:hover {
    z-index:1;
}

Решение на Jsfiddle

Изначально не правильно построена концепция. У тебя для каждой картинки должен быть свой текст. Абсолютное позиционирование как картинок так и враперов не уместно. Враппер для каждой картинки нужно ставить в нутрь блока .image - Перед тегом img, или задать z-index если картинка в background. А синий блок "Посмотреть" создавать через :after.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы