Да, по спецификации способ есть.
Хотя я согласен с тем, что ответ Грэма Блэквуда должен быть приемлемым, поскольку он практически решает проблему, следует отметить, что фиксированный элемент можно расположить относительно своего контейнера.
Заметил случайно, что при нанесении
-webkit-transform: translateZ(0);
к телу он сделал фиксированный дочерний элемент относительно него (вместо области просмотра). Итак, мои свойства фиксированных элементов left
и top
теперь относились к контейнеру.
Итак, я провел небольшое исследование и обнаружил, что проблема уже была рассмотрена Eric Meyer, и даже если это было похоже на" уловку ", оказалось, что это часть спецификаций:
Для элементов, макет которых управляется блочной моделью CSS, любое значение преобразования, кроме none, приводит к созданию как контекста стека, так и содержащего блока. Объект действует как содержащий блок для фиксированных потомков.
http://www.w3.org/TR/css3-transforms/
Итак, если вы примените какое-либо преобразование к родительскому элементу, он станет содержащим блоком.
Но...
Проблема в том, что реализация кажется ошибочной / креативной, потому что элементы также перестают вести себя как фиксированные (даже если этот бит не является частью спецификации).
Такое же поведение будет обнаружено в Safari, Chrome и Firefox, но не в IE11 (где фиксированный элемент по-прежнему останется фиксированным).
Другая интересная (недокументированная) вещь заключается в том, что когда фиксированный элемент содержится внутри преобразованного элемента, тогда как его свойства top
и left
теперь будут связаны с контейнером, соблюдая свойство box-sizing
, его контекст прокрутки будет распространяться за границу элемента, как если бы размер коробки был установлен на border-box
. Для некоторых творческих людей это могло бы стать игрушкой :)
ТЕСТ
person
Francesco Frapporti
schedule
08.04.2013