SlideShare a Scribd company logo
1 of 178
Download to read offline
Распечатай Яндекс.Карты
Вадим Макишвили, июль 2013
Конкуренты
1. Google Maps
2. Yahoo! Maps
3. Bing Maps
4. MapQuest
5. Wikimapia
6. OpenStreetMap
...и это ещё не все
7. Géoportail
8. Apple Maps
9. Nokia Maps
10. ViaMichelin
11. Seat Pagine Gialle
12. Terralink International
10
Какая нужна
карта?
чистая
удобная
подробная
полная
наглядная
Print & Go!
Критерии:
• Размер карты
• Подача информации
• Альбомная ориентация
18
А4 формат
21х29cm
19
Google Maps
15х15cm
20
Google Maps 21
Google Maps 22
Google Maps 23
Google Maps 24
Google Maps 25
Google Maps 26
Google Maps 27
Google Maps 28
Yahoo! Maps
15х10cm
29
Yahoo! Maps 30
Microsoft Bing
12х12cm
3х3cm
31
Microsoft Bing 32
Microsoft Bing 33
Microsoft Bing 34
Рамблер Карты
15х15cm
35
Рамблер Карты 36
Рамблер Карты 37
Карты Mail.ru
15х12cm
38
Карты Mail.ru 39
Карты Mail.ru 40
Недостатки существующих решений:
• Карта маленькая
• Подача информации неоптимальная
• Нет альбомной версии
41
Но!
Печать на
Яндекс.Картах
Размеры карты:
20 х 27cm
44
45
46
47
48
49
50
51
52
53
54
Печать на
Яндекс.Картах
Как мы это
сделали?
... Quirks again?
58
1998
2012
Дальше будет:
• как искали раскладку
• как подключали стили
• как фильтровали браузеры
• как обошлись с IE
• ...
• как напечатать фон?
61
В поисках раскладки 62
Карта
Шапка
Подвал
Quirks Mode
<table height=' 100% '>
...
</table>
td.map {
height: 100%
}
В поисках раскладки
01.
02.
03.
04.
05.
06.
63
<td class='map'> Карта </td>
<td> Шапка </td>
<td> Подвал </td>
Javascript?
В поисках раскладки 64
<td class='map'> Карта </td>
<td> Шапка </td>
<td> Подвал </td>
Javascript
:(
Javascript for printer?
if ( page.orientation === 'landscape' ) {
// do something
}
if ( page.size.width === '210mm' ) {
// do something
}
01.
02.
03.
01.
02.
03.
66
CSS for printer
@media print and (orientation:landscape) {
// do something
}
01.
02.
03.
67
@rules
69
@page
/* Обнулить поля */
@page {
margin: 0
}
01.
02.
03.
04.
70
@page
/* Обнулить поля */
@page {
margin: 0
}
01.
02.
03.
04.
file://localhost/Users/makishvili/projects/print-and-go/page-zero.html
05.07.13
71
@page
/* Обнулить поля */
@page {
margin: 0
}
Не работает?
01.
02.
03.
04.
72
@page
/* Изменить поля */
@page {
margin: 1cm
}
Заработало!
01.
02.
03.
04.
73
@page
/* Изменить поля */
@page {
margin: 1cm
}
Точка отсчёта -
дефолтные отступы,
а не край листа
01.
02.
03.
04.
74
@page
/* Принудительно задать ориентацию */
@page {
size: landscape
}
01.
02.
03.
04.
75
@page
/* Группировать правила */
@page myName {
padding: 10px
}
div {
page: myName
}
01.
02.
03.
04.
05.
06.
07.
76
@page: фильтрация стилей для Opera
@page {margin: 0}
@page operaPage {margin: 0.5cm}
html.opera body {
page: operaPage
}
01.
02.
03.
04.
05.
77
http://clck.ru/8hBQu
bolk@ «взламывает» Оперу 78
@page: фильтрация стилей для Firefox
@page {margin: 0}
@-moz-document regexp('*') {
@page {
margin-top: 1cm;
margin-bottom: 1cm;
}
}
01.
02.
03.
04.
05.
06.
07.
79
Media-queries
Ориентация листа
@media print and (orientation:portrait) {
/* стили только для портрета */
}
@media print and (orientation:landscape) {
/* стили только для альбома */
}
01.
02.
03.
04.
05.
06.
9+
8-
81
Ориентация листа: а так?
min-aspect-ratio: 1/1 /* screen-size is in landscape */
max-aspect-ratio: 1/1 /* screen-size is in portrait */
min-device-aspect-ratio: 1/1 /* device is in landscape */
max-device-aspect-ratio: 1/1 /* device is in portrait */
http://www.quirksmode.org/blog/archives/2010/04/the_orientation.html
01.
02.
03.
04.
82
Раскладка 83
Карта
Шапка
Подвал
table, td.map {
height: 100%
}
1. Таблица
01.
02.
03.
84
<td class='map'> Карта </td>
<td> Шапка </td>
<td> Подвал </td>
div {
display: table-cell
}
.map {
height: 100%
}
1. Таблица
01.
02.
03.
04.
05.
06.
85
<div class='map'> Карта </div>
<div> Шапка </div>
<div> Подвал </div>
• нет min-height и max-height
CSS 2.1 не определяет поведение min-height и max-height в таблицах,
поэтому любая реалиция этих свойств (применительно к таблицам) -
CSS2.1-совместимая
MDN
• нет overflow:hidden внутри ячейки
1. Таблица
“
86
div {
position: absolute
left: 0
right: 0
}
.head {
top: 0
height: 100px
}
.map {
top: 100px
bottom: 100px
}
.foot {
bottom: 0
height: 100px
}
2. Позиционирование
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
87
<div class='map'> Карта </div>
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
• не работает page-break-before
User Agents must apply these properties to block-level elements in the
normal flow of the root element.
CSS2 specification
• нужна фиксированная высота подвала или javascript
2. Позиционирование
“
88
.map {
height: 100%
}
3. Поток
01.
02.
03.
89
<div class='map'> Карта </div>
.map {
height: 100%
}
.head, .foot {
position: absolute
left: 0
right: 0
}
.head {
top: 0
}
.foot {
bottom: 0
}
3. Поток + «наляпки»
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
90
<div class='map'> Карта </div>
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
.map {
height: 100%
}
.head, .foot {
position: absolute
left: 0
right: 0
}
.head {
top: 0
}
.foot {
bottom: 0
}
3. Поток + «наляпки»
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
91
<div class='map'> Карта </div>
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
Утверждаю
Как организовать
стили?
Как организовать стили так, чтобы:
• разделить на экранные и принтерные
• разделить на портретные и альбомные
• ...
• и уметь это дебажить
93
Сначала бездумно
body {
width: 900px
}
@media print {
body {
width: auto /* переопределяю */
padding: 5mm
}
}
01.
02.
03.
04.
05.
06.
07.
08.
09.
94
Потом с медиа-типами
@media screen {
body { width: 900px }
}
@media print {
body { padding: 5mm }
}
01.
02.
03.
04.
05.
06.
95
Потом с медиа-выражениями
@media screen {
body { width: 900px }
}
@media print {
body { padding: 5mm }
}
@media print and (orientation:landscape) {
body { height: 210mm }
}
01.
02.
03.
04.
05.
06.
07.
08.
09.
96
Наконец, с умом
<meta http-equiv='X-UA-Compatible' content='IE=EmulateIE7'>
<!--[if gt IE 7]><!-->
<link href='page.css'>
<!--<![endif]-->
<!--[if lt IE 8]>
<link href='page.ie.css'>
<![endif]-->
<link rel='stylesheet' href=' page.screen.css ' media=' screen '>
<link rel='stylesheet' href=' page.print.css ' media=' print '>
<link rel='stylesheet' href=' page.print.portrait.css ' media='print and ( orientation:portrait )'>
<link rel='stylesheet' href=' page.print.landscape.css ' media='print and ( orientation:landscape )'>
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
97
Подождите, а что с IE?
<meta ... content=' IE=EmulateIE7 '>
А почему не так?
<meta ... content=' IE=EmulateIE7 , IE=edge '>
98
Осторожно!
9 печатает, как
6 отображает...
99
<div class='view'>
<img class='map' src='map.png'>
</div>
.view {
position: relative
overflow: hidden
width: 200px; height: 200px
}
.map {
position: absolute
top: 50%; left: 50%
width: 1000px; height: 1000px
margin: -500px 0 0 -500px
}
Большая картинка
в маленьком окне
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
100
<div class='view'>
<img class='map' src='map.png'>
</div>
.view {
position: relative
overflow: hidden
width: 200px; height: 200px
}
.map {
position: absolute
top: 50%; left: 50%
width: 1000px; height: 1000px
margin: -500px 0 0 -500px
}
Большая картинка
в маленьком окне
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
overflow: hidden
9
на печати
101
<div class='view'>
<img class='map' src='map.png'>
</div>
.view {
position: relative
overflow: hidden
width: 200px; height: 200px
}
.map {
position: absolute
top: 50%; left: 50%
width: 1000px; height: 1000px
margin: -500px 0 0 -500px
}
Большая картинка
в маленьком окне
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
+ display: inline-block
9
на печати
102
.map {
height: 100%
}
.head, .foot {
position: absolute
left: 0
right: 0
}
.head {
top: 0
}
.foot {
bottom: 0
}
3. Поток + «наляпки»
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
103
<div class='map'> Карта </div>
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
.map {
height: 100%
}
.head, .foot {
position: absolute
left: 0
right: 0
}
.head {
top: 0
}
.foot {
bottom: 0
}
3. Поток + «наляпки»
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
9
на печати
104
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
<div class='map'> Карта </div>
.map {
height: 100%
}
.head, .foot {
position: absolute
left: 0
right: 0
}
.head {
top: 0
}
.foot {
bottom: 0
}
3. Поток + «наляпки»
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
9
на печати
105
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
<div class='map'> Карта </div>
.map {
height: 100%
}
.head, .foot {
position: absolute
left: 0
right: 0
}
.head {
top: 0
}
.foot {
bottom: 0
}
3. Поток + «наляпки»
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
MacOS
106
<div class='map'> Карта </div>
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
.map {
height: 100%
}
.head, .foot {
position: absolute
left: 0
right: 0
}
.head {
top: 0
}
.foot {
bottom: 0
}
3. Поток + «наляпки»
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
MacOS
107
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
.map {
height: 100%
}
.head, .foot {
position: absolute
left: 0
right: 0
}
.head {
top: 0
}
.foot {
bottom: 0
}
3. Поток + «наляпки»
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
+
+ <div class='opacity-hack'></div>
.opacity-hack {
position: absolute
background: red
opacity: 0.3
}
01.
02.
03.
04.
05.
MacOS
108
<div class='map'> Карта </div>
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
.map {
height: 100%
}
.head, .foot {
position: absolute
left: 0
right: 0
}
.head {
top: 0
}
.foot {
bottom: 0
}
3. Поток + «наляпки»
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
<div class='opacity-hack'></div>
.opacity-hack {
position: absolute
opacity: 0
}
01.
02.
03.
04.
MacOS
109
<div class='map'> Карта </div>
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
<div class='view'>
<img class='map' src='map.png'>
</div>
.view {
overflow: hidden
width: 200px; height: 200px
}
.map {
position: absolute
top: 50%; left: 50%
width: 1000px; height: 1000px
margin: -500px 0 0 -500px
}
Большая картинка
в маленьком окне
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
110
<div class='view'>
<img class='map' src='map.png'>
</div>
.view {
overflow: hidden
width: 200px; height: 200px
}
.map {
position: absolute
top: 50%; left: 50%
width: 1000px; height: 1000px
margin: -500px 0 0 -500px
}
Большая картинка
в маленьком окне
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
на печати
111
<div class='view'>
<div class=' map-holster '>
<img class='map' src='map.png'>
</div>
</div>
.map-holster {
top: 50%
left: 50%
}
.map {
top: -50%
left: -50%
}
Большая картинка
в маленьком окне
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
на печати
112
Фильтруем
браузеры
(function (jQuery) {
var ua = navigator.userAgent;
var browser = jQuery.browser;
var browserName;
switch (true) {
case Boolean(browser.opera):
browserName = ' opera '; break;
case Boolean(ua.indexOf('Safari') !== -1):
browserName = ' safari '; break;
...
}
if (browserName) {
document. documentElement.className += (' ' + browserName);
}
}(jQuery));
Фильтруем браузеры
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
114
<html class=' opera '>
...
</html>
01.
02.
03.
html, body {
height: 100%
}
.map {
width: 100%
height: 100%
}
100% листа
01.
02.
03.
04.
05.
06.
07.
115
<div class='map'> Карта </div>
html, body {
height: 100%
}
.map {
width: 100%
height: 100%
}
100% листа
01.
02.
03.
04.
05.
06.
07.
116
<div class='map'> Карта </div>
html, body {
height: 100%
}
.map {
width: 100%
height: 100%
}
@media print {
@page { margin: 5mm }
html.chrome { height: 267mm }
html.safari { height: 247mm }
}
@media print and (orientation:landscape) {
html.chrome { height: 187mm }
html.safari { height: 167mm }
}
100% листа
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
117
<div class='map'> Карта </div>
Предпросмотр
печати
врёт
@page
/* Обнулить поля */
@page {
margin: 0
}
01.
02.
03.
04.
119
@page
/* Обнулить поля */
@page {
margin: 0
}
01.
02.
03.
04.
120
@page
/* Обнулить поля */
@page {
margin: 0
}
Молодец!
01.
02.
03.
04.
121
Что здесь не так?
122
Линии?!
• это точно не border
• точно не outline
• не зазор между блоками
• ...
• что это? o_O
123
Неверный центр
карты
124
Шапка
Подвал
Неверный центр
карты
125
Шапка
Подвал
Неверный центр
карты
126
Шапка
Панорама
Подвал
127
Шапка
Панорама
Подвал
Шапка
Подвал
<style media="print and
(orientation:portrait)">
.view .map {
top: -35px
}
</style>
Переместить центр
карты
01.
02.
03.
04.
05.
129
Шапка
Подвал
<style media="print and
(orientation:portrait)">
.view .map {
top: 75px
}
</style>
Переместить центр
карты
01.
02.
03.
04.
05.
130
Шапка
Панорама
Подвал
http://clck.ru/8hvkH
jQuery.injectCSS 131
Фон
bgcolor, background
134
О питомнике
Новости
О породе Бобтейл
Начинающему заводчику
Выставки
Чемпионы
Приглашаем на вязки
Фотогалерея
Наши путешествия
Наши услуги
Полезные документы
Ссылки
Они навсегда в нашей памяти ...
Контакты
Напишите нам
О ПИТОМНИКЕ
Мы кушаем корма " HAPPY DOG " с 30 % скидкой! eda-82
135
ГЛАВНАЯ ПРОДАЖА ФОТОГАЛЕРЕЯ ЧИХУАХУА
ВЫПУСКНИКИ КОНТАКТЫ НОВОСТИ СТАТЬИ
English version
136
питомник основан в 1993 г. Москва
♥ порода: БРИТАНСКАЯ КОРОТКОШЕРСТНАЯ ♥
ПРОДАЖА британских котят
ГОЛУБОГО КЛАССИЧЕСКОГО ОКРАСА
Заводчик, инструктор-фелинолог Курофф Юлия Валерьевна
тел. +7(916)426-18-18
e-mail: silverysnow@list.ru
♥ ГЛАВНАЯ
♥ Новости питомника
♥ О питомнике
♥ О породе
♥ К продаже
♥ Наши КОТЯТА
(фотогалерея)
БРИТАНСКИЕ КОТЯТА НА ПРОДАЖУ
На данной страничке вашему вниманию предлагаются котята, которые прод
питомнике в данный момент (возле фото указан возраст котят)
Внимание.
На данный момент в питомнике продаются голубые британские котята
ведется предварительная запись на ГОЛУБЫХ БРИТАНСКИХ кот
ЕСЛИ ВЫ желаете записаться заранее на котят - присылайте заявку по эл.
Вы желаете купить британского котенка? Спасибо, что выбрали
137
http://clck.ru/8hLnN
CSSWG: «Как включить печать фона?» 138
CSSWG: «Как включить печать фона?»
.selector {
-webkit-print-color-adjust: exact
}
Одно из предложений
@page {
print-color-adjust: exact
}
01.
02.
03.
01.
02.
03.
139
Все браузеры
печатают...
141
<div class='map'> Карта </div>
<div class='head'> Шапка </div>
<div class='foot'> Подвал </div>
Больше белого!
• Это красиво
• Это воздушно
• Берите пример с хорошего ;)
142
IE не печатает
белый
А так печатает
.selector {
filter: progid:DXImageTransform.Microsoft. gradient (
startColorstr= '#ffffff' ,
endColorstr= '#ffffff' ,
GradientType=0 );
}
01.
02.
03.
8-
144
Фоновый цвет
1. Экстраразметка с картинкой
<div class='view'>
<img class='map' src=' green.png '>
</div>
.view {
position: relative
}
.map {
position: absolute
top: 0; bottom: 0
left: 0; right: 0
}
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
146
1. Экстраразметка с картинкой
<div class='view'>
<img class='map' src='green.png'>
</div>
.view {
position: relative
}
.map {
position: absolute
top: 0; bottom: 0
left: 0; right: 0
}
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
147
Старьё!
2. Псевдоэлемент + PNG
<div class='view'></div>
.view {
position: relative
}
.view::before {
position: absolute
top: 0; bottom: 0
left: 0; right: 0
content : url( green.png )
}
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
148
2. Псевдоэлемент + PNG
<div class='view'></div>
.view {
position: relative
}
.view::before {
position: absolute
top: 0; bottom: 0
left: 0; right: 0
content : url( green.png )
}
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
149
Неуспех!
2. Псевдоэлемент + SVG
<div class='view'></div>
.view::before {
...
content: url(green. svg )
}
<svg width=' 100% ' height=' 100% '>
<rect fill=' #00ff00 ' width='100%' height='100%'/>
</svg>
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
150
2. Псевдоэлемент + SVG
<div class='view'></div>
.view::before {
...
content: url( 'data:image/svg+xml;<svg>...</svg>' )
}
<svg width='100%' height='100%'>
<rect fill='#00ff00' width='100%' height='100%'/>
</svg>
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
151
2. Псевдоэлемент + SVG
<div class='view'></div>
.view::before {
...
content: url('data:image/svg+xml; base64,[data] ')
}
<svg width='100%' height='100%'>
<rect fill='#00ff00' width='100%' height='100%'/>
</svg>
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
152
2. Псевдоэлемент + SVG
<div class='view'></div>
.view::before {
...
content: url('data:image/svg+xml; base64,[data] ')
}
<svg width='100%' height='100%'>
<rect fill='#00ff00' width='100%' height='100%'/>
</svg>
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
153
на печати
content:url(SVG)
3. Border
<div class='view'></div>
.view {
position: relative
overflow: hidden
}
.view ::before {
position: absolute; z-index:-1
top: 0; bottom: 0
left: 0; right: 0
content: ''
border: solid green
border-width: 1000px 0 0
}
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
154
3. Border - i-блок
<div class='head i-bgcolor '></div>
<div class='foot i-bgcolor '></div>
.i-bgcolor {
position: relative
overflow: hidden
}
.i-bgcolor::before {
position: absolute; z-index:-1
top: 0; bottom: 0
left: 0; right: 0
content: ''
border-style: solid
border-width: 1000px 0 0
}
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
.head::before {
border-color: green
}
.foot::before {
border-color: red
}
15.
16.
17.
18.
19.
20.
155
3. Border - i-блок
<div class='head i-bgcolor '></div>
<div class='foot i-bgcolor '></div>
.i-bgcolor {
position: relative
overflow: hidden
}
.i-bgcolor::before {
position: absolute; z-index:-1
top: 0; bottom: 0
left: 0; right: 0
content: ''
border-style: solid
border-width: 1000px 0 0
}
Фоновый цвет
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
.head:before {
border-color: green
filter: ...Microsoft.gradient(
startColorstr='#ff008000'
endColorstr='#ff008000'
GradientType=0)
}
.foot:before {
border-color: red
filter: ...Microsoft.gradient(
startColorstr='#ffff0000'
endColorstr='#ffff0000'
GradientType=0)
}
15.
16.
17.
18.
19.
20.
21.
22.
156
Утверждаю
Фоновое
изображение
158
159
160
161
1. Маркер списка
.view {
width: 300px
height: 200px
background: url(fox.png) 0 0 no-repeat
list-style: url(fox.png) inside
}
@media print {
.view {
display: list-item
}
}
Одиночная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
162
2. Псевдоэлемент + PNG
<div class='view'></div>
.view {
position: relative
width: 300px
height: 200px
}
.view::before {
position: absolute
z-index:-1
content: url(fox.png)
}
Одиночная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
163
2. Псевдоэлемент + PNG
<div class='view'></div>
.view {
position: relative
width: 300px
height: 200px
}
.view::before {
position: absolute
z-index:-1
content: url(fox.png)
}
Одиночная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
164
Утверждаю
3. Псевдоэлемент + опять SVG
<div class='view'></div>
.view {
position: relative
width: 300px
height: 200px
}
.view::before {
position: absolute
z-index:-1
content: url(fox. svg )
}
Одиночная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
<svg width='300' height='200' >
<image xlink:href='fox. png ' width='300' height='200' />
</svg>
12.
13.
14.
165
3. Псевдоэлемент + опять SVG
<div class='view'></div>
.view {
position: relative
width: 300px
height: 200px
}
.view::before {
position: absolute
z-index:-1
content: url(fox. svg )
}
Одиночная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
<svg width='300' height='200' >
<image xlink:href='fox. png ' width='300' height='200' />
</svg>
12.
13.
14.
166
1. Псевдоэлемент + SVG
<div class='view'></div>
.view {
position: relative
overflow: hidden
width: 400px
height: 200px
}
.view::before {
position: absolute
z-index:-1
content: url(small.fox.svg)
}
Размноженная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
<svg width=' 9999 ' height=' 80 '>
<defs>
<pattern id='myFox' width=' 9999 ' height=' 80 '>
<image xlink:href='small.fox.png'
width='100' height=' 80 '/>
</pattern>
</defs>
<rect fill='url(#myFox)' width=' 9999 ' height=' 80 '/>
</svg>
13.
14.
15.
16.
17.
18.
19.
20.
167
1. Псевдоэлемент + SVG
<div class='view'></div>
.view {
position: relative
overflow: hidden
width: 400px
height: 200px
}
.view::before {
position: absolute
z-index:-1
content: url(small.fox.svg)
}
Размноженная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
<svg width=' 100 ' height=' 9999 '>
<defs>
<pattern id='myFox' width=' 100 ' height=' 9999 '>
<image xlink:href='small.fox.png'
width=' 100 ' height='80'/>
</pattern>
</defs>
<rect fill='url(#myFox)' width=' 100 ' height=' 9999 '/>
</svg>
13.
14.
15.
16.
17.
18.
19.
20.
168
1. Псевдоэлемент + SVG
<div class='view'></div>
.view {
position: relative
overflow: hidden
width: 400px
height: 200px
}
.view::before {
position: absolute
z-index:-1
content: url(small.fox.svg)
}
Размноженная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
<svg width=' 9999 ' height=' 9999 '>
<defs>
<pattern id='myFox' width=' 9999 ' height=' 9999 '>
<image xlink:href='small.fox.png'
width='100' height='80'/>
</pattern>
</defs>
<rect fill='url(#myFox)' width=' 9999 ' height=' 9999 '/>
</svg>
13.
14.
15.
16.
17.
18.
19.
20.
169
1. Псевдоэлемент + SVG
<div class='view'></div>
.view {
position: relative
overflow: hidden
width: 400px
height: 200px
}
.view::before {
position: absolute
z-index:-1
content: url(small.fox.svg)
}
Размноженная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
<svg width='9999' height='9999'>
<defs>
<pattern id='myFox' width='9999' height='9999'>
<image xlink:href='small.fox.png'
width='100' height='80'/>
</pattern>
</defs>
<rect fill='url(#myFox)' width='9999' height='9999'/>
</svg>
13.
14.
15.
16.
17.
18.
19.
20.
170
2. Border-image
...
border-image: url(box.png) 100 0 0 0 / auto repeat;
...
Размноженная фоновая картинка
01.
02.
03.
171
2. Border-image
<div class='view'></div>
.view {
position: relative
overflow: hidden
width: 400px
height: 200px
}
Размноженная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
.view::before {
position: absolute; z-index:-1
top: 0
left: 0
right: 0
content: ''
border-style: solid
border-width: 100px 0 0
border-image: url(fox.png) 100 0 0 0 / auto repeat
}
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
172
2. Border-image
<div class='view'></div>
.view {
position: relative
overflow: hidden
width: 400px
height: 200px
}
Размноженная фоновая картинка
01.
02.
03.
04.
05.
06.
07.
.view::before {
position: absolute; z-index:-1
top: 0
left: 0
right: 0
content: ''
border-style: solid
border-width: 0 0 0 100px
border-image: url(fox.png) 0 0 0 100 / auto repeat
}
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
173
3. Бонус
<div class='view'></div>
.view {
position: relative
overflow: hidden
width: 400px
height: 200px
}
Растянутая фоновая картинка
01.
02.
03.
04.
05.
06.
07.
.view::before {
position: absolute; z-index:-1
top: 0
left: 0
right: 0
content: ''
border-style: solid
border-width: 0 0 0 100px
border-image: url(fox.png) 0 0 0 100 / auto stretch
}
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
174
• Нужен фоновый цвет?
::before + border-color
• Нужна одинокая картинка в фоне?
::before + content: url(png)
• Хотите замостить картинку?
::before + border-image: url(pbg) + repeat
• Или растянуть?
::before + border-image: url(pbg) + stretch
175
177
Распечатай Яндекс.Карты
Вадим Макишвили, июль 2013
• makishvili.com
• makishvili@yandex-team.ru
178

