У 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 лютого -117, 7:38

Представляючи HTML5 Брюса Лоусона та Ремі Шарпа, про це можна сказати:

Заголовок також може містити навігацію. Це може бути дуже корисно для навігації по всьому сайту, особливо на сайтах, керованих шаблонами, де весь <header>елемент може походити з файлу шаблону.

Звичайно, не потрібно, щоб <nav>бути в <header>.

Якщо багато в чому залежить від того, чи вважаєте ви, що навігація по всьому сайту належить до загального заголовка сайту, а також прагматичні міркування щодо простоти стилізації.

Виходячи з цього останнього речення, здається, що Брюс Лосон - автор глави цих уривків - визнає, що "прагматичні міркування щодо простоти стилізації" дають зв'язок між змістом та стилем.


1
Це повністю залежить від дизайну вашого веб-сайту. Візьмемо, наприклад, Twitter, їх домашня сторінка (сторінка, яку ви бачите перед входом у систему), не має верхньої навігації. Усі їх "головні меню" знаходяться внизу сторінки. Тепер я не знаю про вас - але я б не хотів називати це заголовком ...
uSeRnAmEhAhAhAhAhA

Відповіді:


84

Це повністю залежить від вас. Ви можете або помістити їх у заголовок, або ні, якщо елементи всередині них є лише внутрішніми елементами навігації (тобто не посилаються на зовнішні сайти, такі як твіттер або facebook-акаунт), тоді це добре.

Вони, як правило, розміщуються в заголовку просто тому, що саме там навігація часто йде, але це не встановлено в камені.

Детальніше про це можна прочитати на HTML5 Doctor .


5
Чому ви стверджуєте, що "поки елементи всередині них є лише внутрішніми елементами навігації (тобто не посилаються на зовнішні сайти, такі як твіттер або facebook-рахунок), це добре".
Метью Ранкін

7
@Matthew, оскільки елемент елемента навігації призначений лише для навігації по цьому сайту. Мені просто було зрозуміло все.
Ян Девлін

@MatthewRankin Яке потрясіння було б натиснути на якір всередині <nav>елемента, тільки щоб він був відправлений на нову сторінку із зовсім іншою навігацією. Для прив’язок до зовнішніх сайтів, які не мають справжнього відношення до вашого, також пам’ятайте rel="nofollow"атрибут для посилань.
Ентоні Рутлідж

Я знаю, що це старе ... А як щодо посилань на субдомени? Наприклад, веб-сайт, що має різні сайти (презентаційний сайт, сайт сервісу, авторський сайт тощо), всі вони мають різну структуру. Що я роблю, це розміщувати це посилання всередині <nav>елемента, а не всередині <ul>елемента, стилюючи його таким чином, що не є частиною головного навігаційного списку. За винятком мобільної версії, посилання має міститись у цьому ж списку ... У будь-якому випадку кнопка є достатньо описовою, щоб знати, що ви їдете кудись інше ...
Chazy Chaz

5

Трохи незрозуміло, запитуєте ви про думки, наприклад. "звичайно робити ххх" або фактичне правило, тому я збираюся схилятися у напрямку правил.

Приклади, які ви цитуєте, здаються на основі прикладів у специфікації для елемента елемента nav . Пам’ятайте, що специфікація не змінюється, і правила іноді перекручуються, тому я б ризикнув, що багато людей можуть прагнути робити те, що дано, а не інтерпретувати. Ви показуєте два окремих приклади з різною поведінкою, тому ви можете прочитати в них лише стільки. Чи є на будь-якому з цих сайтів протилежна ситуація з підводкою / навігацією, і якщо так, як з ними впоратися?

Найголовніше, однак, немає нічого в специфікації , кажучи або це спосіб зробити це. Одна з цілей HTML5 полягала в тому, щоб бути дуже зрозумілим [це для порівняння] щодо семантики, вимог тощо, тому недогляд варто зазначити. Наскільки я бачу, приклади не залежать один від одного і однаково справедливі в їх власному контексті вимог до компонування тощо.

Умови положення джерела nav є умовними - це щось нерозумно (інший червоний прапор). Просто виберіть метод і продовжуйте його використовувати.


