2017-11-30 3 views
2

부모가 012.인 부모가 overflow:auto 인 경우 position:absolute 요소가 문서 흐름에 영향을주는 이유는 무엇입니까? (아래의 예)오버 플로우 자동 부모 인 경우 절대 위치가 문서 외부가 아님

이 예상되는 행동에 반하는 것으로 보인다 :

요소가 보통 문서 플로우로부터 제거되고; 공백이 MDN "페이지 레이아웃의 요소에 대해 작성되지 않습니다.

div.a 항상에만 키가 100 픽셀, 그리고 그것은 텍스트의 한 라인을 가지고 있으며,이 아이 (div.b) 이후, 수직 스크롤이 필요해서는 안 가지고 0이 높이 실제로 경우, 우리는 div.c 볼 수있다 (S 높이 '일반 문서 플로우 외부의 포지셔닝. 그러나

, overflow:auto는 (아래 예와 같이) div.a인가되면, div.adiv.c 수용' 정상적인 문서 플로우에 있지 않을 것으로 예상되는 위치 절대 요소상의 높이)를 스크롤 b ar. 왜? div.b의 높이가 여전히 0이고 div.c은 투명도를 통해 녹색 배경이 표시되지 않습니다.

.a { 
 
    height: 100px; 
 
    overflow: auto; /* TOGGLE THIS LINE */ 
 
    background-color: pink; 
 
} 
 

 
.b { 
 
    position: relative; 
 
    background-color: green; 
 
} 
 

 
.c { 
 
    position: absolute; 
 
    background-color: rgba(255, 255, 255, .5); 
 
    height: 500px; 
 
    top: 0; 
 
}
<div class="a"> 
 
    I should only be 100px tall 
 
    <div class="b"> 
 
    <div class="c"> 
 
     I am position absolute with a height of 500px 
 
    </div> 
 
    </div> 
 
</div>

View on JSFiddle

답변

2

절대-위치 요소 문서 흐름에서 철수 할 것입니다하지만이없는 한 사용자가 스크롤을 제공하여 요소에 액세스하는 브라우저는 항상 가능하게 할 래퍼에 적용된 "오버플로 : 숨김"-s 적용 :

비트를 지우려면 다음과 같이하십시오. 오버플로 된 내용조차도 찾아보기를 통해 문서의 일부로 간주됩니다 r을 선택하면 뷰의 여백이 확장되어 뷰의 모든 요소가 포함됩니다. overflow의 기본값은 visible으로 설정됩니다.

관련 문제