93

сумин андрей

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: сумин андрей
Page 2: сумин андрей

2

Page 3: сумин андрей

3

Page 4: сумин андрей

4

Page 5: сумин андрей

5

Page 6: сумин андрей

6

Page 7: сумин андрей

7

— Легко поддерживать

Page 8: сумин андрей

8

— Легко поддерживать

— Легко добавлять темы

Page 9: сумин андрей

9

— Легко поддерживать

— Легко добавлять темы

— Дешево добавлять темы

Page 10: сумин андрей

10

Независимые блоки

Page 11: сумин андрей

11

/css

/blocks

/messages

...

Page 12: сумин андрей

12

/css

/blocks

/messages

...

/pages

main.css

Page 13: сумин андрей

13

Тема:

Page 14: сумин андрей

14

Тема:

— фоны

Page 15: сумин андрей

15

Тема:

— фоны

— цвета

Page 16: сумин андрей

16

Тема:

— фоны

— цвета

— шрифты

Page 17: сумин андрей

17

Тема:

— фоны

— цвета

— шрифты

— отступы, границы

Page 18: сумин андрей

18

Геометрия отдельно от оформления

Page 19: сумин андрей

19

/css

/blocks

/messages

/themes

/theme

Page 20: сумин андрей

20

/default

/messages

Page 21: сумин андрей

21

/default

/messages

default.scss

Page 22: сумин андрей

22

/default

/messages

default.scss

default.vars.scss

Page 23: сумин андрей

23

/default

/messages

default.scss

default.vars.scss

/theme

theme.scss

Page 24: сумин андрей

24

/default

/messages

default.scss

default.vars.scss

/theme

theme.scss

theme.vars.scss

Page 25: сумин андрей

25

SASS

Page 26: сумин андрей

26

/css/blocks/messages/messages.scss

.messages{

padding:20px;

}

Page 27: сумин андрей

27

/css/blocks/messages/messages.scss

.messages{

padding:20px;

}

/css/pages/mail.scss

@import url(../messages/messages.scss);

Page 28: сумин андрей

28

/css/themes/default/messages/messages.scss

.messages{

background:$messages-background;

}

Page 29: сумин андрей

29

/css/themes/default/messages/messages.scss

.messages{background:$messages-background;}

/css/blocks/default/default.scss

@import url(messages/messages.scss);

Page 30: сумин андрей

30

/css/themes/default/messages/messages.scss

.messages{background:$messages-background;}

/css/blocks/default/default.scss

@import url(messages/messages.scss);

Page 31: сумин андрей

31

/css/themes/theme/theme.vars.scss

$messages-background: #FFF;

Page 32: сумин андрей

32

/css/themes/theme/theme.vars.scss

$messages-background: #FFF;

/css/themes/theme/theme.scss

@import url(theme.vars.scss);

Page 33: сумин андрей

33

/css/themes/theme/theme.vars.scss

$messages-background: #FFF;

/css/themes/theme/theme.scss

@import url(theme.vars.scss);

@import url(../default/default.scss);

Page 34: сумин андрей

34

/css/pages/mail.css

/css/themes/theme/theme.css

Page 35: сумин андрей

35

mixin

Page 36: сумин андрей

36

Page 37: сумин андрей

37

url("data:image/…") repeat-x scroll 0 top,

url("data:image/…") repeat-x scroll 0 bottom,

url("data:image/…") repeat-y scroll right top,

url("data:image/…") repeat-y scroll 0 top,

none repeat scroll 0 0 white

Page 38: сумин андрей

38

Page 39: сумин андрей

39

none repeat scroll 0 0 white

Page 40: сумин андрей

40

background: url(...), url(..), color url(datauri)

Page 41: сумин андрей

41

background: color url(datauri);

background: url(...), url(..), color url(datauri)

Page 42: сумин андрей

42

background: color url(datauri);

background: url(...), url(..), color url(datauri)

*background: color url(link)

Page 43: сумин андрей

43

.block {

background: $block--bg1, $block--bg2;

}

Page 44: сумин андрей

44

.block {

background: $block--background;

}

Page 45: сумин андрей

45

Список

color url() no-repeat left top

Page 46: сумин андрей

46

Двухуровневый список

url() no-repeat left top,

url() no-repeat left top,

color url() no-repeat left top

Page 47: сумин андрей

47

Ключ

Page 48: сумин андрей

48

фон как есть

Page 49: сумин андрей

49

фон как есть

+ фолбэк на старые браузеры

Page 50: сумин андрей

50

фон как есть

+ фолбэк на старые браузеры

+ фолбэк на старых ИЕ

Page 51: сумин андрей

51

url(), color, <key>

Page 52: сумин андрей

52

нет ключа

Page 53: сумин андрей

53

нет ключа

--multiback

Page 54: сумин андрей

