웹 프론트엔드 CSS 튜토리얼 CSS에서 display:none과 visible:hidden의 차이점 분석

CSS에서 display:none과 visible:hidden의 차이점 분석

Sep 30, 2018 pm 02:33 PM
css css3

이 글은 CSS에서 display:none과 visible:hidden의 차이점에 대한 분석을 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

인터뷰에서 "display:none과 visible:hidden의 차이점을 알려주세요"라는 질문을 아직도 기억하시나요? 해당 디스플레이에 응답한 후 면접관이 웃을까요? 없음은 원래 위치를 차지하지 않으며 가시성은 숨김이 원래 위치를 유지합니까? 실제로는 그 이상입니다! 이번 글에서는 그들의 고충과 억울함을 함께 파헤쳐 다음 인터뷰에서 더 좋은 답변을 드릴 수 있도록 하겠습니다!

자세한 표시:없음

요소가 표시:없음으로 설정되면 요소가 인터페이스에 표시되지 않고 요소가 레이아웃 공간을 차지하지 않는다는 사실을 모두 알고 있습니다. JavaScript를 통해 요소를 작동합니다. 그런데 왜 그럴까요?
여기에는 브라우저의 렌더링 원리가 포함됩니다. 브라우저는 HTML 태그를 구문 분석하여 DOM을 생성합니다. 트리, CSS를 구문 분석하여 CSSOM을 생성한 다음 DOM 트리와 CSSOM을 합성하여 렌더 트리, 렌더의 요소를 생성합니다. 트리는 0개 이상의 상자에 해당하며, 상자 모델의 정보를 기반으로 브라우저 레이아웃과 인터페이스를 렌더링합니다. display:none으로 설정된 요소는 렌더 트리에서 해당 상자 모델을 생성하지 않으므로 후속 레이아웃 및 렌더링 작업은 자연스럽게 DOM 작업과 관련이 없습니다.
그러나 위의 지식 외에도 주의해야 할 다음 8가지 사항이 있습니다.
1. 기본 기본 표시가 있는 요소: 없음
실제로 기본 브라우저에는 표시가 있는 요소가 많이 있습니다. 링크, 스크립트, 스타일, 대화 상자, 입력 [유형=숨김] 등과 같은 요소.

2. 숨겨진 부울 속성이 HTML5에 추가되어 개발자가 요소 숨기기를 사용자 정의할 수 있습니다.

/* 兼容原生不支持hidden属性的浏览器  */
[hidden]{
  display: none;
}
<span>Hide and Seek: You can't see me!</span>
로그인 후 복사

3. 표시:없음이고 하위 요소도 탈출하기 어렵습니다

.hidden{
  display: none;
}
.visible{
  display: block;
}

*** START ***
<div>
  I'm parent!
  <div> I'm son! </div>
</div>
*** END ***
로그인 후 복사

브라우저에서 직접

*** START ***
*** END ***
로그인 후 복사

4로 표시합니다. 포커스를 얻을 수 없습니다
상자가 없는데 어떻게 포커스를 얻을 수 있습니까?^_^ 탭키는 안돼요

<!-- 真心不会获得焦点 -->
<input>
<div>hidden</div>
로그인 후 복사

5. 어떤 반응도 할 수 없습니다. 캡처, 대상 타격, 버블링 스테이지 등의 이벤트는 허용되지 않습니다.
display:none 요소가 인터페이스에 전혀 렌더링되지 않기 때문입니다. , 1픽셀도 차지하지 않으므로 당연히 마우스 클릭으로 타격을 받을 수 없으며, 요소는 포커스를 얻을 수 없으므로 키보드 이벤트의 대상이 될 수 없으며 상위 요소의 표시가 없음인 경우에는 표시됩니다. 하위 요소의 요소는 없음이어야 합니다. 따라서 요소는 이벤트 캡처 또는 버블링 단계의 경로에 있을 수 없습니다. 따라서 display:none이 있는 요소는 이벤트에 응답할 수 없습니다.

6. 양식 제출 데이터를 지연하지 마세요
display:none 요소를 볼 수 없더라도 양식이 제출되면 숨겨진 입력 요소의 값이 계속 제출됩니다.

로그인 후 복사
     

7. CSS의 카운터는 display:none

.start{
  counter-reset: son 0;
}
.son{
  counter-increment: son 1;
}
.son::before{
  content: counter(son) ". ";
}

<div>
  <div>son1</div>
  <div>son2</div>
  <div>son3</div>
</div>
로그인 후 복사
의 요소를 무시합니다. 결과는 다음과 같습니다.

1. son1
2. son3
로그인 후 복사
8.전환은 디스플레이 변경에 관심이 없습니다


9. 디스플레이가 변경되면 리플로우가 시작됩니다.

디스플레이 종료: 그 외에는 요소가 BFC에 있음을 의미하는 display:block과 요소가 IFC에 있음을 의미하는 display:inline을 살펴봅니다. 즉, 요소가 있는 레이아웃 컨텍스트를 설정하는 데 사용됩니다. 표시값이 수정되었다면 해당 요소에 적용된 레이아웃 방식이 변경되었다는 의미이므로 리플로우가 실행되지 않으면 이상할 것입니다.

깊은 가시성

visibility에는 두 가지 기능이 있습니다.

테이블 행과 열을 숨기는 데 사용됩니다.

레이아웃을 트리거하지 않고 요소를 숨기는 데 사용됩니다.

4개의 유효한 값

1.visible

말할 것도 없습니다. 예, 표시됩니다. 인터페이스.
2.hidden
요소를 화면에 보이지 않게 하지만 요소의 원래 위치는 유지합니다.
3.collapse
테이블 하위 요소(예: tr, tbody, col, colgroup)에 사용하면 display:none과 효과가 동일합니다. 다른 요소에 사용하면 visible:hidden과 효과가 동일합니다. 그러나 각 브라우저마다 구현 효과가 다르기 때문에 일반적으로 이 값은 사용되지 않습니다.
4.inherit
상위 요소의 가시성 값을 상속합니다.