More Related Content

Viewers also liked

TiSCADA for complete network monitoring, one user interface for all condition...
TiSCADA for complete network monitoring, one user interface for all condition...TiSCADA for complete network monitoring, one user interface for all condition...
TiSCADA for complete network monitoring, one user interface for all condition...Techimp HQ
 
Techimp AQUILA - The new portable Partial Discharge Acquisition Unit
Techimp AQUILA - The new portable Partial Discharge Acquisition Unit Techimp AQUILA - The new portable Partial Discharge Acquisition Unit
Techimp AQUILA - The new portable Partial Discharge Acquisition Unit Techimp HQ
 
Solid Waste Management and the Prosperity of Nova Scotia
Solid Waste Management and the Prosperity of Nova ScotiaSolid Waste Management and the Prosperity of Nova Scotia
Solid Waste Management and the Prosperity of Nova ScotiaSWANA Northern Lights Chapter
 
Conquista española en territorio potosino
Conquista española en territorio potosino  Conquista española en territorio potosino
Conquista española en territorio potosino GABRIEL ENRIQUEZ
 
Biblio manual-vacunador 2011
Biblio manual-vacunador 2011Biblio manual-vacunador 2011
Biblio manual-vacunador 2011albertososa
 

Viewers also liked (10)

TiSCADA for complete network monitoring, one user interface for all condition...
TiSCADA for complete network monitoring, one user interface for all condition...TiSCADA for complete network monitoring, one user interface for all condition...
TiSCADA for complete network monitoring, one user interface for all condition...
 