4

Мені не подобається ставити nav у заголовок . Мої міркування:

Логіка

Тема містить вступну інформацію про документ. Нав це меню, посилання на інші документи. На мій погляд, це означає, що вміст nav належить сайту, а не документу. Винятком буде, якби НАЗ утримував прямі посилання.

Доступність

Мені подобається ставити меню наприкінці вихідного коду, а не на початку. Я використовую CSS, щоб відправити його на верхню частину екрана комп'ютера або залишити його в кінці для текстових мовних браузерів та невеликих екранів. Це дозволяє уникнути необхідності пропускних посилань.


2
майте на увазі, що пропускні посилання дають ОПЦІЮ пропустити меню, а введення в кінці не дає можливості не пропускати (тобто навігацію) - таким чином, ви будете змушені чекати до кінця, щоб мати можливість правильно переходити. , правда?
Джулікс

2
Продовжуючи точку @ julix, розміщення nav в кінці, але надання його на початку зробить це незручним для прозорливих користувачів, що прошивають документ.
Джейсон Т Ферінгенгем

3

@IanDevlin вірно. Правила MDN говорять наступне :

"Елемент заголовка HTML" "" визначає заголовок сторінки - зазвичай містить логотип та назву сайту та, можливо, горизонтальне меню ... "

Слово "можливо" є ключовим. Далі йдеться про те, що заголовок не обов’язково повинен бути заголовком сайту. Наприклад, ви можете включити "заголовок" на спливаючому модалі або в інших модульних частинах документа, де є заголовок, і було б корисно користувачеві з екранного зчитувача знати про нього.

Умови неявного використання NAV, ви можете використовувати його в будь-якому місці, де є згрупована навігація по сайту, хоча це зазвичай опускається з розділу «Футер» для міні-навісів / важливих посилань на сайт.

Дійсно, це зводиться до особистого / командного вибору. Вирішіть, що ви та ваша команда вважаєте більш семантичним та важливішим, і намагайтеся бути послідовними. Для мене, якщо nav є рядом з логотипом та головним сайтом "h1", то є сенс розмістити його у "заголовку", але якщо у вас інший вибір дизайну, тоді приймайте рішення залежно від конкретного випадку.

Найголовніше ознайомтеся з документами та будьте впевнені, чи вирішили випустити чи включити, чи розумієте, чому ви приймаєте саме це рішення.


2

Щоб розширити те, що сказав @JoshuaMaddox, у розділі «Введення в HTML» у підрозділі «Введення в HTML» написано в підрозділі « Документ та структура веб -сайту» (напівжирний / акцент зроблений мною):

Заголовок

Зазвичай велика смужка вгорі з великим заголовком та / або логотипом. Тут головна загальна інформація про веб-сайт зазвичай зберігається від однієї веб-сторінки до іншої.

Панель навігації

Посилання на основні розділи сайту; зазвичай представлені кнопками меню, посиланнями або вкладками. Як і в заголовку, цей вміст зазвичай залишається послідовним від однієї веб-сторінки до іншої - наявність непослідовної навігації на вашому веб-сайті просто призведе до розгублених, розчарованих користувачів. Багато веб-дизайнерів вважають панель навігації частиною заголовка, а не окремим компонентом, але це не є обов'язковою умовою; насправді деякі також стверджують, що наявність двох окремих є кращими для доступності, оскільки зчитувачі екрану можуть читати дві функції краще, якщо вони є окремими .


1
Я хочу погодитися з тим, <nav>що структурована дрібна сторінка може бути більш доступною, ніж <nav>вкладена глибше. Однак на якій підставі виноситься це судження? Читачі на екрані все одно збираються додому <nav>та <a>теги. Важливим фактором є структурний порядок HTML. Далі, чуйність. Чи робить основний <nav>(або будь-який <nav>) прямим дитиною <body>полегшення маніпулювання? Це дійсний HTML? A <nav>- це вміст розділів , і, таким чином, це природна придатність жити в корені секціонування , як <body>. Дивіться W3C HTML5
Anthony Rutledge
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.