MacOS Driven Development

Никита Дубко, Яндекс

MacOS Driven Development


   ___  ___           _____ _____  ______      _
   |  \/  |          |  _  /  ___| |  _  \    (_)
   | .  . | __ _  ___| | | \ `--.  | | | |_ __ ___   _____ _ __
   | |\/| |/ _` |/ __| | | |`--. \ | | | | '__| \ \ / / _ \ '_ \
   | |  | | (_| | (__\ \_/ /\__/ / | |/ /| |  | |\ V /  __/ | | |
   \_|  |_/\__,_|\___|\___/\____/  |___/ |_|  |_| \_/ \___|_| |_|

   ______               _                                  _
   |  _  \             | |                                | |
   | | | |_____   _____| | ___  _ __  _ __ ___   ___ _ __ | |_
   | | | / _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __|
   | |/ /  __/\ V /  __/ | (_) | |_) | | | | | |  __/ | | | |_
   |___/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__|
                               | |
                               |_|

Никита Дубко

разработчик интерфейсов, Яндекс

2014 год

Youtube: Mac vs PC
Developer Survey Results 2018
radar.yandex.ru/desktop

UX

Горизонтальный
скролл

.header::after {
    content: '';
    width: 100vw;
    position: absolute;
    bottom: -1px;
    left: 50%;
    transform: translateX(-50%);
    border-bottom: 1px solid #d6d8d9;
}
.header::after {
    content: '';
    width: 100vw;
    position: absolute;
    bottom: -1px;
    left: 50%;
    transform: translateX(-50%);
    border-bottom: 1px solid #d6d8d9;
}

width: 100vw

bitsofco.de/viewport-vs-percentage-units/
Scroll to the future

Ретина

iPhone 4
2dppx
iPhone X
3dppx
Samsung Galaxy S8
4dppx
59 КБ
203 КБ
<picture>
    <source type="image/webp"
            srcset="img-mobile@1x.webp 1x,
                    img-mobile@2x.webp 2x">
    <img src="img-mobile@1x.jpg"
         srcset="img-mobile@2x.jpg 2x"
         alt="Привет, мир!">
</picture>
.bg {
    background-image: url('img/bg@1x.jpg');
}

@media (-webkit-min-device-pixel-ratio: 2),
       (min-resolution: 192dpi),
       (min-resolution: 2dppx) {
    .bg {
        background-image: url('img/bg@2x.jpg');
    }
}

Крестик

1984, Macintosh System 1

1985, Windows 1.01

1993, NCSA Mosaic for Windows

1995, Windows 95

1995, Internet Explorer 95

2001, Mac OS X 10.0 Cheetah

en.wikipedia.org/wiki/Pop-up_ad

Пользовательские привычки

var OSName = "Unknown";
if (window.navigator.userAgent.indexOf("Windows NT 10.0")!= -1) OSName="Windows 10";
if (window.navigator.userAgent.indexOf("Windows NT 6.2") != -1) OSName="Windows 8";
if (window.navigator.userAgent.indexOf("Windows NT 6.1") != -1) OSName="Windows 7";
if (window.navigator.userAgent.indexOf("Windows NT 6.0") != -1) OSName="Windows Vista";
if (window.navigator.userAgent.indexOf("Windows NT 5.1") != -1) OSName="Windows XP";
if (window.navigator.userAgent.indexOf("Windows NT 5.0") != -1) OSName="Windows 2000";
if (window.navigator.userAgent.indexOf("Mac")            != -1) OSName="Mac/iOS";
if (window.navigator.userAgent.indexOf("X11")            != -1) OSName="UNIX";
if (window.navigator.userAgent.indexOf("Linux")          != -1) OSName="Linux";

В мире
около 15% левшей

Design Guides

Не используйте модальные окна на мобильных!

Порядок кнопок

Порядок кнопок в macOS

  1. [Применить]
  2. Отмена
  3. Действие
Human Interface Guidelines

Порядок кнопок в Windows

  1. Действие
  2. Отмена
  3. [Применить]
  4. [Получить помощь]
Windows Dev Center

Общие принципы

Пару слов об А:Б тестировании в Яндексе — Сергей Мыц, Данил Валгушев

Баги

Баги флексбокса

github.com/philipwalton/flexbugs

Доли браузеров (февраль 2019)

w3counter.com/globalstats.php

Шрифты

Шрифты по умолчанию

ОС Системный шрифт
Mac OS X El CapitanSan Francisco
Mac OS X YosemiteHelvetica Neue
Mac OS X MavericksLucida Grande
  
Windows Vista+Segoe UI
Windows XPTahoma
css-tricks.com/snippets/css/system-font-stack

Pixel Perfect

MacOS Driven Development


    _    _ _           _                    ______      _
   | |  | (_)         | |                   |  _  \    (_)
   | |  | |_ _ __   __| | _____      _____  | | | |_ __ ___   _____ _ __
   | |/\| | | '_ \ / _` |/ _ \ \ /\ / / __| | | | | '__| \ \ / / _ \ '_ \
   \  /\  / | | | | (_| | (_) \ V  V /\__ \ | |/ /| |  | |\ V /  __/ | | |
    \/  \/|_|_| |_|\__,_|\___/ \_/\_/ |___/ |___/ |_|  |_| \_/ \___|_| |_|

   ______               _                                  _
   |  _  \             | |                                | |
   | | | |_____   _____| | ___  _ __  _ __ ___   ___ _ __ | |_
   | | | / _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __|
   | |/ /  __/\ V /  __/ | (_) | |_) | | | | | |  __/ | | | |_
   |___/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__|
                               | |
                               |_|

Никита Дубко

разработчик интерфейсов, Яндекс

Клавиатурные сокращения

document.addEventListener("keydown", function(e) {
    var isMac = window.navigator.platform.match("Mac");
    if ((isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 67) {
        e.preventDefault();
        // обработка Ctrl/Cmd + C
    }
}, false);
michilehr.de/overwrite-cmds-and-ctrls-in-javascript/

Что делать?

Тестировщики

Отдельное устройство для тестирования

Две параллельные системы

Разрабатывать сразу на Windows

Наша работа — решать задачи
бизнеса

Исследуйте свою аудиторию

Спасибо за внимание!

mefody.github.io/talks/mdd/
@dark_mefody
mefody@yandex-team.ru