3 가지 div
요소가 있습니다.
1 일 div
이 더 크고 (포장)position:relative;
2는 div
1 차 절대 위치 div
의 상대 위치 (및 1에 포함된다 div
)
3rd div
는 2nd에 포함되며 div
절대 위치도 있습니다.
<div id="1st">
<div id="2nd">
<div id="3rd"></div>
</div>
</div>
왜 3 번째 div
위치가 2 번째 div
(1 번째에 대한 절대 위치이기도 함)에 절대 div
적이고 div
상대 위치가 있는 1 번째 위치에 있지 않은 이유는 무엇입니까?
3rd div
는 절대 위치 2nd에 대한 절대 위치 이기 때문 div
입니다.
답변
왜냐하면 position: absolute
아이들의 상대적 위치를 재설정 하기 때문 position: relative
입니다.
이 문제를 피할 수있는 방법이 없습니다. 세 번째 항목 div
이 첫 번째 항목 에 대해 절대적으로 위치하도록하려면 첫 번째 항목의 하위 항목으로 만들어야합니다.
답변
모두 position:relative
와 position:absolute
위치 ascestors 등의 요소를 포함 설정합니다.
div 1을 기준으로 div 3을 배치해야하는 경우 div 1의 직계 자식으로 만듭니다.
참고 position: relative
요소가 상대 위치 수단 자연스러운 위치 position: absolute
수단은 소자에 대해 위치되는 제 position:relative
또는 position:absolute
조상 .
답변
위치 정적 : 정적 위치는 위치가 전혀 지정되지 않은 경우 HTML 파일의 정상적인 흐름에서 요소가 나타나는 기본 방법입니다.
중요 : top
, right
, bottom
및 left
속성은 NO EFFECT ON 정적이 ELEMENT의 방향이.
상대적 위치 : 상대 값으로 요소를 배치하면 HTML 파일의 정상적인 흐름에서 요소 (및 요소가 차지하는 공간)가 유지됩니다.
그런 다음 속성을 사용하여 일부 금액으로 요소를 이동할 수 있습니다 left
, right
, top
와 bottom
. 그러나 이로 인해 요소가 페이지에있는 다른 요소와 겹칠 수 있습니다. 이는 원하는 효과 일 수도 있고 아닐 수도 있습니다.
상대적으로 배치 된 요소는 해당 지점에서 이동할 수 있지만 차지한 공간은 그대로 유지됩니다.
절대 위치 : 요소에 절대 위치 값을 적용하면 일반 흐름에서 제거됩니다. 절대 위치 요소를 이동할 때 참조 점은 가장 가까운 위치 지정 컨텍스트라고도하는 정적 위치가 아닌 위치가 선언 된 가장 가까운 포함 요소의 상단 / 왼쪽입니다. 따라서 static 이외의 위치를 가진 포함 요소가 없으면 body 요소의 왼쪽 상단 모서리에서 배치됩니다.
귀하의 경우 3rd의 가장 가까운 컨테이너는 2nd입니다.
답변
또 다른 명확한 대답.
현재 시나리오는 다음과 같습니다.
#my-parent {position: absolute}
#my-parent .my_child {position: absolute}
그리고 당신은 그것으로 어려움을 겪고 있습니다.
HTML을 변경할 수 있으면 다음과 같이하십시오.
#my-parent {position: absolute}
#my-parent .my-wrapper {position: relative} /* Since you've added the wrapper in HTML */
#my-parent .my-wrapper .my-child {position: absolute} /* Now you can play with it */
답변
3 이유 div
요소가 절대적으로 두번째에 위치 div
하는 CSS 사양의 설명에 있기 때문에 요소가 여기 은 “부모”요소 (더 나은 말했다 : 용기 블럭) 때문에, 인의 절대 위치 요소 아닌 , 반드시 즉각적인 부모 요소 만 오히려 바로 배치 된 요소 즉 static
, 예를 들어 위치가 다른 요소로 설정된 요소position: relative/absolute/fixed/sticky;
따라서 코드에서 가능할 때마다 세 번째 div
요소가 첫 div
번째 div
요소와 관련하여 절대적으로 배치되도록하려면 두 번째 요소를 position: static;
기본값 으로 만들어야합니다 (또는 단순히 position: ...
두 번째 div
요소 의 규칙 집합에서 선언을 제거하면됩니다 ). .
위의 첫번째 것 함유 블록 절대적 위치하는 제 3의 2 무시 이 위치 결정 목적으로한다.div
div
div
도움이 되었기를 바랍니다.
답변
누군가가 여전히 이것에 대한 답을 찾고 있다면.
clear: both;
첫 번째 절대 위치 div에 스타일을 추가 하여 자식을 재설정하고 자체 absolute
위치 를 사용할 수 있도록함으로써이 결과를 얻을 수있었습니다 .