내 <nav> 안에 <ul>과 <li>를 사용해야합니까?


114

제목은 그것을 거의 설명합니다.

이제 전용 <nav>태그 가 생겼으니

이것은 :

<nav>
  <ul>
    <li><a href="#foo">foo</a></li>
    <li><a href="#bar">bar</a></li>
    <li><a href="#baz">baz</a></li>
  </ul>
</nav>

다음보다 나은 것이 있습니까?

<nav>
  <a href="#foo">foo</a>
  <a href="#bar">bar</a>
  <a href="#baz">baz</a>
</nav>

내 말은, CSS 포지셔닝 / 패딩을 위해 추가 DOM 레벨이 필요하지 않다고 가정 할 때 선호하는 방법은 무엇이며 그 이유는 무엇입니까?


좋은 질문입니다 ... HTML 4에 맞지 않는 태그에 대해 이전 모범 사례가 적용됩니까?
Guffa 2011

답변:


63

nav 요소와 목록은 다른 의미 정보를 제공합니다.

  • nav 요소는 주요 탐색 블록을 다루고 있음을 전달합니다.

  • 목록은이 탐색 블록 내의 링크가 항목 목록을 형성 함을 전달합니다.

에서 http://w3c.github.io/html/sections.html#the-nav-element 당신은 탐색 요소는 산문을 포함 할 수 있음을 알 수있다.

예, nav 요소 안에 목록이 있으면 의미가 추가됩니다.


고마워요, 이것이 제가 필요한 것입니다! 또한 아래의 "3 개 항목 목록"을 발표하는 스크린 리더에 대한 robertc의 의견은 매우 유용했습니다.
kikito 2011

7
UL 태그가 아무것도 도움이되지 않는 것 같습니다 : css-tricks.com/navigation-in-lists-to-be-or-not-to-be
psycho brm

2
링크가 나를 위해 작동하는 것 같습니다. 목록을 선언하고 무승부를 표시하지 않는 후속 작업을 읽어보십시오. css-tricks.com/wrapup-of-navigation-in-lists
RobW

제 생각에, a <nav>without a <ul><li>는 더 역동적 인 어린이 메뉴를 가질 것 같습니다. 유형과 위치가 다른 여러 메뉴 목록이 <nav>? I겠습니까 그룹으로 그 메뉴 목록 <ul><li>에서 <nav>. 따라서 메뉴에 일반 메뉴가 있으면 <ul><li>.
wonsuc 2019

3

이 시점에서 나는 <ul><li>모든 브라우저가 아직 HTML5 태그를 지원하지 않기 때문에 요소를 유지합니다 .

예를 들어 <header>Chrome과 FF가 매력처럼 작동했지만 Opera는 지루하다는 태그를 사용하여 문제가 발생 했습니다.

모든 브라우저가 HTML을 완벽하게 지원할 때까지 필자는 그대로두고 싶지만 이전 버전과의 호환성을 위해 이전 브라우저에 의존합니다.


3
HTML 5 Shim javascript 파일 ( remysharp.com/2009/01/07/html5-enabling-script )을 사용하여 Opera 및 IE와 같은 브라우저와의 가능한 하위 호환성 오류를 완화하십시오.
acconrad

하지만 사이트가 눈에 거슬리지 않는 스크립팅에 적합하지 않습니다. :)
Demian Brecht 2011

1
당신은 IE8은 그래서 ... 2,016까지처럼 ... 시장을 종료 할 때까지 같은 의미:)
SIME VIDAS

@ Šime-정확하게 :) 그리고 Javascript를 끄는 것은 더 이상 브라우저에서 옵션이 아닙니다.)
Demian Brecht 2011

@ Agent_9191 그것은 될 것입니다-나는 얼마나 많은 사람들이 여전히 IE7에 있는지 확인하고 무엇을 추측하고 싶을 때 완전히 놀랐습니다. 대부분의 국가에서는 IE7보다 Opera 또는 iPad safari와 같은 브라우저에 더 많은 사람들이 있습니다. 지금 IE7에 대한 지원을 중단 할 수있어서 정말 기쁩니다! 그리고 IE8은 조만간 사라질 것입니다. 우리가 직면해야 할 마지막 완고한 브라우저입니다 (IE9는 코딩하기에 그렇게 나쁘지 않습니다).
Camilo Martin

