54
Адаптивный веб-дизайн на практике Антон Епрев [email protected] il.ru

Адаптивный веб-дизайн на практике (Антон Епрев)

  • Upload
    ontico

  • View
    2.255

  • Download
    8

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Адаптивный веб-дизайн на практике (Антон Епрев)

Адаптивный веб-дизайнна практике

Антон Епрев[email protected]

Page 2: Адаптивный веб-дизайн на практике (Антон Епрев)

goo.gl/YFsuS

2

Page 3: Адаптивный веб-дизайн на практике (Антон Епрев)

Responsive Web Designo Резиновая версткаo Плавающие изображенияo Медиа-запросы

3

Page 4: Адаптивный веб-дизайн на практике (Антон Епрев)

goo.gl/rCZ4Z

4

Page 5: Адаптивный веб-дизайн на практике (Антон Епрев)

Mobile FirstИспользование мобильного интернета удваивается с каждым годом [goo.gl/F17AD]

В рунете 10% посещений приходятся на мобильные устройства [goo.gl/fBLCF]

5

Page 6: Адаптивный веб-дизайн на практике (Антон Епрев)

Mobile Firsto Фокус на главномo Полнофункциональная мобильная версияo Рабочая большая версия

6

Page 7: Адаптивный веб-дизайн на практике (Антон Епрев)

Мобильные браузеры

goo.gl/vfs1d7

Page 8: Адаптивный веб-дизайн на практике (Антон Епрев)

Классы поддержки браузеровGraded Browser Support [goo.gl/3vbtC]

C: IE7-A: IE8/9, Chrome, Safari, Firefox, Opera,

Opera Mobile, Opera Mini 4/6X: Chrome 12, Firefox 4, Opera 10

8

Page 9: Адаптивный веб-дизайн на практике (Антон Епрев)
Page 10: Адаптивный веб-дизайн на практике (Антон Епрев)

Отрубаем концы<!DOCTYPE html><html><head> <!--[if !(IE)|(gte IE 8)]><!--> <link type="text/css" ... /> <script ...></script> <!--<![endif]--></head><body> ...</body></html>

10

Page 11: Адаптивный веб-дизайн на практике (Антон Епрев)

Progressive Enhancement+ Гарантированная работа сервиса в

любом устройстве+ Возможность выкатывать новые

изменения раньше– Сложность реализации

11

Page 12: Адаптивный веб-дизайн на практике (Антон Епрев)

12

Page 13: Адаптивный веб-дизайн на практике (Антон Епрев)

Требования к веб-дизайнуo«Pixel-perfect»oПоддержка touch-устройствoМинимальное поддерживаемое

разрешение 240px

13

Page 14: Адаптивный веб-дизайн на практике (Антон Епрев)

14

Page 15: Адаптивный веб-дизайн на практике (Антон Епрев)

15

Page 16: Адаптивный веб-дизайн на практике (Антон Епрев)

16

Page 17: Адаптивный веб-дизайн на практике (Антон Епрев)

Настрой Viewport<meta name="viewport" content=" width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0" />

17

Page 18: Адаптивный веб-дизайн на практике (Антон Епрев)

Поддержка:hovervar touch = 'ontouchstart' in window;$('html').addClass( touch ? 'touch-yes' : 'touch-no');

.touch-no .item .item__link { display: none;}.touch-no .item:hover .item__link { display: block;}

18

Page 19: Адаптивный веб-дизайн на практике (Антон Епрев)

Определение возможностейvar video = !!document.createElement('video').canPlayType;

var flash = (typeof navigator.plugins['Shockwave Flash'] == 'object');

if (!flash && typeof window.ActiveXObject != 'undefined') try { new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); flash = true; } catch (e) {}

19

Page 20: Адаптивный веб-дизайн на практике (Антон Епрев)

Отлавливаем scroll<ul class="feed"> <li class="feed__item">...</li> <!-- ... --> <li class="feed__next-page">...</li></ul>

.feed__next-page { display: block; }

$(document).one('scroll', function() { $('.feed__next-page').hide();});

20

Page 21: Адаптивный веб-дизайн на практике (Антон Епрев)

Desktop vs. Mobile

21

Page 22: Адаптивный веб-дизайн на практике (Антон Епрев)

Облегчаем функционалvar desktop = screen.width > 768 && !touch;

