Владимир Гриненко "Верстка для touch-устройст (webkit)"

65
Я.Субботник, Киев, 28 мая 2011 года Разработчик интерфейсов Владимир Гриненко Верстка для touchустройств (webkit) на примере главной страницы Яндекса

Upload: yandex

Post on 27-Jun-2015

1.123 views

Category:

Technology


0 download

DESCRIPTION

28 мая 2011, Я.Субботник в Киеве Владимир Гриненко "Верстка для touch-устройст (webkit)" О докладе: В докладе будет рассмотрена разработка сайтов для touch-устройств и разобраны особенности, с которыми пришлось столкнуться при создании touch-версии главной страницы Яндекса. Стоит ли делать отдельную версию сайта для touch-устройств? Какие особенности необходимо учитывать при проектировании интерфейса? Какие технологии можно использовать? С какими подводными камнями можно столкнуться и как их обойти? Какие перспективы можно ожидать в этой отрасли?

TRANSCRIPT

Page 1: Владимир Гриненко "Верстка для touch-устройст (webkit)"

Я.Субботник,  Киев,  28  мая  2011  года

Разработчик  интерфейсовВладимир  Гриненко

Верстка  для  touch-­‐устройств  (webkit)на  примере  главной  страницы  Яндекса

Page 2: Владимир Гриненко "Верстка для touch-устройст (webkit)"

www.yandex.ru

2

Page 3: Владимир Гриненко "Верстка для touch-устройст (webkit)"

3

Привычно

Page 4: Владимир Гриненко "Верстка для touch-устройст (webkit)"

4

Для  телефонов

Page 5: Владимир Гриненко "Верстка для touch-устройст (webkit)"

5

Для  телефонов

Page 6: Владимир Гриненко "Верстка для touch-устройст (webkit)"

6

Для  смартфонов

Page 7: Владимир Гриненко "Верстка для touch-устройст (webkit)"

Кому  это  нужно?

7

Page 8: Владимир Гриненко "Верстка для touch-устройст (webkit)"

8

20071  389  000

200811  625  000

200920  731  000

Продажи  iPhone

Page 9: Владимир Гриненко "Верстка для touch-устройст (webkit)"

8

20071  389  000

200811  625  000

200920  731  000

Продажи  iPhone

Page 10: Владимир Гриненко "Верстка для touch-устройст (webkit)"

8

20071  389  000

200811  625  000

200920  731  000

Продажи  iPhone

Page 11: Владимир Гриненко "Верстка для touch-устройст (webkit)"

9

201039  989  000

201111  625  000

И  это  только  за  два  квартала!

Продажи  iPhone

Page 12: Владимир Гриненко "Верстка для touch-устройст (webkit)"

9

201039  989  000

201111  625  000

И  это  только  за  два  квартала!

Продажи  iPhone

Page 13: Владимир Гриненко "Верстка для touch-устройст (webkit)"

9

201039  989  000

201111  625  000

И  это  только  за  два  квартала!

Продажи  iPhone

Page 14: Владимир Гриненко "Верстка для touch-устройст (webkit)"

10

108  624  000

Page 15: Владимир Гриненко "Верстка для touch-устройст (webkit)"

11

Обогнали  iPhone

+  400  000  каждый  день*

*  h9p://googleblog.blogspot.com/2011/05/android-­‐momentum-­‐mobile-­‐and-­‐more-­‐at.html

Android

Page 16: Владимир Гриненко "Верстка для touch-устройст (webkit)"

11

Обогнали  iPhone

+  400  000  каждый  день*

*  h9p://googleblog.blogspot.com/2011/05/android-­‐momentum-­‐mobile-­‐and-­‐more-­‐at.html

Android

Page 17: Владимир Гриненко "Верстка для touch-устройст (webkit)"

Что  же  делать?

12

Page 18: Владимир Гриненко "Верстка для touch-устройст (webkit)"

13

Можно  не  париться

Page 19: Владимир Гриненко "Верстка для touch-устройст (webkit)"

14

Можно  использовать  отдельные  стили

@media only screen and(max-device-width: 480px){ }

Page 20: Владимир Гриненко "Верстка для touch-устройст (webkit)"

15

И  для  Remna

iPhone  3Gs iPhone  4

Page 21: Владимир Гриненко "Верстка для touch-устройст (webkit)"

16

И  для  Remna

@mediaonly screen and (-webkit-min-device-pixel-ratio: 1.5),only screen and (-o-min-device-pixel-ratio: 3/2),only screen and (min-device-pixel-ratio: 1.5){

}

Page 22: Владимир Гриненко "Верстка для touch-устройст (webkit)"

17

Из  JavaScript

var ios,android,match;

