У меня несколько странное поведение в Chrome и Safari. У меня есть масштабированный (transform: scale()
) контейнер с видео и другими элементами внутри него. При некоторых масштабирования абсолютные позиционированные элементы с высоким z-индексом исчезают и не возвращаются снова.
Как я могу это исправить? Обратите внимание: я не могу дать элементу видео отрицательный z-индекс, и мне нужно использовать overflow: hidden;
,
пример
Я привел пример, который масштабирует внешний контейнер вверх и вниз. В значении масштаба .on-top
элемент с классом .on-top
(и текст "I should always be on top."
) исчезает. При уменьшении масштаба снова появляется неожиданно.
Ссылка на exmaple: https://jsfiddle.net/iafiawik/Lcox1ecc/
Выводы
- Кажется, что размер элемента имеет значение. Чем больше я это делаю, тем больше значение шкалы перед ее исчезновением.
- Я также проверил, чтобы установить
transform: scale(1.4)
с CSS непосредственно на элемент, и поведение такое же.
Проблема не существует, если я:
- Замените тег видео на div
- Удалить
position: absolute;
от братьев и сестер до.on-top
(то есть,.below
) - Удалить
overflow: hidden;
от.content
- Если я перемещаюсь.
.on-top
поэтому он помещается после тега видео в поток документа
(Но, конечно, ни один из этих обходных решений для меня не работает на самом деле из-за особых причин проекта. Я также не могу дать элементу видео отрицательный z-индекс, и мне нужно использовать overflow: hidden;
)
Предлагаемые обходные пути сообщества (спасибо!)
- Дайте тегу видео отрицательный индекс z (не могу этого сделать, потому что иногда у меня есть элементы, размещенные за видео)
- Удалить
overflow: hidden;
(Я не могу удалитьoverflow: hidden;
)
Браузеры
Я видел эту проблему в Chrome (Mac) и Safari (Mac).
Обновление 1
Похоже, что этот отчет об ошибках в значительной степени охватывает мою проблему. Тем не менее, он не обеспечивает исправления.
Обновление 2
Я ответил на свой вопрос, предоставив свое решение этой проблемы.
Обновление 3
Существует много ответов, которые либо изменяют z-index
видео, либо добавляют translateZ
к .on-top
. Демонстрации показали, что оба этих подхода устраняют проблему. Однако, поскольку моя структура HTML - это результат визуального редактора HTML (длинный рассказ...), я не знаю, какие элементы будут там или если они должны быть впереди, ниже или рядом с видео. Поэтому я ищу решение, которое не требует изменений для отдельных элементов, находящихся внутри масштабированного элемента.