$('.button').click(function (e) { if (desktop) { e.preventDefault(); // AJAX }});

22

Page 23: Адаптивный веб-дизайн на практике (Антон Епрев)
Page 24: Адаптивный веб-дизайн на практике (Антон Епрев)

Задача

24

Page 25: Адаптивный веб-дизайн на практике (Антон Епрев)

Каркас<a href="#" class="button"> <span class="button__inner"></span></a>

.button { // Sass (SCSS) padding: $border-width; height: $height - $border-width * 2;}.button__inner { line-height: $height - $border-width * 2;}

25

Page 26: Адаптивный веб-дизайн на практике (Антон Епрев)

<a href="#" class="button"> <span class="button__inner"> <img src="empty.png" class="button__icon" alt="Icon" /> </span></a>

.button__icon { width: ...; height: ...; background:...;}

IE6: Chrome:

26

Page 27: Адаптивный веб-дизайн на практике (Антон Епрев)

<a href="#" class="button"> <span class="button__inner"> <img src="empty.png" class="button__icon" alt="Icon" /> </span></a>

.button__icon { width: ...; height: ...; background:...;}

IE6: Chrome:

27

Page 28: Адаптивный веб-дизайн на практике (Антон Епрев)

<a href="#" class="button"> <span class="button__inner"> <i class="button__icon">Icon</i> </span></a>

.button__icon { ... text-indent: -9999px;}

IE6: Chrome:

28

Page 29: Адаптивный веб-дизайн на практике (Антон Епрев)

<a href="#" class="button"> <span class="button__inner"> <i class="button__icon">Icon</i> <u class="button__text">Text</u> </span></a>

<button class="button"> <span class="button__inner"> <i class="button__icon">Icon</i> <u class="button__text">Text</u> </span></button>

29

Page 30: Адаптивный веб-дизайн на практике (Антон Епрев)

.button { height: $height - $border-width * 2;}

.button { @include box-sizing(content-box); height: $height - $border-width * 2;}

<A> <BUTTON>

30

Page 31: Адаптивный веб-дизайн на практике (Антон Епрев)

.button { height: $height - $border-width * 2;}

.button { @include box-sizing(content-box); height: $height - $border-width * 2;}

<A> <BUTTON>

31

Page 32: Адаптивный веб-дизайн на практике (Антон Епрев)

Opera Mini и line-height.button__inner { line-height: $height - $border-width * 2;}

<A> <BUTTON>

32

Page 33: Адаптивный веб-дизайн на практике (Антон Епрев)

Opera Mini и line-height.button__inner { line-height: 1; // сбрасываем для всех padding: ( $height - $border-width * 2 - $font-size )/2 0; height: $font-size;}

<A> <BUTTON>

33

Page 34: Адаптивный веб-дизайн на практике (Антон Епрев)

Handheld!Режимы Opera Mini:o Desktopo Mobile

См. goo.gl/XixDM

34

Page 35: Адаптивный веб-дизайн на практике (Антон Епрев)

Handheld!Режимы Opera Mini:o Desktopo Mobile

См. goo.gl/XixDM

35

Page 36: Адаптивный веб-дизайн на практике (Антон Епрев)

Handheld!Режимы Opera Mini:o Desktopo Mobile

См. goo.gl/XixDM

36

Page 37: Адаптивный веб-дизайн на практике (Антон Епрев)

<link href="..." rel="stylesheet" type="text/css" media="all"/>

<link href="..." rel="stylesheet" type="text/css" media="all, handheld"/>

37

Page 38: Адаптивный веб-дизайн на практике (Антон Епрев)

<link href="..." rel="stylesheet" type="text/css" media="all"/>

<link href="..." rel="stylesheet" type="text/css" media="all, handheld"/>

38

Page 39: Адаптивный веб-дизайн на практике (Антон Епрев)

@media screen and (max-width: 320px) { .button__text { display: none; }}

39

Page 40: Адаптивный веб-дизайн на практике (Антон Епрев)

Handheld!@media screen and (max-width: 320px) { .button__text { display: none; }}

@media handheld, screen and (max-width: 320px) { .button__text { display: none; }}

40

Page 41: Адаптивный веб-дизайн на практике (Антон Епрев)

Handheld!@media screen and (max-width: 320px) { .button__text { display: none; }}

@media handheld, screen and (max-width: 320px) { .button__text { display: none; }}

41

Page 42: Адаптивный веб-дизайн на практике (Антон Епрев)

Handheld!@media screen and (max-width: 320px) { .button__text { display: none; }}

@media all and (max-width: 320px) { .button__text { display: none; }}

42

Page 43: Адаптивный веб-дизайн на практике (Антон Епрев)

Особенности click в iOS<a class="button">...</a>

.button { ...}

$('body').delegate( '.button', 'click', function () { // :) });

43

Page 44: Адаптивный веб-дизайн на практике (Антон Епрев)

Особенности click в iOS<div class="button">...</div>

.button { ...}

$('body').delegate( '.button', 'click', function () { // :( });

44

Page 45: Адаптивный веб-дизайн на практике (Антон Епрев)

Особенности click в iOS<div class="button">...</div>

.button { cursor: pointer;}

$('body').delegate( '.button', 'click', function () { // :) });

45

Page 46: Адаптивный веб-дизайн на практике (Антон Епрев)

Особенности click в iOS<div class="button">...</div>

.button { cursor: pointer;}

$('body').delegate( '.button', 'click', function () { // :) });

46

Page 47: Адаптивный веб-дизайн на практике (Антон Епрев)

Ни жив, не мёртв…o {position: fixed}

iOS 5, Android 3, Opera Mobile

o {overflow: scroll}iOS 5, Android 3.2

o Opera Mini: JavaScriptСм. goo.gl/XixDM

47

Page 48: Адаптивный веб-дизайн на практике (Антон Епрев)

Средства разработчикаo iOS Simulatoro Opera Mobile Emulator [goo.gl/QIkmf]o Opera Mini Online Simulator [goo.gl/fHEv4]o Opera Remote Debuggingo Weinre [goo.gl/TmXxo]o Adobe Shadow [goo.gl/hfN6Y]

48

Page 49: Адаптивный веб-дизайн на практике (Антон Епрев)

49

Page 50: Адаптивный веб-дизайн на практике (Антон Епрев)

50

Page 51: Адаптивный веб-дизайн на практике (Антон Епрев)

51

Page 52: Адаптивный веб-дизайн на практике (Антон Епрев)

52

Page 53: Адаптивный веб-дизайн на практике (Антон Епрев)

53

Page 54: Адаптивный веб-дизайн на практике (Антон Епрев)

Q&A

Антон Епрев[email protected]