Темная тема — модно, все включают её себе в макоси (на следующий день, конечно, выключают обратно). Часто выключают потому, что сама тема темная, а весь контент вокруг (письма, сайты) — светлые. Светлый контент бьет по глазам своей яркостью.
Некоторые сайты включают темную тему исходя из времени суток. Например, Авиасейлз:
Скоро наступит будущее (UPD. Наступило в macOS 10.14.4)
В самой новой версии Сафари (Safari Technologies Preview) уже появился детект темной темы внутри браузера. В macOS 10.14.4 эта поддержка появился в обычном сафари.
Из браузера можно узнать установлена ли темная тема у посетителя и сделать немного магии. Светлая:
Темная:
Тем, у кого есть новый Сафари 68+ можно попробовать здесь:
Чтобы включить темную тему используется медиа-запрос prefers-color-scheme:
@media (prefers-color-scheme: dark) {
//какие-то отличия темной темы, от светлой
}
Чтобы отлаживать, не включая-выключая системную тему, в Сафари (в той самой Technologies Preview) есть кнопка включения темной темы локально в браузере:
Если кому-то интересно как сделана темная тема, то кроме css-файла на сайте есть less-файл на гитхабе. Но осторожно, там очень много быдлокода и костылей.
У меня на главной странице давно висит такой текст:
Веду рубрику «Дизайн-вопрос». Отвечаю на вопросы о дизайне и смежных областях. Не халтурю, не пишу отписки и отвечаю на совесть: частенько для ответа приходится найти, прочитать и изучить исследования, рекомендации, набрать и подобрать иллюстрации или примеры. Вопросы пишите на mike.ozornin@gmail.com.
Я не думал, что кто-то его вообще видит, но на днях получил неожиданный вопрос. Что ж. Назвался груздем — полезай в кузов.
Я решил использовать несистемный Робото в интерфейсе, потому что он показался мне нейтральным и подходящим для дизайна. Часть команды была против использования несистемного шрифта, потому что это лишнее время на загрузку интерфейса, траблы с лицензией и вообще, пользователи не заметят разницы между каким-нибудь Ариалом и Робото. В конечном итоге мы оставили Робото, но вот нормально обосновать выбор я не смог.
В принципе, я понимаю, почему нельзя было в том случае использовать антикву или акциденцию, но вот почему я решил взять именно такую гарнитуру — не знаю.
Вопрос:
Расскажи, пожалуйста, как научиться осознано подходить к выбору гарнитуры и уметь доказывать, что именно она нужна?
Матвей!
Рад, что у вас решилась исходная проблема с Робото. И с Робото нет никаких проблем с лицензией, его можно использовать где хочется.
Системный шрифт
Отсутствие загрузки и более хороший рендеринг — это, на мой взгляд, справедливые аргументы за системный шрифт. Но есть и аргументы против.
Системный — разный везде
Первый — системный шрифт означает разный внешний вид на разных платформах.
Для получения некоего «системного шрифта» недостаточно просто вписать Ариал. Ариала нет на маке, компьютерах с линуксом и мобильных. Если на этих платформах есть целевые пользователи, то кроме Ариала для них понадобится другой шрифт: Робото для андроида, Сан-Франциско для макос и айос, какой-нибудь sans-serif для линуксов (Опенсанс, Либерейшен или какой-нибудь Дежавю).
По своей идее на «системный шрифт» похож native font stack. По сути это самый родной шрифт на каждой из платформ. Вот как это выглядит в виде CSS-кода:
$font-family-sans-serif:
// Safari for OS X and iOS (San Francisco)
-apple-system,
// Chrome < 56 for OS X (San Francisco)
BlinkMacSystemFont,
// Windows
"Segoe UI",
// Android
"Roboto",
// Basic web fallback
"Helvetica Neue", Arial, sans-serif,
// Emoji fonts
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
Нативный стэк выглядит везде по-разному и местами эти отличия существенны. Даже не каждый дизайнер заметит разницу между Ариалом, Робото и Сан-Франциско. А вот Сан-Франциско и Сегой отличаются между собой сильней, из-за этого разницу могут увидеть больше людей.
Системные шрифты отличаются между собой, при этом у разных шрифтов разные метрики и, скорей всего, придется что-то где-то адаптировать. Вот две одинаковые кнопки, в которых подключен нативный стек для из Виндоуза и Андроида:
Сегой и Робото
Можно заметить, что у них разное вертикальное выравнивание и визуально разный размер букв. Если на экране будут не только две кнопки, но и какой-то текст, заголовки, таблицы, поля ввода, то на одном из шрифтов что-то может визуально сломаться.
Каждая поддерживаемая платформа это дополнительный системный шрифт, который нужно перепроверить и при необходимости адаптировать. Лишний код на адаптацию: компенсация пиксельных отступов, размеров глифов, — это лишнее визуальное тестирование. Можно обойтись и без тестирования, но тогда будет выглядеть «как получится». Общий шрифт снимает бо́льшую часть этих вопросов. Такие аргументы особенно понятны разработчикам и инженерам по качеству. Им бы вообще лишь бы что-то везде сделать одинаковым, чтобы не ломалось в будущем :—)
Системный — без своего «Я»
Второй важный аргумент против системного шрифта — продукт не получает свой язык. На Ариале сложно сделать какой-то узнаваемый визуальный язык, интерфейс будет похож на другие продукты. Наличие своего уникального языка не всегда важно, но часто это может быть определяющим фактором. В этом плане Робото, например, стал языком Гугла, и все интерфейсы с ним выглядят немного по-гугловому.
Отсутствие своего языка — одна из главных, почему, например, Яндекс начал разрабатывать свой шрифт. Они хотели с помощью шрифта усилить «язык Яндекса».
Конкретно Ариал — не очень
Третий минус конкретно у ариала. Он не очень хороший (но это мало кто заметит) и у него может быть не хватить начертаний. Если вы захотите тонкое начертание, то ариал вам не помощник.
Вместо вывода
Может оказаться, что для вас скорость загрузки, уверенный рендеринг стоят этих минусов, а альтернативных платформ мало. В этом случае использовать какой-то системный шрифт не такая проблема. Контур вот в своих продуктах использует Сегой и ничего, им нравится. Они подключают его и в вебе, как они это сделали я не знаю, спрошу.
Как выбрать свой шрифт
Как выбирать шрифт вообще, если брать не только системные. Если коротко: я сам не знаю. Это непросто и я не уверен, что я тот самый человек. Я нечасто это делаю, но у меня как-то сложился такой алгоритм.
1. Формулирую требования
Сначала я формулирую для себя, что я хочу от шрифта. Хороших шрифтов много, поэтому если перебирать по одному, то не хватит никакой жизни, нужно как-то сузить выбор.
Я отталкиваюсь от следующих областей: функция, эстетика, доступность. Я нашел свои записи, которые писал несколько лет назад, когда мы выбирали шрифт для продуктов. Вот:
Функция
Начертания
Минимум: Обычное, полужирное, тонкое (все с курсивом), хорошо если больше.
Набор цифр
Есть маюскульные цифры, минускульные опциональны. Есть пропорциональные и моноширинные цифры (скорей всего это есть у всех), моноширинные дефолт.
Хорошая читаемость
Лучше открытый или полуоткрытый шрифт с высоким x-height. Хорошо бы иметь форму 6 и 9 как в Авенире и Лато, а не как в Гельветике (иногда доступны Opentype-фичей Straight-sided six and nine). Должен хорошо читаться даже на плохих экранах с TN-матрицей.
Универсальный
Было бы хорошо, чтобы он хорошо работал и в печатной продукции (руководства, отчеты, маркетинговые материалы). Вдруг мы сможем использовать его и там.
Высокая емкость
В наших продуктах много данных, поэтому хорошо бы, чтобы шрифт не был слишком широким.
Эстетика
Чистый.
Простой, но не упрощенный.
Выглядит технологично.
Создаёт ощущение технологий и хай-тека, а не теплой ламповости или стимпанка (как Текстбук, Гилл или 20 копеек).
Нормальная кириллица.
Не должен казаться очень чужеродным, создавать из-за непривычности ощущение халтуры.
Доступность
Доступен в качестве веб-шрифта для использования в непубличном веб-интерфейсе.
Желательно не сильно заезженный, как минимум не фирменный шрифт наших основных конкурентов.
Желательно не космически дорогой.
У вас требования могут быть другие.
У кого-то будет другая эстетика: не строгая технологичность, а детская няшность, ощущение швейцарии или теплая ламповость.
У кого-то будут другие требования к функции: кто-то предпочтет узнаваемость и уникальность в угоду считываемости. У кого-то будут очень строгие требования к емкости шрифта. Именно из-за особых требований к емкости шрифта родились шрифты PT Astra.
В той ссылке про Яндекс описано исходя из чего они проектировали свой шрифт, они формулировали исходные критерии до разработки своего шрифта. Позволю себе процитировать:
Шрифт должен иметь своё лицо, отличаться от конкурентов.
И в то же время быть спокойным, нейтральным, не слишком характерным.
Выражающим наши ценности:
открытый,
современный,
умный,
нейтральный,
локальный,
технологичный, но с человеческим лицом.
Сделанным в первую очередь для кириллического набора.
Очень хорошо читаемым, разборчивым и применимым во всех современных средах.
Совпадающим по основным метрикам и пропорциям с Ариалом.
Или вот требования от которых отталкивались при разработке шрифта для интерфейса государственных систем России (ещё не вышел):
Возможно, многие знают, что шрифт для конкретной практической задачи, как правило, обладает определёнными параметрами. В их число входят, например, горизонтальные и вертикальные пропорции, контраст, длина выносных элементов, апертура, насыщенность и т. п. Поэтому, когда речь идёт об интерфейсном шрифте, в голове дизайнера сразу всплывает конструкция:
Высокие прописные;
Очень крупные строчные;
Большая ёмкость, т. е. знаки скорее узкие, чем широкие;
Просторные межбуквенные расстояния с расчётом на экран не слишком высокого разрешения;
Короткие выносные элементы, чтобы экономить место на служебных панелях и кнопках;
Скорее гротеск, чем антиква;
Скорее открытый или полуоткрытый;
Технически подготовленный для работы на экране.
Эти параметры, в общем, не имеют отношения к характеру шрифта, но в рамках жанра должны выдерживаться. Можно привести примеры интерфейсных шрифтов: Lucida Grande, Segoe UI, Roboto, San Francisco UI и т. д.
Один из авторов шрифта Yandex Sans Кристиан Шварц в своей лекции про шрифты рассказывает как они искали форму шрифтов для разных компаний. Показателен пример ДойчеБана (немецких железных дорог). Кристиан с командой долго не могли ничего придумать. В какой-то момент решили начать с расписания, ключевой вещи. И они сделали цифры, которые в этом расписании хорошо различаются. И именно эта различимость букв стала основной будущего шрифта:
После этого я составляю таблицу шрифтов, которые подходят по формальным признакам, пишу им какие-то плюсы и минусы. Каким-то образом выделяю те, которые нравятся больше и те, которые нравятся меньше.
Таблица выглядит как-то так:
Шрифт
Плюсы
Минусы
Цена
Какие-то комментарии
График
…
…
…
…
Лато
…
…
…
…
Робото
…
…
…
…
Фира
…
…
…
…
…
…
…
…
…
Шрифты с Гугл.Фонтс нужно я дополнительно проверяю:
Скачиваю и устанавливаю шрифты (для бесплатных), платные беру в аренду или ищу в библиотеке. После установки проверяю их в деле: меняю в макете, плакате, брошюре или интерфейсе. Для веб-интерфейсов я пишу юзерстиль (userstyle) в браузере, где меняю шрифт на новый. После этого начинаю пользоваться продуктом как обычно.
Через некоторое время понятно, как он: ок или нет, какие плюсы и какие минусы. Иногда после использования какого-то шрифта я уточняю требования и отсеиваю шрифты.
После отбора подходящих отсеиваю шрифты по лицензии и цене. Обычно их остается не так много. Даже если после всех этих изысканий вы выберете Робото (но лучше не надо), то бы будете знать, что ваш выбор не случайный.
Как убедить команду в выбранном шрифте
Алгоритма как убедить у меня нет. Мне не приходилось много спорить о шрифтах с недизайнерами. Мои собеседники соглашались с результатом (картинкой), или мне верили заранее, или мои объяснения (все 4 шага), помогали.
Однозначно не стоит ограничиваться показом просто шрифта. Я, например, совершенно не могу представить, как шрифт будет работать, глядя на спецификацию и набор глифов шрифта. Мне нужно пожить с ним хотя бы в макете, а лучше в интерфейсе.
Мне кажется ключевое в «убеждении» — отсутствие этого убеждения. Если не пытаться убедить, а настроить себя на помощь своему слушателю, сформулировать миссию наподобие «помочь человеку вместе с тобой принять взвешенное решение о выборе шрифта», то и убеждение пройдет легче.
Надеюсь чем-нибудь помог. Пишите, если остались вопросы.
В заключение оставлю разные шрифтовые доклады, которые мне кажутся подходящими к теме поста:
В нем историю культуры рассказывают на языке чатов, эмодзи и упрощенных скриншотов сервисов. Видеоряд очень быстрый, понять почти ничего не возможно.
Я наскриншотил разных программ и интернет-сервисов, которые встретил в видеоролике. Картинки в порядке видео, поэтому некоторые метафоры (типа чатов) будут повторяться. Поехали.
Читал потому что она упоминается в «Прочерке», но свою четверку она заработала сама по себе, она тоже интересная. Подойдет, чтобы заинтересовать детей физикой.
Я знал очень многое из того, что пишет Дарья (я читаю «Намочи манту»), поэтому нового было мало. Если бы я не был подготовлен, то поставил бы 4 звезды. Прочитать стоит, у нас скопилось много разных медицинских заблуждений.
Базовая книга про либертарианство. Если какие-то идеи либертарианства кажутся удивительными, то может быть интересно. А если идеи кажутся понятными, то и в книге нового будет немного. Страдает от многословности.
Ощущения смешанные. С одной стороны Сорокину удалось очень четко собрать приметы времени. С другой читать почти всегда противно. О прочтении не жалею, но и перечитывать не стану.
Прочитанные книги я отмечаю в лайвлибе (mikeozornin). Там будут появляться новые отметки о прочитанном и там же можно посмотреть книги за 2016 и раньше.
Посоветуйте какую-нибудь книгу? Как вы их выбираете, откуда о них узнаете?
Что у тебя с загрузкой на этой неделе?
Во сколько завтра будешь в офисе?
Какие планы на вечер пятницы?
Лично я, когда слышу подобные вопросы, думаю о единственно правильном ответе на такие вопросы:
Не твоё дело!
К сожалению, этот ответ откровенно хамский. Лично мне, вроде бы, удается последнее время не хамить и не сваливаться в нравоучения каждый раз. Но если задавать вопросы корректно, всем будет спокойней.
Все дело в том, что эти невинные с виду вопросы нарушают границы другого человека. Это его дело, во сколько ему быть в офисе (если вы с ним не договорились) и что он делает в пятницу после работы.
Скорей всего, собеседник поймет, что вы имели ввиду. Скорей всего, собеседница не подумает, что вы специально лезете в её личную жизнь. Но им обоим все равно может быть некомфортно, а после вопроса останется неприятный осадок. И конечно, вам об этом никто не скажет.
Обычно такие вопросы очень легко переделать так, чтобы сохранить границы не тронутыми:
Не ок
Ок
Ты идешь сегодня на обед?
Я бы с тобой пообедал, часов в 13-14. Что скажешь?
Ты идешь сегодня на обед?
Пойдем на обед в 13-14?
Во сколько ты завтра в офисе будешь?
Я завтра хочу обсудить сервер Бета-банка. Хочу обсудить как можно раньше. Когда удобно? Если надо, приеду рано утром в офис.
Что у тебя на этой неделе с загрузкой?
Слушай, у нас срочная задача, нужно сделать до конца недели. Может быть сможешь, или может кто-то из твоих стажеров сможет?
Что делаешь в пятницу вечером?
Привет! Я давно тебя не видел, соскучился. Пойдем вечером в паб, например в пятницу? Или давай выпьем вина, у меня есть бутылка Бордо.
Мне помогают вот такие простые правила:
Не спрашивать о планах, вместо вопроса делать предложение. Ты пойдешь на обед? → Пошли на обед?
Если спрашивать, то спрашивать только о допустимом времени: когда удобно.
После соблюдения границ останутся уважение, право на нет и другие вещи. Об этом как-нибудь потом.
У нас в офисе изменилась схема движения лифтов. В связи с этих бизнес-центр поставил объявление со схемой.
Мне кажется, в нем есть некоторые проблемы, в этом после я попробую привести его в порядок.
Вот объявление:
Шаг 1: Убрать все лишнее
Сначала нужно убрать дублирование, его здесь очень много:
Шаг 2: сделать аккуратно
После этого можно аккуратно набрать ту же самую информацию. Заодно поставил заголовок покороче.
Шаг 3: прибраться
Писать все эти бесконечные этажи в столбик нет никакого смысла, проще же сократить. Заодно свесил левую стрелку ← влево, стало немного аккуратней.
Обратите внимание, что в строках лифты + этажи все поставлено с ног на голову: сначала рассказывается что использовать (лифты), а потом кому (этажи). Сначала нужно прочитать нижнюю строчку, чтобы выбрать этаж, а потом прочитать верхнюю, чтобы узнать куда идти. Меняю местами.
Обращаю внимание, что самое важное (куда идти) закрыто сверху каким-то объявление о дате изменения режима. Кому вообще нужна часто эта дата? — один раз прочитал и ладно. Поднимаю наверх этажи, опускаю вниз объявление. Заодно в тексте появился важный кейс — как попасть на парковку.
Разбираюсь окончательно со схемой работы этажей 0-3. В этом бизнес-центре 3-й этаж — уровень ресепшена (вот такой вот идиотизм) и объявление висит тоже на третьем этаже. Этажи 0-2 — служебные , нужны для погрузки и обычно не требуются обычным посетителям. Убираю их, кому надо — и так знает. Явно выделяю парковку в навигации.
Вот сейчас, кажется можно остановиться. Все картинки сразу:
К сожалению, изменения остались только в моем блоге. Я отнес переделанное объявление на ресепшен бизнес-центра. Секретарь сказала «спасибо, поменяем».
Видимо что-то пошло не так, объявление около лифтов все ещё старое.
Это статья из наших внутренних дизайнерских гайдлайнов, поэтому тут может встретиться неожиданная категоричность.
Общие правила
В интерфейсе:
год пишется только тогда, когда он отличается от текущего,
месяцы лучше писать словами, а не цифрами,
в случае сокращенного написания месяца июнь и июль лучше писать полностью.
В бумажных отчетах:
год допустимо указывать даже тогда, когда он совпадает с текущим.
Лучше использовать те форматы, которые указаны ниже, если желаемого вами формата здесь нет, то это лишний повод подумать о том, нужен ли он.
1 Абсолютные даты
1.1 Полный + время
Русский
English
1 ноября, 12:25
November 1, 12:25
1 ноября 2014, 12:25
November 1, 2014, 12:25
⚠ Перед использованием попробуйте понять, зачем нужно время, если дата может быть в прошлом году
1.2 Короткий + время
Русский
English
1 янв, 12:25
Jan 1, 12:25
1 дек 2015, 12:25
Dec 1, 2015, 12:25
1.3 Полный без времени
Русский
English
1 ноября
November 1
1 ноября 2014
November 1, 2014
1.4 Короткий без времени
Русский
English
1 янв
Jan 1
2 ноя 2014
Nov 2, 2014
2 Относительные даты
2.1 Время в прошлом, длинно
Что
Русский
English
< 1 мин
1 секунду назад
1 second ago
5 секунд назад
5 seconds ago
< 59 мин
1 минуту назад
1 minute ago
2 минуты назад
2 minutes ago
5 минут назад
5 minutes ago
Сегодня
16:25
16:25
Вчера
Вчера, 13:25
Yesterday, 13:25
Позавчера и старше
20 декабря, 13:25
December 20, 13:25
Позавчера и старше, если год не совпадает с текущим
20 декабря 2017
December 20, 2017
2.2 Время в прошлом, коротко
Что
Русский
English
< 1 мин
5 с назад
5 s ago
< 59 мин
5 мин назад
5 min ago
Сегодня
16:25
16:25
Вчера
Вчера, 13:25
Yesterday, 13:25
Позавчера и старше
20 дек, 13:25
Dec 20, 13:25
Позавчера и старше, если год не совпадает с текущим
20 дек 2017
Dec 20, 2017
3 Диапазоны дат
В русском: если обе даты без пробелов, то среднее тире (–) без пробелов, если внутри даты есть пробелы, то между датами  —  (длинное тире отбитое тонкими пробелами). Если вы не используете среднее тире, то замените его на длинное.
В английском: всегда использовать среднее тире. С пробелами, если обе даты содержат пробелы. В остальных случаях — без пробелов.
3.1 Полный со временем
Отличие от 3.2: этот лучше подходит для связных текстов, использования в целых предложениях, заголовках писем или разделов
Русский
English
С 1 ноября, 12:25 по 5 ноября, 13:35
From November 1, 12:25 to November 5, 13:35
С 1 ноября 2014, 12:25 по 12 мая, 13:35
From November 1, 2014, 12:25 to May 12, 13:35
С 1 ноября 2013, 12:25 по 12 мая 2014, 13:35
From November 1, 2013, 12:25 to May 12, 2014, 13:35
Когда один и тот же день:
1 ноября, с 12:25 по 13:35
November 1, from 12:25 to 13:35
1 ноября 2014, с 12:25 по 13:35
November 1, 2014, from 12:25 to 13:35
3.2 Средний (с тире) со временем
Отличие от 3.1: этот лучше использовать в таблицах и аналогичных конструкциях.
Есть два формата: цифрами и словами. Вне зависимости от строкового представления сортировка всегда по длительности, а не по строковому представлению.
4.1 Цифрами
Используйте всегда один и тот же формат в рамках одной таблицы, блока, лучше экрана, а лучше — модуля или продукта. Нельзя где-то указывать длительность до секунд, а где-то до минут, будет путаница. Всегда недалеко от длительности лучше подписать, что это за формат. Если секунды указываются, то это очень желательно, если секунды не указываются, то строго требуется.
Стоит помнить, что 1 секунда и 1,0 секунда — не одно и то же, нельзя их путать.
С секундами
Только минуты
0:12,256
Ведущий 0: для минут обязателен
0:12
Ведущий 0: для минут обязателен
2:25
0:02
Для варианта Только минуты ведущий 0: для часов обязателен
25:25
0:25
В этом и ниже миллисекунды скорей всего не нужны, если речь идет не о спортивных соревнованиях
25:00
0:25
2:25:25
2:25
21:25:25
21:25
1:02:25:25
1:02:25
Только минуты в этом случае смотрится особенно неудачно
48:25:25
48:25
4.2 Буквами полный
Все числа округляются до целых. Написать 25 минут и 25,5 секунд — нельзя.
Русский
English
—
—
Если хотите миллисекунды, см. 4.1
12 секунд
12 seconds
2 минуты и 25 секунд
2 minutes 25 seconds
25 минут и 25 секунд
25 minutes 25 seconds
25 минут
25 minutes
Обратите внимание, здесь не написаны секунды, так и надо
2 часа и 25 минут
2 hours 25 minutes
21 час и 25 минут
21 hours 25 minutes
1 день и 2 часа
1 day 2 hours
48 часов и 25 минут
48 hours 25 minutes
10 дней
10 days
2 недели и 5 дней
2 weeks 5 days
Если нужно понедельное деление
6,5 месяцев
6.5 months
4.3 Буквами короткий
Русский
English
12,256 с
12.256 s
12 с
12 s
2 мин 25 с
2 min 25 s
25 мин 25 с
25 min 25 s
25 мин
25 min
Обратите внимание, здесь не написаны секунды, так и надо
2 ч 25 мин
2 h 25 min
21 ч 25 мин
21 h 25 min
1 д 2 ч
1 d 2 h
48 ч 25 мин
48 h 25 min
10 д
10 d
2 нед 5 д
2 w 5 d
Если нужно понедельное деление
6,5 мес
6.5 mo
С десятичной дробью — лучше не надо
С десятичной дробью можно писать только месяцы и годы и только с округлением до половины. Минуты, часы, дни и недели нельзя даже с округлением до половины. В таком виде сложно понять, сколько это, если дробная часть не 0,5.
Лучше не использовать зачеркнутые варианты.
Десятичная
Сколько это на самом деле
3,10 часа
3:06
3,20 часа
3:12
3,25 часа
3:15
3,30 часа
3:18
3,33 часа
3:20
3,40 часа
3:24
3,50 часа
3:30
3,60 часа
3:36
3,67 часа
3:40
3,70 часа
3:42
3,80 часа
3:48
3,90 часа
3:54
3,5 года
3,8 года
3 года, 9 месяцев и около 22 дней
3,2 месяца
3 месяца и около 6 дней
5 Выбор периода показа чего-нибудь
5.1. Говорите по-человечески
Неделя лучше 7 дней, месяц лучше 30 дней, это более по-человечески. С этим есть проблема: месяц менее однозначно, чем 30 дней, вариант 30 дней безопасней. Если вы уверены (например, проверили), что у вас разногласия нет, или что оно допустимо, то месяц, лучше последние 30 дней.
Пример: Яндекс в достаточно строгом продукте Яндекс.Метрика использует неделю и месяц. Они точно тестировали разные формулировки и сделали так:
Можно Яндексу, можно и вам
5.2 Пишите «дней», а не «суток»
Всегда вместо суток употреблять дней. Так тоже более человечно, в жизни не говорят позвоню через трое суток, говорят позвоню через три дня. Фразу последние 7 дней нельзя понять иначе как последние 7 суток. Никто не поймет её как последние 7 суток за вычетом последних 7 ночных периодов.
5.3 Будьте последовательны
Хорошо: Неделя, Месяц, Квартал
Хорошо: Последние 7 дней, 30 дней, 90 дней
Плохо: Неделя, 30 дней, Квартал.
Примечание
90 дней и кварталы могут быть вместе и использоваться в разных частях системы одновременно. Если кому-то нужна поквартальная отчетность, должны быть точно кварталы. 1 квартал, 2 квартал, Q1, Q2, и так далее.
5.4 Используйте адекватные величины
Используйте те величины, какими бы назвали этот период в жизни. Вместо 48 часов лучше 2 дня, вместо 3600 секунд — 1 час, вместо 1440 минут — 1 день. 24 часа, 60 минут — норм. Могут быть исключения, но обычно так.
5.5 Не делайте слишком много
Это искусственный макет, так не надо:
Вот тут ↑ перебор вариантов. Такое количество пунктов сложно сверстать, из него непросто выбрать (с учетом того, они почти все одинаковые по тексту).
Что делать, если пунктов много:
Решить интерфейсно: сгруппировать, выбрать другой элемент управления, сделать последовательный выбор, переверстать.
Решить продуктово: убрать часть опций, сделать автоматическую магию.
5.6 Не дублируйте везде «последние»
И Мильчин, и другие люди советуют не дублировать в списках одинаковое начало.
5.7 Итого
Кажется, что выбирать надо из следующих вариантов (использовать все не надо):
секунды: 1, 5, 10, 15, 30, 60
минуты: 1, 5, 10, 15, 30, 60
часы: 1, 2, 4, 6, 8, 12, 24
дни: 1, 5, 7, 10, 14, 15, 30, 90, 180
недели: 1, 2, 4
месяцы: 1, 2, 3, 6, 12
лет: 1, 2, 5, 10
Если вашего интервала тут нет, может он и не очень осмысленен? Наличие в интерфейсе интервалов последние 5 часов, 18 минут, 13 дней, — вызывает вопросы. Такое может быть из-за особой специфики (например 5-часовые смены операторов), но обычно такого не должно быть.
Очень важно написать для всех этих случаев форматтеры (функции форматирования) в используемом вами фреймворке. Только так можно гарантировать, что форматы будут правильные, тире не заменятся на дефисы.
Проще один раз отладить и сделать эталонную реализацию.
Таймсерии — графики, где что-то зависит от времени обычно. В посте я расскажу, как делать на них подписи. Это улучшенная версия статьи из наших внутренних дизайнерских гайдлайнов, поэтому тут может встретиться неожиданная категоричность.
В чем проблема
Если не следить за подписями, то программа или библиотека расставит отметки автоматически. Скорей всего она поделит интервал на равные промежутки и может получиться плохо. Вот скриншот временной оси графика, обратите внимание, что показано только время:
Библиотека отрисовки почему-то решила не подписывать даты и подписала только время. На самом деле пеньки 3:00 21 мая, 15:00 23 мая, 3:00 26 мая, 15:00 28 мая, 3:00 31 мая, 15:00 2 июня. Понять это из подписей почти невозможно.
Я перерисую скриншот, чтобы можно было менять и иллюстрировать:
Первое, что нужно сделать — всегда писать даты:
Стало понятно, но тоже плохо. Пеньки получились неудобные, читать их неудобно. Все потому, что программа поделила ось на равные промежутки и подписала их. В данном случае число отсчетов не совпало с числом дней, поэтому программа выбрала промежутками не целые дни.
Пурпурные линии — границы дней
В посте я расскажу что с этим всем делать.
Общие правила
Подписи отметок соотносятся с масштабом. При показе данных за год показывать время с точностью до минут не имеет смысла.
Всегда выбирается максимально детальный разумный масштаб. Если без проблем указывается с точностью до дней, то не надо укрупнять отметки до 5-дневных просто так.
Отметки должны быть регулярны. Разный шаг не позволит удобно прикинуть промежуточное значение. Если регулярные метки не получаются, то основную часть отметок лучше сделать регулярными, а нерегулярные остатки сложить к одному из концов интервала.
Смысловые отметки лучше несмысловых. Отметка 22:12 — странно, 22:30 — норм. Вряд ли имеет смысл использовать что-то, не попадающее в этот список: 1, 5, 10, 15, 30 секунд, 1, 5, 10, 15, 30 минут, 1, 2, 4, 6, 12, 24 часов, 1, 2, 5, 10, 15 дней, 1, 2 недели (если нужны именно календарные недели), 1, 2, 3, 6 месяцев, 1, 2 года, 5, 10 лет.
Дробными числами, не подходящими под указанные выше, допустимо подписывать только начало и конец.
Информативность
Дублировать одно и то же — плохо. Не надо писать у отметок так: 01.01.2015, 01.02.2015, 01.03.2015, 01.05.2015. Но и 01.01, 01.02, 01.03, 01.05 тоже плохо (см. следующий пункт). Кстати, кто-нибудь заметил, что я пропустил апрель?
Для дат лучше всего использовать формат 1 мая, 2 июня, 13 ноя. Месяцы сокращаются до трех букв без точки (кроме мая, июня и июля), ведущий ноль у числа не пишется.
Если год на отметках повторяется, то лучше подписать его у первой отметки этого года, а у следующих не подписывать. Год стоит продублировать у крайних отметок, чтобы было проще понять, какая это дата.
Секунды у времени не пишутся, если не сказано обратного — 22:12. Любое время, кроме полуночи лучше писать без ведущих нулей: 6:25, 9:13, 12:56, но 00:00. Для секунд, там где они нужны, допускается писать только секунды: 10:55, :56, :57, :58, :59, 11:00, :01, :02.
Оформление
Если отметок много и они переносятся в две строки, лучше снизить число отметок, а не переносить.
Текст подписи выравнивает по центру, сама подпись — по пеньку.
Между отметками должен быть минимальный отступ в 16 пк, если отступ будет меньше, то отметки слипнутся.
Края интервала
Когда левая и правая границы важны, нужно подписать эти отметки явно. Скорей всего для этого придется убрать подписи у ближайших отметок: отметки 6:00 (между 3:52 и 8:00) и 2:00 (между 00:00 и 3:12) как бы должны быть, но не влезли:
Если явно задана только левая, а правая — сейчас, то правую можно не подписывать:
Если края не принципиальны, то можно не подписывать оба конца:
Примеры
Примеры того, что получится, если воспользоваться рекомендациями:
Если применить все рекомендации к примеру из начала поста, то получится как-то так:
Выводы простые: не доверяйте программе ставить отметки как получится, скорей всего получится плохо.