Techimp AQUILA - The new portable Partial Discharge Acquisition Unit
Techimp AQUILA - The new portable Partial Discharge Acquisition Unit Techimp AQUILA - The new portable Partial Discharge Acquisition Unit
Techimp AQUILA - The new portable Partial Discharge Acquisition Unit
 
Solid Waste Management and the Prosperity of Nova Scotia
Solid Waste Management and the Prosperity of Nova ScotiaSolid Waste Management and the Prosperity of Nova Scotia
Solid Waste Management and the Prosperity of Nova Scotia
 
Trombofilia
Trombofilia Trombofilia
Trombofilia
 
creativity @ work 2 hbdi
creativity @ work 2 hbdicreativity @ work 2 hbdi
creativity @ work 2 hbdi
 
Conquista española en territorio potosino
Conquista española en territorio potosino  Conquista española en territorio potosino
Conquista española en territorio potosino
 
Biogeochemical cycle
Biogeochemical cycleBiogeochemical cycle
Biogeochemical cycle
 
Medical aspects of addiction and co occurring disorders
Medical aspects of addiction and co occurring disordersMedical aspects of addiction and co occurring disorders
Medical aspects of addiction and co occurring disorders
 
Hemoglobinopatias
HemoglobinopatiasHemoglobinopatias
Hemoglobinopatias
 
