"위치 : 절대"를 상위 컨테이너가 아닌 문서에 상대적으로 강제 적용


93

본문의 어느 부분 에나 div를 삽입 position: absolute하고 position: relative. 가있는 부모 요소가 아닌 전체 문서에 상대적으로 만들려고 합니다 .


위치가 문서에 대해 절대적이면 <body>태그 의 자식으로 속합니다 .
Jim Garrison

아래에서 내 솔루션을 보셨습니까?
tw16

네. 많은 페이지에서 사용되는 템플릿을 만들고 있으며 때로는 상대적으로 배치 된 요소 (내가 제어 할 수없는 요소입니다. 이제 불가능하다는 것을 알았습니다. 도움을 주셔서 감사합니다. 나에게서 +1하면 다음으로 표시하겠습니다. 당신이 당신의 대답에 자사의 불가능 말한다면 수정합니다.
디모데 Ruhle에게

답변:


36

요소 의 div외부 를에 배치해야합니다 .position:relativebody


1
^^ 이거. 그것이 절대 위치에 있다면 어쨌든 상대적으로 위치 된 요소 안에 넣을 이유가 없습니다.
DOOManiac 2011

7
@DOOManiac-마우스 오버 스크립트를 실행하거나 부모에 의해 트리거 된 mouseout 스크립트를 실행하지 않기를 원하기 때문에 상대적으로 배치 된 요소 내부에 원할 수 있습니다. 내 대답은 그러한 상황을 허용합니다.
Michael.Lumley 2014-09-29

1
@DOOManiac 절대 요소를 상대 요소에 넣는 이유는 상대 요소를 기준으로 절대 div를 배치하는 것입니다. 몸체를 기준으로 위치를 지정하려면 기본적으로 몸체가 상대적으로 설정되어 있지 않더라도 상대적입니다.
Jason Foglia

18
컨테이너가 다른 컨테이너의 자식이되어야하는 이유는 수백 가지가있을 수 있지만 위치는 문서에 대해 절대적이어야합니다. 몸에 직접 포함하는 등의 대답은 틀립니다. 정답은 위치 : 고정입니다. 비추천.
walv

3
@walv : position:fixedposition:absolute같은 동작을하지 않습니다. 고정은 뷰포트 (문서가 아님)에 상대적이며 스크롤 한 후에도 항목이 항상 표시되어 잠재적으로 겹침 등을 유발할 수 있습니다. html 구조에 대한 유효한 이유가있을 수 있음을 이해하지만 질문은 구체적으로 html 및 css, 내 대답이 맞습니다. JS없이 문서를 기준으로 만드는 유일한 방법은 문서를 position:relative요소 밖으로 옮기는 것 입니다.
tw16

95

당신은를 찾고 있습니다 position: fixed.

MDN에서 :

고정 위치 지정은 요소의 포함 블록이 뷰포트라는 점을 제외하면 절대 위치 지정과 유사합니다. 페이지를 스크롤 한 후에도 동일한 위치에 유지되는 플로팅 요소를 만드는 데 자주 사용됩니다.


28
이 답변의 문제는 고정 요소가 스크롤에서 이동하지 않고 절대 요소가 수행하기 때문에 사용자가 절대를 사용하기를 원한다는 것입니다 :)
A Friend

3
당신은 절대적인 전설입니다.
Benisburgers

6
질문은 뷰포트가 아니라 문서를 기준으로 위치를 지정하는 방법이었습니다
Paul Humphreys

이것은 스택 컨텍스트의 버그로 인해 ie11에서 잠재적으로 문제를 일으킬 수 있습니다
James Westgate

32

내 솔루션은 jQuery를 사용하여 div를 부모 외부로 이동하는 것입니다.

<script>
    jQuery(document).ready(function(){
        jQuery('#loadingouter').appendTo("body");
    });
</script>

<div id="loadingouter"></div>

1
마스터 페이지를 사용하고 있었기 때문에 body 요소 안에 직접 요소를 배치 할 수 없었기 때문에 이것은 내 문제를 해결했습니다. 감사!
Osprey

9

요소를에 연결하지 않으려면 body다음 솔루션이 작동합니다.

나는 마우스가 새로운 요소와 그것을 생성 한 요소 모두 위에있을 때 실행하려는 mouseover 스크립트가 있었기 때문에 div를 본문에 연결하지 않고도 작동하는 솔루션을 찾기 위해이 질문에 왔습니다. jQuery를 기꺼이 사용하고 @Liam William의 답변에 영감을받은 경우 :

var leftOffset = <<VALUE>>;
var topOffset = <<VALUE>>;
$(element).css("left", leftOffset - element.offset().left);
$(element).css("top", topOffset - element.offset().top);

이 솔루션은 요소의 현재 왼쪽 및 상단 위치 (본문 기준)를 빼서 요소를 0, 0으로 이동합니다. 본문을 기준으로 원하는 위치에 요소를 배치하는 것은 왼쪽 및 상단 오프셋을 추가하는 것만 큼 간단합니다. 값.


2
또한 언급 할 가치가있는 것은 jQueryUI 위치 함수입니다.
Michael.Lumley 2014 년

8

단순히 CSS와 HTML로는 불가능합니다.

Javascript / jQuery를 사용하면 잠재적으로 jQuery.offset()DOM에 요소 를 가져 와서 비교 jQuery.position()하여 페이지에 표시되어야하는 위치를 계산할 수 있습니다.


IMHO이 답변은 가장 도움이됩니다. 요소를 본문 바로 아래로 이동하지 않고 (항상 가능한 것은 아님) 위치 고정을 사용하지 않고 아래로 스크롤해도 요소가 항상 표시되도록 JS에만 의지 할 수 있습니다. jQuery.offset({ left: 0 })승리를 위해!
BornToCode
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.