2

정말 당신에게 달려 있습니다. 일반적으로 내비게이션 메뉴를 마크 업하기 위해 순서가 지정되지 않은 목록을 사용했다면 <nav> 요소 내에서 계속 그렇게한다고 말하고 싶습니다. <nav> 요소의 요점은 예를 들어 컴퓨터 리더에 대한 사이트 탐색을 식별하는 것이므로 목록을 사용하든 단순히 링크를 사용하든 중요하지 않습니다.


스크린 리더의 경우 navs 및 as가 현재 목록만큼 좋다고 언급했기 때문입니다 .
Camilo Martin

2

나에게 순서없는 목록은 실제로 필요하지 않은 추가 마크 업입니다. HTML 문서를 볼 때 가능한 한 깨끗하고 쉽게 읽을 수 있기를 바랍니다. 적절한 들여 쓰기가 사용되는 경우 목록이 표시되고 있다는 것은 뷰어에게 이미 분명합니다. 따라서 이러한 태그에 UL을 추가 할 필요가 없으며 문서를 읽기가 더 어려워집니다.

약간의 유연성을 얻을 수 있지만, 비 의미적인 ul 클래스로 마크 업을 부 풀리지 않고 한 번에 a 요소의 스타일을 지정하는 것이 더 나은 생각이라고 생각합니다. 그리고 변명의 여지가 없습니다. : before 및 : after 의사 선택기를 사용하십시오.

편집 : 일부 ARIA 스크린 리더는 목록을 단순한 앵커 태그와 다르게 취급한다는 것을 알고 있습니다. 귀하의 웹 사이트가 장애인을 대상으로하는 경우 목록 기반 접근 방식을 사용하는 것이 좋습니다.


1

아니요, 동등합니다. HTML 5는 HTML 4 목록과 역 호환되므로 동일한 관점에서 자유롭게 사용할 수 있습니다. 트레이드 오프는 두 번째 버전의 코드가 적다는 것입니다.

당신이 브라우저에 대한 이전 버전과의 호환성에 대해 우려하는 경우 포함해야합니다 이 심 과 같은 태그의 기능을 제공 할 수 <nav><article>.


8
링크 목록은 추가적인 의미와 접근성을 제공합니다 (예 : 화면 판독기는 탐색에 들어갈 때 '세 항목 목록'을 알려줍니다).
robertc 2011

@robertc screenreaders 포인트는 아주 좋은 것입니다. 당신은 그것을 대답에 넣어야했습니다! 나는 그것을 올바른 것으로 표시했을 것입니다. 어쨌든 +1.
kikito 2011

1

우리가 "책으로"이야기한다면, 아니오; 탐색을 마크 업하기 위해 목록을 사용할 필요가 없습니다. 그들이 제공하는 유일한 진정한 장점은 스타일을 지정할 때 더 나은 유연성을 제공하는 것입니다.


1

<ul><li>새 태그 ( <nav>, <section><article>)는 <div>s의 의미 론적 버전 일 뿐이므로 태그를 유지하겠습니다 .

같은 이유로에서 링크가 많을뿐만 아니라 태그 <div>내에 구조화되어야합니다 <nav>.


과거에 <div>에서 많은 링크 대신 <ul>을 사용한 이유는 정확히 <ul>이 더 의미 론적 이었기 때문입니다. 그러나 이제 <nav>는 더 의미가 있습니다. 혼란 스러워요.
kikito 2011

2
<ul>은 일반 <a> 링크보다 여전히 더 의미가 있지만 <nav>는 <div>보다 더 의미가 있습니다. 의 <UL> <A>는 별도 대에 <탐색> 대 <DIV>
whostolemyhat

의미론을 신경 쓰지 않는 것은 HTML을 작성할 때 갈 길이 아닙니다 .
Andrew Marshall

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