Biblio manual-vacunador 2011
Biblio manual-vacunador 2011Biblio manual-vacunador 2011
Biblio manual-vacunador 2011
 

Similar to FrontTalks: Вадим Макишвили (Яндекс), «Распечатай Яндекс.Карты»

04 - Web-технологии. CSS - язык описания стилей
04 - Web-технологии. CSS - язык описания стилей04 - Web-технологии. CSS - язык описания стилей
04 - Web-технологии. CSS - язык описания стилейRoman Brovko
 
Yandex Map Kit для Android OS - Максим Хромцов
Yandex Map Kit для Android OS - Максим ХромцовYandex Map Kit для Android OS - Максим Хромцов
Yandex Map Kit для Android OS - Максим ХромцовMeetup.by
 
Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"Yandex
 
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтендаСтажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда7bits
 
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...it-people
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4Technopark
 
Владимир Гриненко "Инструменты фронтенд-разработчика"
Владимир Гриненко "Инструменты фронтенд-разработчика"Владимир Гриненко "Инструменты фронтенд-разработчика"
Владимир Гриненко "Инструменты фронтенд-разработчика"Yandex
 
Олег Мохов "Драматическая история одной маленькой промостранички"
Олег Мохов "Драматическая история одной маленькой промостранички"Олег Мохов "Драматическая история одной маленькой промостранички"
Олег Мохов "Драматическая история одной маленькой промостранички"Yandex
 
