HTML5에서 기본 탐색이 <header> 요소의 내부 또는 외부에 있어야합니까?


167

HTML5에서는 <nav>페이지의 마스트 헤드 <header>요소 내부 또는 외부에서 사용할 수 있음을 알고 있습니다 . 보조 및 기본 탐색이 모두있는 웹 사이트의 경우 보조 탐색을 <nav>마스트 헤드 <header>요소 내부의 요소로 포함하고 기본 탐색을 <nav>마스트 헤드 <header>요소 외부의 요소 로 포함하는 것이 일반적 입니다. 그러나 웹 사이트에 보조 탐색이없는 경우 <nav>마스트 헤드 <header>요소 내의 요소에 기본 탐색을 포함하는 것이 일반적 입니다.

이 예를 따르면 내 콘텐츠 구조는 보조 탐색의 포함 또는 제외를 기반으로합니다. 이것은 불필요하고 부 자연스럽게 느껴지는 내용과 스타일 사이의 연결을 소개합니다.

<header>보조 탐색의 포함 또는 제외에 따라 기본 탐색을 마스트 헤드 요소 내부에서 외부로 이동하지 않는 더 좋은 방법이 있습니까?

기본 및 보조 탐색 예

<header>
    <nav>
        <!-- Secondary Navigation inside <header> -->
        <ul>
            <li></li>
        </ul>
    </nav>
    <h1>Website Title</h1>
</header>
<nav>
    <!-- Main Navigation outside <header> -->
    <ul>
        <li></li>
    </ul>
</nav>

OnlineDegrees.org 는 위의 패턴을 따르는 예제 사이트입니다.

여기에 이미지 설명을 입력하십시오

메인 전용 탐색 예

<header>
    <h1>Website Title</h1>
    <nav>
        <!-- Main Navigation inside <header> -->
        <ul>
            <li></li>
        </ul>
    </nav>
</header>

Keyzo.co.uk 는 위 패턴을 따르는 사이트 예입니다.

여기에 이미지 설명을 입력하십시오

HTML5 소개 발췌 — 02-2 월 -11, 오전 7:38에 추가됨

Bruce Lawson과 Remy Sharp의 HTML5 소개 하면 다음과 같은 주제에 대해 말할 수 있습니다.

헤더는 탐색을 포함 할 수도 있습니다. 이는 전체 <header>요소를 템플릿 파일에서 가져올 수있는 템플릿 기반 사이트에서 사이트 전체 탐색에 매우 유용 할 수 있습니다 .

물론,이 필요는 없습니다 것 <nav>에있을 <header>.

사이트 전체 탐색이 사이트 전체 헤더에 속한다고 생각하는지 여부와 스타일링 용이성에 대한 실용적인 고려 사항에 크게 의존합니다.

마지막 문장을 근거로, 발췌 한 장의 저자 인 Bruce Lawson은 "스타일링의 용이성에 대한 실용적인 고려 사항"이 내용과 스타일 사이에 결합을 일으키는 것으로 보인다.


1
그것은 전적으로 귀하의 웹 사이트 디자인에 달려 있습니다 . 트위터 (홈페이지 (로그인하기 전에 표시되는 페이지))에 상단 탐색이없는 경우를 예로 들어 보자. 모든 "메인 메뉴"항목은 페이지 하단에 있습니다. 지금, 나는 당신에 대해 모른다-그러나 나는 그것을 머리글이라고 부르지 않을 것이다…
uSeRnAmEhAhAhAhAhAhAhA

답변:


84

그것은 전적으로 당신에게 달려 있습니다. 그 안에있는 요소가 내부 탐색 요소 만있는 한 (예 : 트위터 나 페이스 북 계정과 같은 외부 사이트에 링크하지 않는 한) 헤더에 넣거나 넣지 않아도됩니다.

탐색이 자주 이루어지는 곳이기 때문에 헤더에 배치되는 경향이 있지만 돌로 설정되어 있지 않습니다.