if (match = ua.match(/(Android)\s+([\d.]+)/)) { android = match[2];} else if (match = ua.match(/(iPhone\sOS)\s([\d_]+)/)){ ios = match[2].replace(/_/g, '.');}

Page 23: Владимир Гриненко "Верстка для touch-устройст (webkit)"

18

Meta:  настраиваем  масштаб

<meta name="viewport" content="width=device-width, initial-scale=1.0">

Page 24: Владимир Гриненко "Верстка для touch-устройст (webkit)"

19

Иконка  для  Home  screen

<link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/h/apple-touch-icon.png">

<link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/m/apple-touch-icon.png">

<link rel="apple-touch-icon-precomposed" href="img/l/apple-touch-icon.png">

iPhone  4

iPad  первого  поколения

iPhone  ,  iPod  Touch,  and  Android  2.1+

Page 25: Владимир Гриненко "Верстка для touch-устройст (webkit)"

20

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

Page 26: Владимир Гриненко "Верстка для touch-устройст (webkit)"

21

Другой  user-­‐experienceЗачем?

―пальцы  VS  мышь

―3.5"  VS  22"

―два  режима:  portrait  и  landscape

Page 27: Владимир Гриненко "Верстка для touch-устройст (webkit)"

21

Другой  user-­‐experienceЗачем?

―пальцы  VS  мышь

―3.5"  VS  22"

―два  режима:  portrait  и  landscape

Page 28: Владимир Гриненко "Верстка для touch-устройст (webkit)"

21

Другой  user-­‐experienceЗачем?

―пальцы  VS  мышь

―3.5"  VS  22"

―два  режима:  portrait  и  landscape

Page 29: Владимир Гриненко "Верстка для touch-устройст (webkit)"

22

Радость

―HTML5

―CSS3

―поддержка  touch-­‐событий

―точная  геолокация

―шрифты

―SVG

Page 30: Владимир Гриненко "Верстка для touch-устройст (webkit)"

22

Радость

―HTML5

―CSS3

―поддержка  touch-­‐событий

―точная  геолокация

―шрифты

―SVG

Page 31: Владимир Гриненко "Верстка для touch-устройст (webkit)"

22

Радость

―HTML5

―CSS3

―поддержка  touch-­‐событий

―точная  геолокация

―шрифты

―SVG

Page 32: Владимир Гриненко "Верстка для touch-устройст (webkit)"

22

Радость

―HTML5

―CSS3

―поддержка  touch-­‐событий

―точная  геолокация

―шрифты

―SVG

Page 33: Владимир Гриненко "Верстка для touch-устройст (webkit)"

22

Радость

―HTML5

―CSS3

―поддержка  touch-­‐событий

―точная  геолокация

―шрифты

―SVG

Page 34: Владимир Гриненко "Верстка для touch-устройст (webkit)"

22

Радость

―HTML5

―CSS3

―поддержка  touch-­‐событий

―точная  геолокация

―шрифты

―SVG

Page 35: Владимир Гриненко "Верстка для touch-устройст (webkit)"

23

Печаль

―Android

―Opera  Mobile

―скорость  рендеринга

Page 36: Владимир Гриненко "Верстка для touch-устройст (webkit)"

23

Печаль

―Android

―Opera  Mobile

―скорость  рендеринга

Page 37: Владимир Гриненко "Верстка для touch-устройст (webkit)"

23

Печаль

―Android

―Opera  Mobile

―скорость  рендеринга

Page 38: Владимир Гриненко "Верстка для touch-устройст (webkit)"

24

Особенности

―очень  ограничен  кэш

―нет  поддержки  flash

―нет  полноценного  posi`on:  fixed

Page 39: Владимир Гриненко "Верстка для touch-устройст (webkit)"

24

Особенности

―очень  ограничен  кэш

―нет  поддержки  flash

―нет  полноценного  posi`on:  fixed

Page 40: Владимир Гриненко "Верстка для touch-устройст (webkit)"

24

Особенности

―очень  ограничен  кэш

―нет  поддержки  flash

―нет  полноценного  posi`on:  fixed

Page 41: Владимир Гриненко "Верстка для touch-устройст (webkit)"

Радости  и  печали  наwww.yandex.ru

25

Page 42: Владимир Гриненко "Верстка для touch-устройст (webkit)"

26

www.yandex.ru  для  iPhone

Page 43: Владимир Гриненко "Верстка для touch-устройст (webkit)"

27

CSS3  100%

Page 44: Владимир Гриненко "Верстка для touch-устройст (webkit)"

28

Вендорные  префиксыТени,  градиенты,  уголки

-webkit-

Не  нужны  (пока!)  -­‐moz-­‐,  -­‐ie-­‐,…

Только

Page 45: Владимир Гриненко "Верстка для touch-устройст (webkit)"

29

Круглые  уголки

-webkit-border-radius: 8px;

-webkit-border-radius: 7px;

-webkit-background-clip: padding-box;

Page 46: Владимир Гриненко "Верстка для touch-устройст (webkit)"

30

Иконки

―SVG

―data-­‐uri

―mul`ple  background

