Друкарня від WE.UA

Про доступність та UI на прикладі мого особистого сайту

Знайомтесь це мій особистий сайт. Перший знімок те яким він був ДО другий - ПІСЛЯ сьогоднішнього патчу. І в цій короткій статті я хочу зробити маленьке ревью та розказати на прикладах ЧОМУ я реалізував деякі дивні речі.

Зображення
Старий варіант
Зображення
Оновлений варіант

Про Header

Почну з самого низу - header.

Зображення

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

Чому він внизу? Все просто - для зручнішої навігації з мобільного пристрою. Оскільки нижня зона дисплею зазвичай доступніша за верхню.

Зображення

Звісно, якщо у користувача немає попсокета. Тоді активна зона зміщується вище.

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

Зображення

В останньому патчі я поміням меню та перемикач мови місцями.

Зображення
  1. Для користувача смартфоном (правші) він має стати ще доступніший.

  2. Для користувачів скрінрідера, найперше що буде озвучено на сайті - це пропозиція змінити мову.

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

<a href="...">
  <svg aria-label="Switch language">...</svg>
  English
</a>

Однак це не надто добре працювало. Іконка могла не озвучуватись або ж озвучуватись як Посилання «Українська» .

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

<a
  href="..."
  aria-label="Switch language to English"
  lang="en"
>
  <svg>...</svg>
  English
</a>

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

І поки ми не пішли далі. Мій футер порушує одне з вагомих правил - візуальне розміщення елементів та їх порядок табуляції повинні співпадати. В моєму випадку це не так — меню табулюється першим проте візуально в самому кінці сторінки. Але я готовий на це піти розуміючи ризики.

Про іменування секцій

Рухаємось далі і поговоримо про блок з посиланнями на соціальні мережі.

Зображення

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

В старій версії не було нічого цікавого. Це був нудний і не найкраще зроблений div з посиланнями. 🤢

<div>
  <a>Eмeйл</a>
  <a>Kyпити Kaви</a>
  <a>Teлerpam</a>
  <a>Твіттер</a>
  <a>Ютуб</a> 
  <a>Інстаграм</a>
</div>

CSS я опускаю, оскільки він не важливий для UI та семантики.

В новій версії, по перше я використовую section щоб логічно згрупувати елементи.

<section aria-label="Основні контакти">
  <a>Eмeйл</a>
  <a>Kyпити Kaви</a>
</section>

<section aria-labeledby="secondary">
  <h2 id="secondary">Інші соц.мережі</h2>
  <a>Teлerpam</a>
  <a>Твіттер</a>
  <a>Ютуб</a> 
  <a>Інстаграм</a>
</section>

А по друге, обом секціям я додав лейбли. Завдяки цьому при навігації скрінрідером, коли фокус провалюється в середину буде зачитано як лейбд секції так і посилання Основні контакти. Емейл. Або Інші соціальні мережі. Твіттер. Чи навіть Основні контакти. Регіон. 2 елементи. Емейл. Посилання.

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

<article aria-labelledby="banner-title">
  <p>
    <strong id="banner-title">Дякую за підтримку України!</strong>
  </p>

  <p>
    Оскільки росія веде геноцидну війну проти моєї країни, 
    я вдячний усім, хто продовжує підтримувати Україну
    в нашій боротьбі за свободу.
  </p>
  <p>
    <a href="...">Подивіться, як ви можете допомогти</a>
  </p>
</article>

Домашнє завдання

І на останок, питання на домашнє завдання, раз ви дочитали аж сюди: Хто пояснить, чому для групування соц.іконок я використав <section> а для групування банера <article>?

Статті про вітчизняний бізнес та цікавих людей:

  • Вітаємо з Різдвом Христовим!

    Друкарня та платформа WE.UA вітають всіх наших читачів та авторів зі світлим святом Різдва! Зичимо всім українцям довгожданого миру, міцного здоровʼя, злагоди, родинного затишку та втілення всього доброго і прекрасного, чого вам побажали колядники!

    Теми цього довгочиту:

    Різдво
  • Каблучки – прикраси, які варто купувати

    Ювелірні вироби – це не тільки спосіб витратити гроші, але і зробити вигідні інвестиції. Бо вартість ювелірних виробів з кожним роком тільки зростає. Тому купуючи стильні прикраси, ви вигідно вкладаєте кошти.

    Теми цього довгочиту:

    Як Вибрати Каблучку
  • П'ять помилок у виборі домашнього текстилю, які псують комфорт сну

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

    Теми цього довгочиту:

    Домашній Текстиль
  • Як знайти житло в Києві

    Переїжджаєте до Києва і шукаєте житло? Дізнайтеся, як орендувати чи купити квартиру, перевірити власника та знайти варіанти, про які зазвичай не говорять.

    Теми цього довгочиту:

    Агентство Нерухомості
  • Як заохотити дитину до читання?

    Як залучити до читання сучасну молодь - поради та факти. Користь читання для дітей - основні переваги. Розвиток дітей - це наше майбутнє.

    Теми цього довгочиту:

    Читання
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Олександр Козак
Олександр Козак@kozack

9.7KПрочитань
1Автори
68Читачі
Підтримати
На Друкарні з 14 квітня

Більше від автора

  • Детальний огляд семантики HTML теґів. Різниця між <section> та <article>

    Огляд семантики HTML: розрізнення між <section> та <article>, значення правильного використання тегів та їх роль у структурі вебсторінки. Дослідження важливості семантики для SEO та доступності, а також рекомендації щодо використання HTML-елементів та ролей

    Теми цього довгочиту:

    Html
  • Як зробити нескінченну прокрутку на сайті. Або 10 недоліків та одна перевага Infinity Scroll

    В цій статті я хочу описати 10 поширених проблем, пов’язаних з нескінченною прокруткою, які розробнику доведеться вирішувати при реалізації Infinity Scroll. Та про єдину причину, чому попри всі недоліки нескінченну прокрутку активно використовують.

    Теми цього довгочиту:

    Ui-ux
  • Чому ви повинні забути про rgb() та hex кольори при роботі з вебсайтами

    Формат задання кольорів функцією rgb() було представлено ще у 1996 році. Очевидно, що CSS далеко розвинувся з тих часів. Попри це, чомусь, багато веброзробників та вебдизайнерів вперто продовжують використовувати цей застарілий, обмежений та нелюдський формат кольору по цей день.

    Теми цього довгочиту:

    Css

Це також може зацікавити:

Коментарі (4)

Article індексується як більш важливий елемент, яким і являється банер

Це також може зацікавити: