페이지에서 공간을 차지하지 않고 요소를 숨기는 방법은 무엇입니까?


228

visibility:hidden특정 요소를 숨기는 데 사용 하고 있지만 숨겨진 동안 여전히 페이지의 공간을 차지합니다.

DOM에 전혀없는 것처럼 보이지만 (실제로 DOM에서 제거하지 않고) 시각적으로 완전히 사라지게하려면 어떻게해야합니까?


이 질문은 매우 죽었지 만 최근에 다른 사람들이 겪을 수있는 상황에서 자신을 발견했기 때문에 의견을 추가하고 있습니다. 내가 요소를 숨길 필요가 그것 유지해야offsetTop 하고, display:none을 설정합니다 offsetTop여기에 0으로 내 솔루션하여 사용하는 것이 었습니다 visibility: hidden나는 다시 표시 요소를 만드는 데 필요한되면 다음 0으로 폭과 높이를 설정, 나는 세 가지 속성을 사용하여 제거 자바 스크립트. 약간의 해키 솔루션이지만 거의 모든 사용 사례에서 잘 작동합니다.
— rappatic

답변:


302

display:none숨기고 display:block표시 하도록 설정하십시오 .


돔 맨에서 요소를 제거 할 수 없습니다. 이 옵션을 사용하여. 질문을 읽고
— Pranay Rana

26
해야 모든 항목 display: block, 일부는로 설정해야합니다 display: inline(예 : <span>나 <a>또는 <img>DOM 요소).
— Mauro

2
@ pranay는 DOM에서 제거하지 않도록 숨기라고 질문합니다.
— Mauro

6
@ pranay : 질문은 잘 표현되지 않았지만 Huusom은 사용자가 겪고있는 문제를 해결하고 있습니다.
— Claudio Redi

1
개선 :라는 CSS 클래스 생성 hidden과를 display: none. 클래스를 요소에 추가하여 숨기고 표시를 제거하십시오. 제거하면 display특성이 요소 기본값으로 복원됩니다.
— Alejandro C De Baca

44

대신 스타일을 사용하십시오

<div style="display:none;"></div>

1
불행히도 이것은 나를 위해 작동하지 않습니다-display : none을 사용하면 여전히 빈 공간이 남습니다.
— mbuc91

15

display:none요소를 제거하는 것만으로도 좋은 옵션 을 사용할 수 있지만 화면 판독기에서도 제거됩니다 . 그것이 SEO에 영향을 미치는 경우에도 토론이 있습니다. A List Apart에 관한 주제 에 관한 좋은 기사가 있습니다.

당신이 정말 원하는 경우 숨기기를 하고 제거 할 요소를보다 효율적으로 사용 :

div {
  position: absolute; 
  left: -999em;
}

이와 같이 화면 판독기에서도 읽을 수 있습니다.

이 방법의 유일한 단점은이 DIV가 실제로 렌더링되어 특히 휴대 전화 에서 성능에 영향을 줄 수 있다는 것 입니다.


2
대부분의 경우 실행할 수있는 절대 위치를 선택 visibility: hidden;하면 다른 절대 요소가 있다고 가정하면 공간과 충돌하지 않고 단지 충돌 z-index합니다. 내가 갈 요소를 숨기기 위해서visibility
— Dejan.S

10

visibility: hidden;use 대신 사용하십시오 display: none;. 첫 번째 옵션은 숨겨 지지만 여전히 공간을 차지하고 두 번째 옵션은 숨기고 공간을 차지 하지 않습니다 .


6

이 질문에 대한 답변은 display : none 및 display : block을 사용한다고 말하지만 CSS 전환을 사용하여 가시성 속성을 사용하여 내용을 표시하거나 숨기려는 사람에게는 도움이되지 않습니다.

디스플레이를 사용하면 CSS 전환이 죽기 때문에 이것은 또한 나를 미치게했습니다.

한 가지 해결책은 가시성을 사용하는 클래스에 이것을 추가하는 것입니다.

overflow:hidden

이것이 작동하려면 레이아웃에 달려 있지만 비어있는 내용은 div 내에 있어야합니다.


3
가시성 : 숨김 및 가시성 : 보이게 재생하고 요소 위치 : 고정을 설정하면 문제가 발생하지 않습니다. 마치 마술과 같습니다
— John Balvin Arias

6

디스플레이 : none is solution, 그것은 공간이있는 요소를 완전히 숨 깁니다.

스토리에 대한 display:none과visibility: hidden

visibility:hidden 태그가 보이지 않지만 페이지에 태그가 할당되었음을 의미합니다.

display:none공간이있는 요소를 완전히 숨 깁니다. (DOM을 통해 여전히 상호 작용할 수 있지만)


3

display:none숨기고 보이도록 설정 display:block합니다.


1
그는 "DOM에없는 것처럼"시각적으로 제거하는 방법에 대해 묻습니다. 실제 DOM에서 그것들을 제거하는 것이 아닙니다.
— Arve Systad

질문은 DOM에서 제거하지 말고 사라지게합니다. as though they are not in the DOM at all (but without actually removing them from the DOM)
— Mauro

@pranay : visibility: hidden컨텐츠 표시 만 중지하고 여전히 수직 / 수평 공간을 사용합니다. display : none은 요소의 수직 / 수평 공간을 제거합니다.
— Mauro

아닙니다. 가시성 : 숨겨진; 요소를 보이지 않게하지만 여전히 공간을 차지합니다. 디스플레이 : 없음; 문서가없는 것처럼 동작합니다.
— Olly Hodgson

1
이 답변을 삭제하십시오.
— BalusC

3

토글 display은 부드러운 CSS 전환을 허용하지 않습니다. 대신 및를 토글 visibility하십시오 max-height.

visibility: hidden;
max-height: 0;

이것은 애니메이션 작업시 유용합니다. 우리는 같은 것을 사용하여 가시 영역 밖에 요소를 숨기고 있기 때문에 transform: translateX(-100%). 우리는 원하지 않는다display: none
— zhuhang.jasper

2

다음은 디스플레이 후에 다시 가져 오는 다른 테이크입니다. display : block / inline 등을 사용하지 마십시오. 대신 (자바 스크립트를 사용하는 경우) CSS 속성 표시를 ''(즉, 공백)으로 설정하십시오.


1
$('#abc').css({"display":"none"});

이것은 내용을 숨기고 빈 공간을 남기지 않습니다.


1

내 지식 위에는 네 가지 방법으로 가능합니다

  1. HTML<button style="display:none;"></button>
  2. CSS #buttonId{ display:none; }
  3. jQuery $('#buttonId').prop('display':'none');& $("#buttonId").css('opacity', 0);

1

디스플레이 : 없음 은 페이지의 공백을 피하는 가장 좋은 방법입니다.


2
다른 답변의 반복 인 것 같습니다.
— Pang

0

!important기존 CSS 스타일을 재정의해야하는 경우에 사용하십시오 .

display: none !important;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.