Web весна 2012 лекция 10
Web весна 2012 лекция 10Web весна 2012 лекция 10
Web весна 2012 лекция 10Technopark
 
Bootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressBootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressIgor Sazonov
 
Я ♥ Svg — Владимир Кузнецов, Engine6
Я ♥ Svg — Владимир Кузнецов, Engine6Я ♥ Svg — Владимир Кузнецов, Engine6
Я ♥ Svg — Владимир Кузнецов, Engine6Yandex
 
всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта  всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта Olga Pirozhenko
 
Сетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостаткиСетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостаткиUXkontur
 
Сетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостаткиСетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостаткиVasiliy Aksyonov
 
Андрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkАндрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkAlbina Tiupa
 
Php Conf2007 Mapscript
Php Conf2007 MapscriptPhp Conf2007 Mapscript
Php Conf2007 MapscriptSlach
 
Александр Тармолов "API Яндекс.Карт"
Александр Тармолов "API Яндекс.Карт"Александр Тармолов "API Яндекс.Карт"
Александр Тармолов "API Яндекс.Карт"Yandex
 
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...Yandex
 

Similar to FrontTalks: Вадим Макишвили (Яндекс), «Распечатай Яндекс.Карты» (20)

04 - Web-технологии. CSS - язык описания стилей
04 - Web-технологии. CSS - язык описания стилей04 - Web-технологии. CSS - язык описания стилей
04 - Web-технологии. CSS - язык описания стилей
 
Yandex Map Kit для Android OS - Максим Хромцов
Yandex Map Kit для Android OS - Максим ХромцовYandex Map Kit для Android OS - Максим Хромцов
Yandex Map Kit для Android OS - Максим Хромцов
 
Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"
 
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтендаСтажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
 
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
 
3dweb
3dweb3dweb
3dweb
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4
 
Владимир Гриненко "Инструменты фронтенд-разработчика"
Владимир Гриненко "Инструменты фронтенд-разработчика"Владимир Гриненко "Инструменты фронтенд-разработчика"
Владимир Гриненко "Инструменты фронтенд-разработчика"
 
Олег Мохов "Драматическая история одной маленькой промостранички"
Олег Мохов "Драматическая история одной маленькой промостранички"Олег Мохов "Драматическая история одной маленькой промостранички"
Олег Мохов "Драматическая история одной маленькой промостранички"
 
Web весна 2012 лекция 10
Web весна 2012 лекция 10Web весна 2012 лекция 10
Web весна 2012 лекция 10
 
Bootstrap 3
Bootstrap 3Bootstrap 3
Bootstrap 3
 
Bootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressBootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPress
 
Я ♥ Svg — Владимир Кузнецов, Engine6
Я ♥ Svg — Владимир Кузнецов, Engine6Я ♥ Svg — Владимир Кузнецов, Engine6
Я ♥ Svg — Владимир Кузнецов, Engine6
 
всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта  всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта
 
Сетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостаткиСетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостатки
 
Сетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостаткиСетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостатки
 
Андрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkАндрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass framework
 
Php Conf2007 Mapscript
Php Conf2007 MapscriptPhp Conf2007 Mapscript
Php Conf2007 Mapscript
 
Александр Тармолов "API Яндекс.Карт"
Александр Тармолов "API Яндекс.Карт"Александр Тармолов "API Яндекс.Карт"
Александр Тармолов "API Яндекс.Карт"
 
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
 

More from Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

More from Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

