예, 사양에 따르면 방법이 있습니다.
Graeme Blackwood가 문제를 실질적으로 해결하기 때문에 받아 들일만한 대답이어야한다는 데 동의하지만 고정 요소 는 컨테이너에 상대적으로 배치 할 수 있습니다.
우연히 신청할 때
-webkit-transform: translateZ(0);
몸에 (뷰포트 대신) 고정 된 자식을 만들었습니다. 그래서 내 고정 요소left
와top
속성은 컨테이너와 관련이 있습니다.
그래서 몇 가지 조사를 한 결과 문제가 이미 Eric Meyer 에서 다루고 있음을 발견했습니다. 있고 그것이 "속임수"인 것처럼 느껴지더라도 이것이 사양의 일부라는 것이 밝혀졌습니다.
CSS 상자 모델에 의해 레이아웃이 제어되는 요소의 경우 변환에 대한 값 이외의 값은 스택 컨텍스트와 포함 블록을 모두 생성합니다. 객체는 고정 위치 자손의 포함 블록 역할을합니다.
http://www.w3.org/TR/css3-transforms/
따라서 부모 요소에 변환을 적용하면 포함 요소가됩니다.
그러나...
문제는 요소가 고정 된 것처럼 작동하지 않기 때문에 구현이 버그가 많거나 독창적이라는 것입니다 (이 비트가 사양의 일부가 아닌 것처럼 보이더라도).
Safari, Chrome 및 Firefox에서도 동일한 동작이 발견되지만 IE11에서는 고정 요소가 여전히 고정되어 있습니다.
또 다른 흥미로운 (언급되지 않은) 것은 고정 요소가 변환 된 요소 안에 포함되어 있으면 속성과 관련하여 컨테이너의 속성 top
과 left
속성이 컨테이너와 관련이 box-sizing
있으며 스크롤 컨텍스트가 상자처럼 요소의 테두리 위로 확장된다는 것입니다 크기가로 설정되었습니다 border-box
. 어떤 창조적 인 경우, 이것은 아마도 장난감이 될 수 있습니다 :)
테스트