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


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:nonevisibility: 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.