FrontTalks: Вадим Макишвили (Яндекс), «Распечатай Яндекс.Карты»

  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Конкуренты 1. Google Maps 2. Yahoo! Maps 3. Bing Maps 4. MapQuest 5. Wikimapia 6. OpenStreetMap ...и это ещё не все 7. Géoportail 8. Apple Maps 9. Nokia Maps 10. ViaMichelin 11. Seat Pagine Gialle 12. Terralink International 10
  • 18. Критерии: • Размер карты • Подача информации • Альбомная ориентация 18
  • 41. Недостатки существующих решений: • Карта маленькая • Подача информации неоптимальная • Нет альбомной версии 41
  • 42. Но!
  • 45. 45
  • 46. 46
  • 47. 47
  • 48. 48
  • 49. 49
  • 50. 50
  • 51. 51
  • 52. 52
  • 53. 53
  • 54. 54
  • 58. 58
  • 59. 1998
  • 60. 2012
  • 61. Дальше будет: • как искали раскладку • как подключали стили • как фильтровали браузеры • как обошлись с IE • ... • как напечатать фон? 61
  • 62. В поисках раскладки 62 Карта Шапка Подвал
  • 63. Quirks Mode <table height=' 100% '> ... </table> td.map { height: 100% } В поисках раскладки 01. 02. 03. 04. 05. 06. 63 <td class='map'> Карта </td> <td> Шапка </td> <td> Подвал </td>
  • 64. Javascript? В поисках раскладки 64 <td class='map'> Карта </td> <td> Шапка </td> <td> Подвал </td>
  • 66. Javascript for printer? if ( page.orientation === 'landscape' ) { // do something } if ( page.size.width === '210mm' ) { // do something } 01. 02. 03. 01. 02. 03. 66
  • 67. CSS for printer @media print and (orientation:landscape) { // do something } 01. 02. 03. 67
  • 69. 69
  • 70. @page /* Обнулить поля */ @page { margin: 0 } 01. 02. 03. 04. 70
  • 71. @page /* Обнулить поля */ @page { margin: 0 } 01. 02. 03. 04. file://localhost/Users/makishvili/projects/print-and-go/page-zero.html 05.07.13 71
  • 72. @page /* Обнулить поля */ @page { margin: 0 } Не работает? 01. 02. 03. 04. 72
  • 73. @page /* Изменить поля */ @page { margin: 1cm } Заработало! 01. 02. 03. 04. 73
  • 74. @page /* Изменить поля */ @page { margin: 1cm } Точка отсчёта - дефолтные отступы, а не край листа 01. 02. 03. 04. 74
  • 75. @page /* Принудительно задать ориентацию */ @page { size: landscape } 01. 02. 03. 04. 75
  • 76. @page /* Группировать правила */ @page myName { padding: 10px } div { page: myName } 01. 02. 03. 04. 05. 06. 07. 76
  • 77. @page: фильтрация стилей для Opera @page {margin: 0} @page operaPage {margin: 0.5cm} html.opera body { page: operaPage } 01. 02. 03. 04. 05. 77
  • 79. @page: фильтрация стилей для Firefox @page {margin: 0} @-moz-document regexp('*') { @page { margin-top: 1cm; margin-bottom: 1cm; } } 01. 02. 03. 04. 05. 06. 07. 79
  • 81. Ориентация листа @media print and (orientation:portrait) { /* стили только для портрета */ } @media print and (orientation:landscape) { /* стили только для альбома */ } 01. 02. 03. 04. 05. 06. 9+ 8- 81
  • 82. Ориентация листа: а так? min-aspect-ratio: 1/1 /* screen-size is in landscape */ max-aspect-ratio: 1/1 /* screen-size is in portrait */ min-device-aspect-ratio: 1/1 /* device is in landscape */ max-device-aspect-ratio: 1/1 /* device is in portrait */ http://www.quirksmode.org/blog/archives/2010/04/the_orientation.html 01. 02. 03. 04. 82
  • 84. table, td.map { height: 100% } 1. Таблица 01. 02. 03. 84 <td class='map'> Карта </td> <td> Шапка </td> <td> Подвал </td>
  • 85. div { display: table-cell } .map { height: 100% } 1. Таблица 01. 02. 03. 04. 05. 06. 85 <div class='map'> Карта </div> <div> Шапка </div> <div> Подвал </div>
  • 86. • нет min-height и max-height CSS 2.1 не определяет поведение min-height и max-height в таблицах, поэтому любая реалиция этих свойств (применительно к таблицам) - CSS2.1-совместимая MDN • нет overflow:hidden внутри ячейки 1. Таблица “ 86
  • 87. div { position: absolute left: 0 right: 0 } .head { top: 0 height: 100px } .map { top: 100px bottom: 100px } .foot { bottom: 0 height: 100px } 2. Позиционирование 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 87 <div class='map'> Карта </div> <div class='head'> Шапка </div> <div class='foot'> Подвал </div>
  • 88. • не работает page-break-before User Agents must apply these properties to block-level elements in the normal flow of the root element. CSS2 specification • нужна фиксированная высота подвала или javascript 2. Позиционирование “ 88
  • 89. .map { height: 100% } 3. Поток 01. 02. 03. 89 <div class='map'> Карта </div>
  • 90. .map { height: 100% } .head, .foot { position: absolute left: 0 right: 0 } .head { top: 0 } .foot { bottom: 0 } 3. Поток + «наляпки» 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 90 <div class='map'> Карта </div> <div class='head'> Шапка </div> <div class='foot'> Подвал </div>
  • 91. .map { height: 100% } .head, .foot { position: absolute left: 0 right: 0 } .head { top: 0 } .foot { bottom: 0 } 3. Поток + «наляпки» 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 91 <div class='map'> Карта </div> <div class='head'> Шапка </div> <div class='foot'> Подвал </div> Утверждаю
  • 93. Как организовать стили так, чтобы: • разделить на экранные и принтерные • разделить на портретные и альбомные • ... • и уметь это дебажить 93
  • 94. Сначала бездумно body { width: 900px } @media print { body { width: auto /* переопределяю */ padding: 5mm } } 01. 02. 03. 04. 05. 06. 07. 08. 09. 94
  • 95. Потом с медиа-типами @media screen { body { width: 900px } } @media print { body { padding: 5mm } } 01. 02. 03. 04. 05. 06. 95
  • 96. Потом с медиа-выражениями @media screen { body { width: 900px } } @media print { body { padding: 5mm } } @media print and (orientation:landscape) { body { height: 210mm } } 01. 02. 03. 04. 05. 06. 07. 08. 09. 96
  • 97. Наконец, с умом <meta http-equiv='X-UA-Compatible' content='IE=EmulateIE7'> <!--[if gt IE 7]><!--> <link href='page.css'> <!--<![endif]--> <!--[if lt IE 8]> <link href='page.ie.css'> <![endif]--> <link rel='stylesheet' href=' page.screen.css ' media=' screen '> <link rel='stylesheet' href=' page.print.css ' media=' print '> <link rel='stylesheet' href=' page.print.portrait.css ' media='print and ( orientation:portrait )'> <link rel='stylesheet' href=' page.print.landscape.css ' media='print and ( orientation:landscape )'> 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 97
  • 98. Подождите, а что с IE? <meta ... content=' IE=EmulateIE7 '> А почему не так? <meta ... content=' IE=EmulateIE7 , IE=edge '> 98
  • 100. <div class='view'> <img class='map' src='map.png'> </div> .view { position: relative overflow: hidden width: 200px; height: 200px } .map { position: absolute top: 50%; left: 50% width: 1000px; height: 1000px margin: -500px 0 0 -500px } Большая картинка в маленьком окне 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 100
  • 101. <div class='view'> <img class='map' src='map.png'> </div> .view { position: relative overflow: hidden width: 200px; height: 200px } .map { position: absolute top: 50%; left: 50% width: 1000px; height: 1000px margin: -500px 0 0 -500px } Большая картинка в маленьком окне 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. overflow: hidden 9 на печати 101
  • 102. <div class='view'> <img class='map' src='map.png'> </div> .view { position: relative overflow: hidden width: 200px; height: 200px } .map { position: absolute top: 50%; left: 50% width: 1000px; height: 1000px margin: -500px 0 0 -500px } Большая картинка в маленьком окне 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. + display: inline-block 9 на печати 102
  • 103. .map { height: 100% } .head, .foot { position: absolute left: 0 right: 0 } .head { top: 0 } .foot { bottom: 0 } 3. Поток + «наляпки» 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 103 <div class='map'> Карта </div> <div class='head'> Шапка </div> <div class='foot'> Подвал </div>
  • 104. .map { height: 100% } .head, .foot { position: absolute left: 0 right: 0 } .head { top: 0 } .foot { bottom: 0 } 3. Поток + «наляпки» 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 9 на печати 104 <div class='head'> Шапка </div> <div class='foot'> Подвал </div> <div class='map'> Карта </div>
  • 105. .map { height: 100% } .head, .foot { position: absolute left: 0 right: 0 } .head { top: 0 } .foot { bottom: 0 } 3. Поток + «наляпки» 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 9 на печати 105 <div class='head'> Шапка </div> <div class='foot'> Подвал </div> <div class='map'> Карта </div>
  • 106. .map { height: 100% } .head, .foot { position: absolute left: 0 right: 0 } .head { top: 0 } .foot { bottom: 0 } 3. Поток + «наляпки» 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. MacOS 106 <div class='map'> Карта </div> <div class='head'> Шапка </div> <div class='foot'> Подвал </div>
  • 107. .map { height: 100% } .head, .foot { position: absolute left: 0 right: 0 } .head { top: 0 } .foot { bottom: 0 } 3. Поток + «наляпки» 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. MacOS 107 <div class='head'> Шапка </div> <div class='foot'> Подвал </div>
  • 108. .map { height: 100% } .head, .foot { position: absolute left: 0 right: 0 } .head { top: 0 } .foot { bottom: 0 } 3. Поток + «наляпки» 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. + + <div class='opacity-hack'></div> .opacity-hack { position: absolute background: red opacity: 0.3 } 01. 02. 03. 04. 05. MacOS 108 <div class='map'> Карта </div> <div class='head'> Шапка </div> <div class='foot'> Подвал </div>
  • 109. .map { height: 100% } .head, .foot { position: absolute left: 0 right: 0 } .head { top: 0 } .foot { bottom: 0 } 3. Поток + «наляпки» 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. <div class='opacity-hack'></div> .opacity-hack { position: absolute opacity: 0 } 01. 02. 03. 04. MacOS 109 <div class='map'> Карта </div> <div class='head'> Шапка </div> <div class='foot'> Подвал </div>
  • 110. <div class='view'> <img class='map' src='map.png'> </div> .view { overflow: hidden width: 200px; height: 200px } .map { position: absolute top: 50%; left: 50% width: 1000px; height: 1000px margin: -500px 0 0 -500px } Большая картинка в маленьком окне 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 110
  • 111. <div class='view'> <img class='map' src='map.png'> </div> .view { overflow: hidden width: 200px; height: 200px } .map { position: absolute top: 50%; left: 50% width: 1000px; height: 1000px margin: -500px 0 0 -500px } Большая картинка в маленьком окне 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. на печати 111
  • 112. <div class='view'> <div class=' map-holster '> <img class='map' src='map.png'> </div> </div> .map-holster { top: 50% left: 50% } .map { top: -50% left: -50% } Большая картинка в маленьком окне 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. на печати 112
  • 114. (function (jQuery) { var ua = navigator.userAgent; var browser = jQuery.browser; var browserName; switch (true) { case Boolean(browser.opera): browserName = ' opera '; break; case Boolean(ua.indexOf('Safari') !== -1): browserName = ' safari '; break; ... } if (browserName) { document. documentElement.className += (' ' + browserName); } }(jQuery)); Фильтруем браузеры 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 114 <html class=' opera '> ... </html> 01. 02. 03.
  • 115. html, body { height: 100% } .map { width: 100% height: 100% } 100% листа 01. 02. 03. 04. 05. 06. 07. 115 <div class='map'> Карта </div>
  • 116. html, body { height: 100% } .map { width: 100% height: 100% } 100% листа 01. 02. 03. 04. 05. 06. 07. 116 <div class='map'> Карта </div>
  • 117. html, body { height: 100% } .map { width: 100% height: 100% } @media print { @page { margin: 5mm } html.chrome { height: 267mm } html.safari { height: 247mm } } @media print and (orientation:landscape) { html.chrome { height: 187mm } html.safari { height: 167mm } } 100% листа 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 15. 16. 117 <div class='map'> Карта </div>
  • 119. @page /* Обнулить поля */ @page { margin: 0 } 01. 02. 03. 04. 119
  • 120. @page /* Обнулить поля */ @page { margin: 0 } 01. 02. 03. 04. 120
  • 121. @page /* Обнулить поля */ @page { margin: 0 } Молодец! 01. 02. 03. 04. 121
  • 122. Что здесь не так? 122
  • 123. Линии?! • это точно не border • точно не outline • не зазор между блоками • ... • что это? o_O 123
  • 128.
  • 129. <style media="print and (orientation:portrait)"> .view .map { top: -35px } </style> Переместить центр карты 01. 02. 03. 04. 05. 129 Шапка Подвал
  • 130. <style media="print and (orientation:portrait)"> .view .map { top: 75px } </style> Переместить центр карты 01. 02. 03. 04. 05. 130 Шапка Панорама Подвал
  • 132. Фон
  • 134. 134
  • 135. О питомнике Новости О породе Бобтейл Начинающему заводчику Выставки Чемпионы Приглашаем на вязки Фотогалерея Наши путешествия Наши услуги Полезные документы Ссылки Они навсегда в нашей памяти ... Контакты Напишите нам О ПИТОМНИКЕ Мы кушаем корма " HAPPY DOG " с 30 % скидкой! eda-82 135
  • 136. ГЛАВНАЯ ПРОДАЖА ФОТОГАЛЕРЕЯ ЧИХУАХУА ВЫПУСКНИКИ КОНТАКТЫ НОВОСТИ СТАТЬИ English version 136
  • 137. питомник основан в 1993 г. Москва ♥ порода: БРИТАНСКАЯ КОРОТКОШЕРСТНАЯ ♥ ПРОДАЖА британских котят ГОЛУБОГО КЛАССИЧЕСКОГО ОКРАСА Заводчик, инструктор-фелинолог Курофф Юлия Валерьевна тел. +7(916)426-18-18 e-mail: silverysnow@list.ru ♥ ГЛАВНАЯ ♥ Новости питомника ♥ О питомнике ♥ О породе ♥ К продаже ♥ Наши КОТЯТА (фотогалерея) БРИТАНСКИЕ КОТЯТА НА ПРОДАЖУ На данной страничке вашему вниманию предлагаются котята, которые прод питомнике в данный момент (возле фото указан возраст котят) Внимание. На данный момент в питомнике продаются голубые британские котята ведется предварительная запись на ГОЛУБЫХ БРИТАНСКИХ кот ЕСЛИ ВЫ желаете записаться заранее на котят - присылайте заявку по эл. Вы желаете купить британского котенка? Спасибо, что выбрали 137
  • 139. CSSWG: «Как включить печать фона?» .selector { -webkit-print-color-adjust: exact } Одно из предложений @page { print-color-adjust: exact } 01. 02. 03. 01. 02. 03. 139
  • 141. 141 <div class='map'> Карта </div> <div class='head'> Шапка </div> <div class='foot'> Подвал </div>
  • 142. Больше белого! • Это красиво • Это воздушно • Берите пример с хорошего ;) 142
  • 144. А так печатает .selector { filter: progid:DXImageTransform.Microsoft. gradient ( startColorstr= '#ffffff' , endColorstr= '#ffffff' , GradientType=0 ); } 01. 02. 03. 8- 144
  • 146. 1. Экстраразметка с картинкой <div class='view'> <img class='map' src=' green.png '> </div> .view { position: relative } .map { position: absolute top: 0; bottom: 0 left: 0; right: 0 } Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 146
  • 147. 1. Экстраразметка с картинкой <div class='view'> <img class='map' src='green.png'> </div> .view { position: relative } .map { position: absolute top: 0; bottom: 0 left: 0; right: 0 } Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 147 Старьё!
  • 148. 2. Псевдоэлемент + PNG <div class='view'></div> .view { position: relative } .view::before { position: absolute top: 0; bottom: 0 left: 0; right: 0 content : url( green.png ) } Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 148
  • 149. 2. Псевдоэлемент + PNG <div class='view'></div> .view { position: relative } .view::before { position: absolute top: 0; bottom: 0 left: 0; right: 0 content : url( green.png ) } Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 149 Неуспех!
  • 150. 2. Псевдоэлемент + SVG <div class='view'></div> .view::before { ... content: url(green. svg ) } <svg width=' 100% ' height=' 100% '> <rect fill=' #00ff00 ' width='100%' height='100%'/> </svg> Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 150
  • 151. 2. Псевдоэлемент + SVG <div class='view'></div> .view::before { ... content: url( 'data:image/svg+xml;<svg>...</svg>' ) } <svg width='100%' height='100%'> <rect fill='#00ff00' width='100%' height='100%'/> </svg> Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 151
  • 152. 2. Псевдоэлемент + SVG <div class='view'></div> .view::before { ... content: url('data:image/svg+xml; base64,[data] ') } <svg width='100%' height='100%'> <rect fill='#00ff00' width='100%' height='100%'/> </svg> Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 152
  • 153. 2. Псевдоэлемент + SVG <div class='view'></div> .view::before { ... content: url('data:image/svg+xml; base64,[data] ') } <svg width='100%' height='100%'> <rect fill='#00ff00' width='100%' height='100%'/> </svg> Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 153 на печати content:url(SVG)
  • 154. 3. Border <div class='view'></div> .view { position: relative overflow: hidden } .view ::before { position: absolute; z-index:-1 top: 0; bottom: 0 left: 0; right: 0 content: '' border: solid green border-width: 1000px 0 0 } Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 154
  • 155. 3. Border - i-блок <div class='head i-bgcolor '></div> <div class='foot i-bgcolor '></div> .i-bgcolor { position: relative overflow: hidden } .i-bgcolor::before { position: absolute; z-index:-1 top: 0; bottom: 0 left: 0; right: 0 content: '' border-style: solid border-width: 1000px 0 0 } Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. .head::before { border-color: green } .foot::before { border-color: red } 15. 16. 17. 18. 19. 20. 155
  • 156. 3. Border - i-блок <div class='head i-bgcolor '></div> <div class='foot i-bgcolor '></div> .i-bgcolor { position: relative overflow: hidden } .i-bgcolor::before { position: absolute; z-index:-1 top: 0; bottom: 0 left: 0; right: 0 content: '' border-style: solid border-width: 1000px 0 0 } Фоновый цвет 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. .head:before { border-color: green filter: ...Microsoft.gradient( startColorstr='#ff008000' endColorstr='#ff008000' GradientType=0) } .foot:before { border-color: red filter: ...Microsoft.gradient( startColorstr='#ffff0000' endColorstr='#ffff0000' GradientType=0) } 15. 16. 17. 18. 19. 20. 21. 22. 156 Утверждаю
  • 158. 158
  • 159. 159
  • 160. 160
  • 161. 161
  • 162. 1. Маркер списка .view { width: 300px height: 200px background: url(fox.png) 0 0 no-repeat list-style: url(fox.png) inside } @media print { .view { display: list-item } } Одиночная фоновая картинка 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 162
  • 163. 2. Псевдоэлемент + PNG <div class='view'></div> .view { position: relative width: 300px height: 200px } .view::before { position: absolute z-index:-1 content: url(fox.png) } Одиночная фоновая картинка 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 163
  • 164. 2. Псевдоэлемент + PNG <div class='view'></div> .view { position: relative width: 300px height: 200px } .view::before { position: absolute z-index:-1 content: url(fox.png) } Одиночная фоновая картинка 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 164 Утверждаю
  • 165. 3. Псевдоэлемент + опять SVG <div class='view'></div> .view { position: relative width: 300px height: 200px } .view::before { position: absolute z-index:-1 content: url(fox. svg ) } Одиночная фоновая картинка 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. <svg width='300' height='200' > <image xlink:href='fox. png ' width='300' height='200' /> </svg> 12. 13. 14. 165
  • 166. 3. Псевдоэлемент + опять SVG <div class='view'></div> .view { position: relative width: 300px height: 200px } .view::before { position: absolute z-index:-1 content: url(fox. svg ) } Одиночная фоновая картинка 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. <svg width='300' height='200' > <image xlink:href='fox. png ' width='300' height='200' /> </svg> 12. 13. 14. 166
  • 167. 1. Псевдоэлемент + SVG <div class='view'></div> .view { position: relative overflow: hidden width: 400px height: 200px } .view::before { position: absolute z-index:-1 content: url(small.fox.svg) } Размноженная фоновая картинка 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. <svg width=' 9999 ' height=' 80 '> <defs> <pattern id='myFox' width=' 9999 ' height=' 80 '> <image xlink:href='small.fox.png' width='100' height=' 80 '/> </pattern> </defs> <rect fill='url(#myFox)' width=' 9999 ' height=' 80 '/> </svg> 13. 14. 15. 16. 17. 18. 19. 20. 167
  • 168. 1. Псевдоэлемент + SVG <div class='view'></div> .view { position: relative overflow: hidden width: 400px height: 200px } .view::before { position: absolute z-index:-1 content: url(small.fox.svg) } Размноженная фоновая картинка 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. <svg width=' 100 ' height=' 9999 '> <defs> <pattern id='myFox' width=' 100 ' height=' 9999 '> <image xlink:href='small.fox.png' width=' 100 ' height='80'/> </pattern> </defs> <rect fill='url(#myFox)' width=' 100 ' height=' 9999 '/> </svg> 13. 14. 15. 16. 17. 18. 19. 20. 168
  • 169. 1. Псевдоэлемент + SVG <div class='view'></div> .view { position: relative overflow: hidden width: 400px height: 200px } .view::before { position: absolute z-index:-1 content: url(small.fox.svg) } Размноженная фоновая картинка 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. <svg width=' 9999 ' height=' 9999 '> <defs> <pattern id='myFox' width=' 9999 ' height=' 9999 '> <image xlink:href='small.fox.png' width='100' height='80'/> </pattern> </defs> <rect fill='url(#myFox)' width=' 9999 ' height=' 9999 '/> </svg> 13. 14. 15. 16. 17. 18. 19. 20. 169
  • 170. 1. Псевдоэлемент + SVG <div class='view'></div> .view { position: relative overflow: hidden width: 400px height: 200px } .view::before { position: absolute z-index:-1 content: url(small.fox.svg) } Размноженная фоновая картинка 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. <svg width='9999' height='9999'> <defs> <pattern id='myFox' width='9999' height='9999'> <image xlink:href='small.fox.png' width='100' height='80'/> </pattern> </defs> <rect fill='url(#myFox)' width='9999' height='9999'/> </svg> 13. 14. 15. 16. 17. 18. 19. 20. 170
  • 171. 2. Border-image ... border-image: url(box.png) 100 0 0 0 / auto repeat; ... Размноженная фоновая картинка 01. 02. 03. 171
  • 172. 2. Border-image <div class='view'></div> .view { position: relative overflow: hidden width: 400px height: 200px } Размноженная фоновая картинка 01. 02. 03. 04. 05. 06. 07. .view::before { position: absolute; z-index:-1 top: 0 left: 0 right: 0 content: '' border-style: solid border-width: 100px 0 0 border-image: url(fox.png) 100 0 0 0 / auto repeat } 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 172
  • 173. 2. Border-image <div class='view'></div> .view { position: relative overflow: hidden width: 400px height: 200px } Размноженная фоновая картинка 01. 02. 03. 04. 05. 06. 07. .view::before { position: absolute; z-index:-1 top: 0 left: 0 right: 0 content: '' border-style: solid border-width: 0 0 0 100px border-image: url(fox.png) 0 0 0 100 / auto repeat } 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 173
  • 174. 3. Бонус <div class='view'></div> .view { position: relative overflow: hidden width: 400px height: 200px } Растянутая фоновая картинка 01. 02. 03. 04. 05. 06. 07. .view::before { position: absolute; z-index:-1 top: 0 left: 0 right: 0 content: '' border-style: solid border-width: 0 0 0 100px border-image: url(fox.png) 0 0 0 100 / auto stretch } 08. 09. 10. 11. 12. 13. 14. 15. 16. 17. 174
  • 175. • Нужен фоновый цвет? ::before + border-color • Нужна одинокая картинка в фоне? ::before + content: url(png) • Хотите замостить картинку? ::before + border-image: url(pbg) + repeat • Или растянуть? ::before + border-image: url(pbg) + stretch 175
  • 176.
  • 177. 177
  • 178. Распечатай Яндекс.Карты Вадим Макишвили, июль 2013 • makishvili.com • makishvili@yandex-team.ru 178