Page 47: Владимир Гриненко "Верстка для touch-устройст (webkit)"

30

Иконки

―SVG

―data-­‐uri

―mul`ple  background

Page 48: Владимир Гриненко "Верстка для touch-устройст (webkit)"

30

Иконки

―SVG

―data-­‐uri

―mul`ple  background

Page 49: Владимир Гриненко "Верстка для touch-устройст (webkit)"

31

o_0

background:

url(http://img.yandex.net/i/mobile/apps/lentochka.svg) no-repeat right 0,

url(data:image/png;base64,iVBORw0KGgoAAAANdkeXHJZTwAAAAASUVORK5CYII=) no-repeat center 15px,

-webkit-gradient(linear, 0 0, 0 bottom, from(#fff), to(#e5e5e5))

Page 50: Владимир Гриненко "Верстка для touch-устройст (webkit)"

31

o_0

background:

url(http://img.yandex.net/i/mobile/apps/lentochka.svg) no-repeat right 0,

url(data:image/png;base64,iVBORw0KGgoAAAANdkeXHJZTwAAAAASUVORK5CYII=) no-repeat center 15px,

-webkit-gradient(linear, 0 0, 0 bottom, from(#fff), to(#e5e5e5))

Page 51: Владимир Гриненко "Верстка для touch-устройст (webkit)"

31

o_0

background:

url(http://img.yandex.net/i/mobile/apps/lentochka.svg) no-repeat right 0,

url(data:image/png;base64,iVBORw0KGgoAAAANdkeXHJZTwAAAAASUVORK5CYII=) no-repeat center 15px,

-webkit-gradient(linear, 0 0, 0 bottom, from(#fff), to(#e5e5e5))

Page 52: Владимир Гриненко "Верстка для touch-устройст (webkit)"

31

o_0

background:

url(http://img.yandex.net/i/mobile/apps/lentochka.svg) no-repeat right 0,

url(data:image/png;base64,iVBORw0KGgoAAAANdkeXHJZTwAAAAASUVORK5CYII=) no-repeat center 15px,

-webkit-gradient(linear, 0 0, 0 bottom, from(#fff), to(#e5e5e5))

Page 53: Владимир Гриненко "Верстка для touch-устройст (webkit)"

32

«Найти»

.b-button:after{background: -webkit-gradient(linear, 0 0, 100% 100%, from(#fff), to(#c8c8c8));-webkit-transform: rotate(45deg) skew(18deg, 18deg);-webkit-box-shadow: 0 0 1px #aaa;}

Page 54: Владимир Гриненко "Верстка для touch-устройст (webkit)"

33

Геолокация

navigator.geolocation.getCurrentPosition(successCallback, errorCallback, timeout);

Page 55: Владимир Гриненко "Верстка для touch-устройст (webkit)"

33

Геолокация

navigator.geolocation.getCurrentPosition(successCallback, errorCallback, timeout);

Page 56: Владимир Гриненко "Верстка для touch-устройст (webkit)"

34

Отдельная  модификация  для  AndroidПечаль

Page 57: Владимир Гриненко "Верстка для touch-устройст (webkit)"

35

СравнимПечаль

Page 58: Владимир Гриненко "Верстка для touch-устройст (webkit)"

Рецепты

36

Page 59: Владимир Гриненко "Верстка для touch-устройст (webkit)"

37

CSSРецепты

-webkit-text-size-adjust: none;

Отключить  автоматическое  изменение  размера  шрифта

-webkit-tap-highlight-color: rgba(0, 0, 0, 0);

Отключить  цветную  обводку  активных  элементов

Page 60: Владимир Гриненко "Верстка для touch-устройст (webkit)"

38

CSSРецепты

-webkit-user-select: none;

Запретить  выделять  текст

-webkit-touch-callout: none;

Запретить  всплывающие  системные  меню

Page 61: Владимир Гриненко "Верстка для touch-устройст (webkit)"

39

MetaРецепты

<meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=2; user-scalable=1;">

Ограничить  изменение  масштаба  до  х2

<meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1; user-scalable=0;" />

Запретить  изменение  масштаба

Page 62: Владимир Гриненко "Верстка для touch-устройст (webkit)"

40

iOS  Simulator:  жизнь  без  iPhoneРецепты

Page 64: Владимир Гриненко "Верстка для touch-устройст (webkit)"

Вопросы?

42

Page 65: Владимир Гриненко "Верстка для touch-устройст (webkit)"

Разработчик  интерфейсов

tadatuta@yandex-­‐team.ru

Владимир  Гриненко