숨겨진 속성 (HTML5)과 display : none 규칙 (CSS)의 차이점은 무엇입니까?


111

HTML5에는 hidden콘텐츠를 숨기는 데 사용할 수 있는 새로운 전역 속성 이 있습니다.

<article hidden>
   <h2>Article #1</h2>
   <p>Lorem ipsum ...</p>
</article>

CSS에는 display:none콘텐츠를 숨기는 데 사용할 수도있는 규칙이 있습니다.

article { display:none; }

시각적으로 동일합니다. 의미 상 차이점은 무엇입니까? 계산적으로?

둘 중 하나를 사용해야하는 경우 어떤 지침을 고려해야합니까?

TIA.

편집 : @newtron의 답변 (아래)을 기반으로 더 많은 검색을 수행했습니다. 이 hidden속성은 작년에 열띤 논쟁을 벌였으며 (분명히) HTML5 사양에 거의 포함되지 않았습니다. 일부는 그것이 중복되고 목적이 없다고 주장했습니다. 제가 알 수있는 바에 따르면 최종 평가는 다음과 같습니다. 웹 브라우저만을 대상으로하는 경우 차이가 없습니다. (한 페이지에서는 웹 브라우저 display:none가 숨겨진 속성을 구현하는 데 사용되었다고 주장하기도했습니다 .) 그러나 접근성을 고려하고 있다면 (예 : 화면 판독기가 내 콘텐츠를 읽을 것으로 예상 할 수 있음) 차이가 있습니다. CSS 규칙 display:none은 웹 브라우저에서 내 콘텐츠를 숨길 수 있지만 해당하는 aria 규칙 (예 :aria-hidden="false" 했습니다.) 따라서 나는 이제 @newtron의 대답이 정확하다는 데 동의합니다. 도움을 주신 @newtron에게 감사드립니다.


5
hidden속성이 존재 하는지조차 몰랐지만 구조 / 표현 분리를 위반하는 것처럼 보이기 때문에 확실히 좋은 질문입니다.
Waldheinz 2011

아직이 속성에 대한 HTML5 사양을 읽지 않은 사람들을 위해 : w3.org/TR/html5/editing.html#the-hidden-attribute
james.garriss


이미 읽어보세요, @Yigit. 또한 1 년이 넘었습니다. 그리고 숨겨진 것은 여전히 ​​사양에 있습니다. 그것은 제안이 어떤 전환도 얻지 못했다는 것을 나타냅니다.
james.garriss

편집 해 주셔서 감사합니다. 명확하지 않아서 죄송합니다! 위에 추가 한 정보는 훌륭합니다. +1
newtron 2011-07-15

답변:


64

주요 차이점은 hidden프레젠테이션에 관계없이 요소가 항상 숨겨져 있다는 것입니다 .

hidden 속성은 다른 프레젠테이션에 합법적으로 표시 될 수있는 콘텐츠를 숨기는 데 사용되어서는 안됩니다. 예를 들어 탭이있는 대화 상자에서 패널을 숨기는 데 숨김을 사용하는 것은 올바르지 않습니다. 탭 인터페이스는 일종의 오버플로 표시 일뿐입니다. 스크롤바를 사용하여 하나의 큰 페이지에 모든 양식 컨트롤을 똑같이 표시 할 수도 있습니다. 이 속성을 사용하여 한 프레젠테이션에서만 콘텐츠를 숨기는 것도 마찬가지로 올바르지 않습니다. 숨겨진 것으로 표시된 항목은 화면 판독기를 포함한 모든 프레젠테이션에서 숨겨집니다.

http://dev.w3.org/html5/spec/Overview.html#the-hidden-attribute

CSS는 다양한 미디어 / 프레젠테이션 유형을 대상으로 할 수 있으므로 display: none주어진 프레젠테이션에 따라 달라집니다. 예를 들어 일부 요소 display: none는 데스크톱 브라우저에서 볼 때있을 수 있지만 모바일 브라우저에서는 볼 수 없습니다. 또는 시각적으로 숨겨 지지만 화면 판독기에서는 계속 사용할 수 있습니다.


1
그렇다면 숨겨진 트럼프가 표시된다는 말입니까? 그렇다면 단순히 프레젠테이션을 무시하는 것이 목적이라는 것입니다. 흠.
james.garriss

1
내 추측으로는 숨겨진 트럼프가 표시됩니다. 하지만 실제로 실험 해본 적이 없습니다. CSS가 그것을 무시할 수 있다면 오히려 무의미 해 보일 것입니다.
newtron

2
의미론이 이깁니다. 존재하지 않아야하는 경우 문서 수준의 문서 흐름에서 제거합니다. 문서 흐름의 일부 여야하지만 확실한 경우 시각적 경험의 일부가되고 싶지 않은 경우 코스메틱 레이어에서 처리합니다. 일부 에이전트는 CSS를 구문 분석하려고 시도하고 무언가가 보이지 않을 것이라고 판단하면 전혀 출력하지 않습니다. 나는 이것이 비정상적인 행동이라고 생각하지만 알면 도움이 될 수 있습니다.

6
developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/… 에 따르면 여기에있는 일부 댓글 (@ james-garris, @newtron)과 관련하여 디스플레이가 실제로 숨겨진 것보다 우선합니다. 그림으로 이동 :-)
Jurko Gospodnetić

2
숨겨진 속성에 대해 MDN 페이지에서 발견 한 한 가지 중요한 차이점은 "숨겨진 속성이있는 요소의 CSS 표시 속성 값을 변경하면 동작을 재정의합니다. 예를 들어 요소 스타일 표시 : 플렉스는 숨겨진 속성이 있더라도 표시됩니다."
mohsinulhaq 19.07.16
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.