display:none과 visible:hidden을 명확하게 비교하세요

위에서는 display:none에 대해 주의할 점 8가지를 나열했으므로 하나씩 비교하고 가시성을 나열하면 됩니다.

1. 상위 요소는 가시성:숨겨져 있고 하위 요소는 가시성:visible로 설정될 수 있으며 적용됩니다

div{
  border: solid 2px blue;
}
.visible{
  visibility: visible;
}
.hidden{
  visibility: hidden;
}
<div>
  I'm Parent.
  <div>
    I'm Son.
  </div>
</div>
로그인 후 복사
결과:

CSS에서 display:none과 visible:hidden의 차이점 분석

2. 3. 위험에 노출될 수 있습니다. 버블 단계에서 이벤트에 응답합니다.

visible:hidden으로 설정된 요소의 하위 요소는 visible:visible이 될 수 있으므로 숨겨진 요소는 이벤트 버블링 경로에 위치할 수 있습니다. 다음 코드에서는 마우스를 .visible로 이동하면 hover 이벤트에 대한 응답으로 .hidden이 표시됩니다.

div{
  border: solid 2px blue;
}
.visible{
  visibility: visible;
}
.hidden{
  visibility: hidden;
}
.hidden:hover{
  visibility: visible;
}
<div class="hidden">
  I&#39;m Parent.
  <div class="visible">
    I&#39;m Son.
  </div>
</div>
로그인 후 복사

4. 양식 제출을 방해하지 않습니다.

5. CSS의 카운터는 무시되지 않습니다.

6. 가시성 변경에는 전환이 적용되지 않습니다. 리플로우 트리거

visible이 숨겨짐으로 설정되면 요소의 레이아웃 관련 속성이 변경되지 않으므로 리플로우가 트리거되지 않습니다. 브라우저가 다른 렌더링 변경 사항과 함께 정기적으로 인터페이스를 다시 그릴 때까지 조용히 기다립니다. .

위 내용은 CSS에서 display:none과 visible:hidden의 차이점 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Vue에서 부트 스트랩을 사용하는 방법 Vue에서 부트 스트랩을 사용하는 방법 Apr 07, 2025 pm 11:33 PM

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML, CSS 및 JavaScript 이해 : 초보자 안내서 HTML, CSS 및 JavaScript 이해 : 초보자 안내서 Apr 12, 2025 am 12:02 AM

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

HTML, CSS 및 JavaScript의 역할 : 핵심 책임 HTML, CSS 및 JavaScript의 역할 : 핵심 책임 Apr 08, 2025 pm 07:05 PM

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

부트 스트랩에 사진을 삽입하는 방법 부트 스트랩에 사진을 삽입하는 방법 Apr 07, 2025 pm 03:30 PM

Bootstrap에 이미지를 삽입하는 방법에는 여러 가지가 있습니다. HTML IMG 태그를 사용하여 이미지를 직접 삽입하십시오. 부트 스트랩 이미지 구성 요소를 사용하면 반응 형 이미지와 더 많은 스타일을 제공 할 수 있습니다. 이미지 크기를 설정하고 IMG-Fluid 클래스를 사용하여 이미지를 적응할 수 있도록하십시오. IMG 통과 클래스를 사용하여 테두리를 설정하십시오. 둥근 모서리를 설정하고 IMG 라운드 클래스를 사용하십시오. 그림자를 설정하고 그림자 클래스를 사용하십시오. CSS 스타일을 사용하여 이미지를 조정하고 배치하십시오. 배경 이미지를 사용하여 배경 이미지 CSS 속성을 사용하십시오.

부트 스트랩에 분할 라인을 작성하는 방법 부트 스트랩에 분할 라인을 작성하는 방법 Apr 07, 2025 pm 03:12 PM

부트 스트랩 분할 라인을 만드는 두 가지 방법이 있습니다 : 태그를 사용하여 수평 분할 라인이 생성됩니다. CSS 테두리 속성을 사용하여 사용자 정의 스타일 분할 라인을 만듭니다.

부트 스트랩을위한 프레임 워크를 설정하는 방법 부트 스트랩을위한 프레임 워크를 설정하는 방법 Apr 07, 2025 pm 03:27 PM

부트 스트랩 프레임 워크를 설정하려면 다음 단계를 따라야합니다. 1. CDN을 통해 부트 스트랩 파일 참조; 2. 자신의 서버에서 파일을 다운로드하여 호스팅하십시오. 3. HTML에 부트 스트랩 파일을 포함; 4. 필요에 따라 Sass/Less를 컴파일하십시오. 5. 사용자 정의 파일을 가져옵니다 (선택 사항). 설정이 완료되면 Bootstrap의 그리드 시스템, 구성 요소 및 스타일을 사용하여 반응 형 웹 사이트 및 응용 프로그램을 만들 수 있습니다.

부트 스트랩 크기를 조정하는 방법 부트 스트랩 크기를 조정하는 방법 Apr 07, 2025 pm 03:18 PM

부트 스트랩에서 요소의 크기를 조정하려면 다음을 포함하여 차원 클래스를 사용할 수 있습니다.

부트 스트랩 버튼을 사용하는 방법 부트 스트랩 버튼을 사용하는 방법 Apr 07, 2025 pm 03:09 PM

부트 스트랩 버튼을 사용하는 방법? 부트 스트랩 CSS를 소개하여 버튼 요소를 만들고 부트 스트랩 버튼 클래스를 추가하여 버튼 텍스트를 추가하십시오.

See all articles