HTML5 Doctor 에서 자세한 내용을 읽을 수 있습니다 .


5
"내부 요소가 내부 탐색 요소 일 뿐이라면 (예 : 트위터 나 페이스 북 계정과 같은 외부 사이트에 링크하지 않는 한) 문제가 없다"고 왜 말합니까?
Matthew Rankin

7
탐색 요소는 해당 사이트를 탐색하기위한 것이므로 @Matthew. 나는 단지 분명하다는 것이 전부였습니다.
이안 데블린

@MatthewRankin <nav>요소 내부의 앵커를 클릭하면 완전히 다른 탐색 기능을 가진 새 페이지로 전송되는 것이 얼마나 충격적입니까 . 자신과 아무런 관련이없는 외부 사이트에 대한 앵커의 rel="nofollow"경우 링크 속성 도 기억하십시오 .
Anthony Rutledge

오래된 것입니다 ... 하위 도메인에 대한 링크는 어떻습니까? 예를 들어 다른 사이트 (프레젠테이션 사이트, 서비스 사이트, 인증 사이트 등)가있는 웹 사이트는 모두 서로 다른 구조를 갖습니다. 내가하고있는 일은 <nav>요소 내부가 아닌 요소 내부에 해당 링크를 배치 <ul>하여 기본 탐색 목록의 일부가 아닌 방식으로 스타일을 지정하는 것입니다. 모바일 버전을 제외하고는 링크가 같은 목록에 나타나야합니다. 어쨌든 버튼은 다른 곳으로 가고 있다는 것을 알기에 충분히 설명 할 수 있습니다 ...
Chazy Chaz

5

예를 들어 의견을 요구하는지 여부는 불분명합니다. "xxx를하는 것이 일반적"또는 실제 규칙이므로 규칙의 방향에 의지 할 것입니다.

인용 한 예제 는 nav 요소 사양 의 예제를 기반으로합니다 . 사양이 계속 조정되고 규칙이 복잡해지기 때문에 많은 사람들이 해석하기보다는 주어진 것을 수행하는 경향이 있습니다. 동작이 다른 두 개의 별도 예제 가 표시 되므로 읽을 수있는 것은 너무 많습니다. 이러한 사이트 중 하나에도 반대되는 하위 / 내비게이션 상황이 있습니까? 그렇다면 어떻게 처리합니까?

그러나 가장 중요한 것은 사양에 그것을 수행 하는 방법이 무엇 인지 말하는 사양 은 없습니다. HTML5의 목표 중 하나는 시맨틱, 요구 사항 등에 대해 매우 명확하게 비교 하는 것이 었습니다 . 내가 볼 수있는 한, 예제는 서로 독립적이며 레이아웃 요구 사항 등의 자체 컨텍스트 내에서 똑같이 유효합니다.

탐색의 소스 위치를 조건부로 지정하는 것은 어리석은 일입니다 (또 다른 붉은 깃발). 방법을 고르면됩니다.


4

머리글에 탐색 을 넣는 것을 좋아하지 않습니다 . 내 추론은 :

논리

헤더는 문서에 대한 소개 정보가 포함되어 있습니다. 탐색은 다른 문서로 연결되는 메뉴입니다. 내 생각에 이것은 탐색 의 내용 이 문서가 아닌 사이트에 속한다 는 것을 의미합니다 . NAV가 순방향 링크를 보유한 경우는 예외입니다.

접근성

시작이 아닌 소스 코드 끝에 메뉴를 배치하고 싶습니다. CSS를 사용하여 컴퓨터 화면 상단으로 보내거나 텍스트 음성 브라우저와 작은 화면을 위해 마지막에 둡니다. 이렇게하면 스킵 링크가 필요하지 않습니다.


2
건너 뛰기 링크는 메뉴를 건너 뛸 수있는 옵션을 제공하지만 끝에 넣으면 건너 뛰지 않는 옵션 (예 : 탐색)이 제공되지 않으므로 끝까지 올바르게 탐색 할 수있을 때까지 기다려야합니다 , 권리?
Julix

