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


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:fixed와 position: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.