답변:
visibility속성은 요소를 표시할지 여부를 브라우저에 지시합니다. 표시 ( visible-볼 수 있음) 또는 hidden표시되지 않음 ( -볼 수 없음)입니다.
display재산권 브라우저에 지시 하는 방법을 그리는 전혀 경우, 요소를 보여 - 그것은가 표시되어야하는지 여부 inline소자 또는 (즉 그것이 텍스트와 다른 인라인 요소 흐른다) block- 레벨 요소 (즉, 그 높이 및 폭 특성을 갖는다 당신은)는 등을 뜰입니다 설정할 수 있습니다, 또는은 inline-block(는 블록 상자와 같은 역할을하지만, 인라인 대신에 놓여) 및 몇몇 다른 사람 (즉 list-item, table, table-row, table-cell, flex, 등).
당신은에 요소를 설정하면 display: block있지만 또한 설정 visibility: hidden당신은 단지 그것을 볼 수 없습니다 제외하고, 블록 요소로 여전히 그것을 취급 브라우저를. 보이지 않는 상자 위에 빨간색 상자를 쌓는 것과 비슷합니다. 빨간색 상자는 실제로 보이지 않는 실제 상자 위에있을 때 공중에 떠있는 것처럼 보입니다.
즉, display그렇지 않은 none요소가 표시 여부에 관계없이 페이지의 요소 흐름에 여전히 영향을 미칩니다. 요소를 둘러싼 상자 display: none는 해당 요소가 존재하지 않는 것처럼 작동합니다 (DOM에 남아 있음).
display: none;해당 요소가 DOM에서 제거됩니까? 아니면 완전히 혼란 스럽습니까?
가시성 : 숨김;
디스플레이 : 없음;
추가 참고 사항 :
디스플레이 : 없음; DOM 요소의 시각적 스타일 / 물리적 공간을 DOM에서 제거하는 반면, visible : hidden; 요소를 제거하지 않고 단순히 숨 깁니다. 따라서 DOM에서 300px의 수직 공간을 차지하는 div는 visible : hidden으로 설정 될 때 여전히 300px의 수직 너비를 차지합니다. 그러나 display : none으로 설정되면; 그것은 시각적 스타일이고 그것이 차지하는 공간은 숨겨지고 그 공간은 더 나은 단어의 부족으로 "해방"된다.
[편집]-내가 위의 글을 썼던 것은 얼마 전이고, 내가 충분히 지식이 없거나 나쁜 하루를 보냈는지 모르겠지만 현실은 요소가 DOM 계층에서 절대 제거되지 않는다는 것입니다. 모든 블록 레벨 디스플레이 '스타일'은 display : none을 사용할 때 완전히 '숨겨져있는'반면, visible : hidden; 요소 자체는 숨겨져 있지만 여전히 DOM에서 시각적 공간을 차지합니다. 이게 문제가 해결되기를 바랍니다.
display: none할 되지 는 DOM에서 요소를 제거합니다. 요소는 여전히 존재하며 표시 되지 않습니다 .