2
@julix의 요점을 계속하려면 탐색을 끝에 배치하지만 처음에 렌더링하면 시력이 좋은 사용자가 문서를 탭하는 것이 어색합니다.
Jason T Featheringham

3

@IanDevlin이 맞습니다. MDN의 규칙은 다음과 같이 말합니다 .

"HTML 헤더 요소" "는 일반적으로 사이트의 로고와 이름 및 가로 메뉴를 포함하는 페이지 헤더를 정의합니다."

"아마도"라는 단어가 핵심입니다. 헤더는 반드시 사이트 헤더 일 필요는 없습니다. 예를 들어, 팝업 모달 또는 문서가 헤더가있는 문서의 다른 모듈 식 부분에 "헤더"를 포함 할 수 있으며 스크린 리더 사용자가이를 이해하는 데 도움이됩니다.

NAV를 암시 적으로 사용한다는 용어는 사이트 탐색이 그룹화 된 모든 곳에서 사용할 수 있지만 미니 탐색 / 중요 사이트 링크에 ​​대한 "바닥 글"섹션에서는 생략되어 있습니다.

실제로 그것은 개인 / 팀 선택에 달려 있습니다. 당신과 당신의 팀이 더 의미적이고 중요하다고 느끼는 것을 결정하고 일관성을 유지하려고 노력하십시오. 내비게이션에 로고와 기본 사이트의 "h1"이 인라인 인 경우 "헤더"에 배치하는 것이 합리적이지만 다른 디자인 선택이있는 경우 사례별로 결정합니다.

가장 중요한 것은 문서를 확인하고 특정 결정을 내린 이유를 생략하거나 포함하도록 선택했는지 확인하십시오.


2

@JoshuaMaddox가 말한 내용을 확장하기 위해 MDN 학습 영역의 "HTML 소개"섹션에서 문서 및 웹 사이트 구조 하위 섹션에 다음과 같이 나와 있습니다 (굵게 / 강조 표시).

헤더

일반적으로 상단에 큰 줄 및 / 또는 로고가있는 큰 줄이 있습니다. 웹 사이트에 대한 주요 공통 정보가 일반적으로 한 웹 페이지에서 다른 웹 페이지로 유지되는 곳입니다.

네비게이션 바

사이트의 주요 섹션으로 연결합니다. 일반적으로 메뉴 버튼, 링크 또는 탭으로 표시됩니다. 헤더와 마찬가지로이 콘텐츠는 일반적으로 한 웹 페이지에서 다른 웹 페이지로 일관성을 유지합니다. 웹 사이트에서 일관되지 않은 탐색을 수행하면 혼란스럽고 좌절 된 사용자로 이어질 수 있습니다. 많은 웹 디자이너는 탐색 모음을 개별 구성 요소가 아니라 헤더의 일부로 간주하지만 필수 사항은 아닙니다. 실제로 일부는 스크린 리더가 두 기능을 분리하면 더 잘 읽을 수 있기 때문에 두 가지를 별도로 사용하는 것이 접근성에 더 좋다고 주장합니다 .


1
<nav>페이지에서 얕게 구성된 것이 더 <nav>깊게 중첩 된 것보다 액세스하기 쉽다는 것에 동의하고 싶습니다 . 그러나 그 판단은 어떤 근거로 이루어 집니까? 화면 판독기에 집에가는 <nav><a>어쨌든, 태그입니다. 중요한 요소는 HTML의 구조적 순서입니다. 다음으로 응답 성. 1 차 <nav>(또는 어떤 <nav>)를 직접 <body>조작하는 자식으로 만드는 것이 더 쉬워 집니까? 유효한 HTML입니까? A가 <nav>되는 내용을 절편 하여, 그리고 것은 내에서 살 수있는 자연 적합 절편 루트 처럼 <body>.
Anthony Rutledge을
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.