54

нет ключа

--multiback

--multiback-ie

Page 55: сумин андрей

55

@mixin multibackground($bgs){

}

Page 56: сумин андрей

56

@mixin multibackground($bgs){

$flag: nth($bgs, length($bgs));

}

Page 57: сумин андрей

57

@mixin multibackground($bgs){

$flag: nth($bgs, length($bgs));

@if $flag == "--multiback" {}

}

Page 58: сумин андрей

58

@mixin multibackground($bgs){

$flag: nth($bgs, length($bgs));

@if $flag == "--multiback" {}

@else if $flag == "--multiback-ie" {}

}

Page 59: сумин андрей

59

@mixin multibackground($bgs){

$flag: nth($bgs, length($bgs));

@if $flag == "--multiback" {}

@else if $flag == "--multiback-ie" {}

@else {}

}

Page 60: сумин андрей

60

@mixin multibackground($bgs){

$flag: nth($bgs, length($bgs));

@if $flag == "--multiback" {…}

@else if $flag == "--multiback-ie" {}

@else {}

}

Page 61: сумин андрей

61

background: nth($bgs,length($bgs) - 1);

@include _multiback($bgs, 1);

Page 62: сумин андрей

62

@mixin multibackground($bgs){

$flag: nth($bgs, length($bgs));

@if $flag == "--multiback" {}

@else if $flag == "--multiback-ie" {…}

@else {}

}

Page 63: сумин андрей

63

background: nth($bgs, length($bgs) - 2);

@include _multiback($bgs, 2);

*background: nth($bgs, length($bgs) - 1);

Page 64: сумин андрей

64

@mixin multibackground($bgs){

$flag: nth($bgs, length($bgs));

@if $flag == "--multiback" {}

@else if $flag == "--multiback-ie" {}

@else {…}

}

Page 65: сумин андрей

65

background: $bgs;

Page 66: сумин андрей

66

16

Page 67: сумин андрей

67

Переключение тем

Page 68: сумин андрей

68

deferred

Page 69: сумин андрей

69

$.when(

AJAX.post(...),

switchThemeCss(themeId)

);

Page 70: сумин андрей

70

Проверка загрузки

Page 71: сумин андрей

71

jquery.getCSS

Page 72: сумин андрей

72

id темы

Page 73: сумин андрей

73

content font-family

Page 74: сумин андрей

74

IE:

content: undefined

font-family: 'some_data'

css data: 'some_data'

Page 75: сумин андрей

75

content + font-family

Page 76: сумин андрей

76

OPERA

content: "some_data"

font-family: "Times New Roman"

css data: "some_data"

Page 77: сумин андрей

77

content + font-family

Page 78: сумин андрей

78

function switchThemeCss (themeId){

var url = getThemeCssUrl(themeId);

}

Page 79: сумин андрей

79

function switchThemeCss (themeId){

var url = getThemeCssUrl(themeId);

$.getCSS(url, function(link){ … });

}

Page 80: сумин андрей

80

function switchThemeCss (themeId){

var deferred = $.Deferred();

var url = getThemeCssUrl(themeId);

$.getCSS(url, function(link){ … });

return deferred;

}

Page 81: сумин андрей

81

function switchThemeCss (themeId){

var deferred = $.Deferred();

var url = getThemeCssUrl(themeId);

$.getCSS(url, function(link){ … });

return deferred.promise();

}

Page 82: сумин андрей

82

if (getApplyedThemeId() !== oldThemeId){

$Theme.remove(); $Theme = $(link);

deferred.resolve();

} else {

$(link).remove();

deferred.reject();

}

Page 83: сумин андрей

83

Config

Page 84: сумин андрей

84

t1026 : {

title : 'Роботы',

text : 'Поздравляем!'

}

Page 85: сумин андрей

85

t1036 : {

title : 'Легенда',

link : {

href: 'http://link.mail.ru/',

title: 'Играть!',

target: '_blank'

}

}

Page 86: сумин андрей

86

Динамика

Page 87: сумин андрей

87

setTimeout

Page 88: сумин андрей

88

function chooseTheme(themeId){

var themeVariant = 'all',

switch (themeId) {…}

return themeVariant

}

Page 89: сумин андрей

89

function chooseTheme(themeId){

var themeVariant = 'all',

switch (themeId) {…}

return themeVariant

}

Page 90: сумин андрей

90

case 't1032':

if (time >= 7 && time < 19){

themeVariant = "day";

} else {

themeVariant = "night";

}

Page 91: сумин андрей

91

var themeChoosed = chooseTheme('t1032');

document.write(

'<linkhref="t1032.' + themeChoosed + '.css"/>'

);

Page 92: сумин андрей

92

Page 93: сумин андрей

Андрей СуминРуководитель разработки клиентской части

[email protected]

СПАСИБО!