Сейчас много шума по поводу доступности интерфейсов. Здорово, что люди обращают на это внимание и начинают разрабатывать интерфейсы, которыми могут пользоваться люди с какими-то ограничениями.
Но мы забываем про людей, у которых нет ограничений по здоровью. У них также есть право пользоваться интерфейсами так, как им удобно. Поэтому я хочу рассказать про несколько случаев, когда я встречаю недоступные интерфейсы, как человек без ограничений по здоровью.
Не добавляете background-color для блока с фоновым изображением
Когда я ехал домой, захотел посмотреть сайт жилого комплекса, где рассматривал квартиру. Пока грузился сайт, я по традиции, видел белый экран.
Когда он загрузился, то я увидел белый шрифт и красивую фоновую картинку комплекса. Я не знаю, почему разработчики не добавили цветной фон для блока с помощью background-color. Но, если бы они это сделали, то я бы смог прочитать текст раньше и не ждать загрузки изображения.
Не делайте так
.hero {
background-image: url("example.jpg");
}
Можно делать так
.hero {
background-image: url("example.jpg");
background-color: #919191;
}
Не используете специальные типы email и tel для тега input
Когда заполняешь поля формы с телефона, то удобно, когда специальная клавиатура для ввода электронный почты или номера телефона появляется сразу.
Но я все еще встречаю сайты, где мне приходится самостоятельно переключаться на нее. Это происходит, потому что разработчики не использую типы email и tel для тега input.
Не делайте так
<input type="text" placeholder="Ваша электронная почта">
<input type="text" placeholder="Ваш номер телефона">
Можно делать так
<input type="email" placeholder="Ваша электронная почта">
<input type="tel" placeholder="Ваш номер телефона">
<!-- или -->
<input inputmode="email" placeholder="Ваша электронная почта">
<input inputmode="tel" placeholder="Ваш номер телефона">
Удаляете outline без альтернативы
Когда я смотрю вакансии на сайте для поиска работы, я не могу быстро переключаться при помощи клавиатуры. Дело в том, что из-за отключенного outline я просто не вижу, на какой ссылке сейчас мой фокус.
Не делайте так
.button:focus {
outline: none;
}
Правильного решения я не могу привести, потому что это комплексная ошибка дизайнера и разработчиков. И ее решать нужно также комплексно.
Используете псевдо-кнопки
В интернете все чаще встречаются сайты, на которых разработчики добавляют role=”button” для тегов div или span. И, наверное, они думают, что все хорошо. Но у меня плохие новости.
Кнопки по-прежнему не доступны для меня, когда я хочу использовать свою клавиатуру. Я жму enter, и снова получаю разочарование. Приходится использовать тачпад.
Не делайте так
<div role="button">Добавить в корзину</div>
Можно делать так
<button>Добавить в корзину</button>
Не используете тег label
Я регистрировался на одном сайте и мне нужно было поставить чекбокс для согласия с правилами политики конфиденциальности. Я кликнул по тексту “Да, принимаю” и никакой реакции интерфейса. Я подумал, что может промахнулся или какой-то лаг. Кликнул еще раз. Та же реакция интерфейса, точнее ее отсутствие.
Я проинспектировал код и увидел, что разработчики забыли добавить тег label.
Не делайте так
<div class="form-group">
<input type="checkbox">
<span>Да, принимаю</span>
</div>
Можно делать так
<label class="form-group">
<input type="checkbox">
<span>Да, принимаю</span>
</label>
Используете px для свойства font-size
Я использую монитор, который находится примерно в метре от меня, поэтому у меня стоит режим с увеличенным размером текста в Google Chrome. И когда я попадаю на сайт, где шрифт указан в пикселях, то мне приходится дополнительно увеличивать его через зум.
Хотя разработчики могли использовать rem'ы, и у меня не было бы неудобств.
Не делайте так
.hero {
font-size: 16px;
}
Можно делать так
.hero {
font-size: 1rem;
}
WanSpi
defaultvoice
Значение rem зависит от базового font-size в root. По дефолту 16px, но никто не мешает переопределить
WanSpi
Rem зависит от html тега, но это я прекрасно понимаю, не понимаю в чем отличие для автора, когда это те же пиксели, и что одно, что другое можно легко изменить.
Lodin
Rem зависит от настроек браузера. Если там размер шрифта выставлен не дефолтный в 16px, то размер в rem тоже будет другим, пропорционально шрифту, тогда как размер в пикселях можно изменить только зумом.
WanSpi
Тогда я бы указал что нельзя устанавливать font-size для html, так как в итоге настройки браузера будут просто игнорироваться.
Lodin
font-size
тоже можно через rem задавать.WanSpi
Не до конца понял о чем вы, rem зависит от значения font-size в теге html, и только от этого значения, в настройках браузера можно менять стандартный font-size в html, но он лишь изменяет стандартное значение, и если задать конкретное значение:
то один rem будет всегда равняться 10 пикселям, и никакие настройки браузера вам не помогут, а так как много кто устанавливает значения font-size именно в теге html, то не понятно в чем смысл менять px на rem.
maksim_bezgodov
Есть смысл. Необходимо установить размер шрифта в 100% на тэг html.
Тогда все значения в rem будут высчитываться от html, который равен настройкам браузера (что [в большинстве случаев] будет равняться 16px).
melnik909 Автор
это происходит без вашего участия. Свойство font-size наследуемое, поэтому указывать 100% или inherit не нужно.
maksim_bezgodov
Да, но есть один нюанс — многие CSS Фреймворк имеют обычай данное правило переопределять. Например, UIKit по-умолчанию устанавливает 16px на тег html (это было месяца 3 назад, текущую ситуацию не знаю).
Мой комментарий скорее о том, что необходимо убедиться, что font-size на html элементе установлен в значение, которое будет равняться браузерному. Лучше всего его явно переопределять (font-size: 100%), как я и показал выше.
melnik909 Автор
Ну так, кто выбирает инструменты для решения задач?
sumanai
А потом приходит баг, что у пользователя всё поехало, и в итоге, после 2 недель пыток выясняется, что у него дефолтный размер шрифта установлен в 30px. И вы прибиваете шрифт обратно.
Для того, чтобы это корректно работало, нужно весь интерфейс приспосабливать к резиновым шрифтам. А на это ни у кого нет ни желания, ни времени. Да и дизайнер изойдёт кровавыми слезами, если увидит свой интерфейс с нестандартным размером шрифта, даже если всё внезапно поместится.
maksim_bezgodov
Не могу согласится на 100%. Если пользователь сожмёт окно браузера до 20% от ширины монитора, то кто будет виноват в том, что у пользователя интерфейс отображается «неверно»? Если пользователь устанавливает нестандартное значение шрифта по-умолчанию в браузере, то (вероятнее всего) он делает это осознанно.
sumanai
В итоге во многих шаблонах таки переопределяется, и, по крайней мере в FF, настройка дефолтных шрифтов отваливается. Про хром с его увеличенными шрифтами ничего сказать не могу.
maggg
Совершенно согласен с этим замечанием. Во-первых, rem'ы отсчитываются от значения, которое всё равно скорее всего будет переопределено на конкретной странице, а, во-вторых, чтобы было покрупнее, люди обычно меняют плотность пикселей или используют масштабирование на уровне всей системы, а не меняют размер базового шрифта в браузере, поэтому задавайте размеры в пикселях и не парьтесь. Времена, когда относительные единицы реально имели большое значение, прошли лет десять назад.