'

Кроссбраузерные решения в Рекламной сети Яндекса

Понравилась презентация – покажи это...





Слайд 0

Кроссбраузерные решения в Рекламной сети Яндекса Юрий Беляков


Слайд 1

Главная страница РСЯ


Слайд 2

Требования к рекламному блоку Код должен работать независимо от: посещаемости сайта; браузера посетителя; верстки и дизайна сайта; «кривизны рук» веб-мастера; попыток умышленно (или случайно) повлиять на работу кода или внешний вид рекламного блока.


Слайд 3

Защита от конфликтов Для того, чтобы снизить вероятность конфликтов мы используем: префиксы; специальный «ластик»; инструкцию !important; длинные селекторы; случайные имена классов.


Слайд 4

Нестандартная отрисовка иконок


Слайд 5

Получение маски


Слайд 6

Представление маски var aIconMask = [ [0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0], [0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0], [0,0,0,0,0,1,1,1,0,1,0,1,0,0,0,0], [0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0], [0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0], [0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0], [0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0], [0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0], [0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0] ];


Слайд 7

Функция отрисовки иконки var sIconCode = ''; for (var i = 0; i < aIconMask.length; i++) { var sIconRow = ''; for (var j = 0; j < aIconMask[i].length; j++) { sIconRow += aIconMask[i][j] ? '<td />' : '<th />'; } sIconCode += '<tr>' + sIconRow + '</tr>'; } sIconCode = '<div class="icon"><table>' + sIconCode + '</table></div>'; document.write(sIconCode);


Слайд 8

HTML-код и стили <div class="icon"> <table> <tr><td/>... <td/></tr> ... </table> </div> div.icon table {height: 16px; width: 16px;} div.icon td, div.icon th {height: 1px; width: 1px;} /* colors */ div.icon td {background-color: #eaedef;} div.icon th {background-color: #000000;}


Слайд 9

Пример цветового оформления


Слайд 10

Быстрый показ рекламы


Слайд 11

Структура сайта на фреймах


Слайд 12

Событие DOMContentLoaded /* Firefox, Opera */ if (document.addEventListener) { document.addEventListener('DOMContentLoaded', init, false); }


Слайд 13

Решение для IE /* Internet Explorer */ document.write('<script src="//:" id="ie_onload" defer="defer"><\/script>'); var script = document.getElementById('ie_onload'); script.onreadystatechange = function() { if (this.readyState == 'complete') { init(); } };


Слайд 14

Решение для Safari /* Safari */ if (/WebKit|Khtml/i.test(navigator.userAgent)) { var timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(timer); init(); } }, 1); }


Слайд 15

Для остальных браузеров window.onload();


Слайд 16

Динамический градиент


Слайд 17

Элемент canvas var oCanvas = document.createElement('canvas'); var oContext = oCanvas.getContext('2d'); var oGradient = oContext.createLinearGradient(0, 0, 0, iBlockHeight); oGradient.addColorStop(0, sColorStart); oGradient.addColorStop(1, sColorEnd); oContext.fillStyle = oGradient; oContext.fillRect(0, 0, iBlockWidth, iBlockHeight);


Слайд 18

Метод toDataURL() var sDataUrl = oContext.canvas.toDataURL('image/png'); oBlock.style.backgroundImage = 'url(' + sDataUrl + ')'; oBlock.style.backgroundRepeat = 'repeat-x'; oBlock.style.backgroundPosition = 'top';


Слайд 19

Фильтр Gradient oBlock.style.filter = 'progid:DXImageTransform.Microsoft.Gradient(Enabled=true, GradientType=0, StartColorStr=' + sColorStart + ', EndColorStr=' + sColorEnd + ')';


Слайд 20

Пример блока с градиентом


Слайд 21

Поведение градиента при resize


Слайд 22

Вертикальные надписи


Слайд 23

Поворот и отражение


Слайд 24

Код для IE <div class="header">Яндекс.Директ</div> div.header {background-color: white; filter: flipv() fliph(); writing-mode: tb-rl;}


Слайд 25

Формат SVG <svg xmlns="http://www.w3.org/2000/svg"> <text transform="rotate(-90)"> <tspan>Яндекс.Директ</tspan> </text> </svg> <object type="image/svg+xml" data="data:image/svg+xml,…"></object>


Слайд 26

Примеры фиксированного блока


Слайд 27

Другие решения «Выпрыгивание» из iframe Определение контрастности «Всплывающий» баннер


Слайд 28

«Выпрыгивание» из iframe if (top.document && (self != top)) { try { if (self.document.domain != top.document.domain) isSameDomain = false; } catch (error) { isSameDomain = false; } } if (!isSameDomain) { self.parent.location = document.location; }


Слайд 29

Определение контрастности


Слайд 30

Логотипы Яндекса


Слайд 31

Вычисление яркости var sColor = '#393939'; var iRed = parseInt(sColor.substr(1, 2), 16); var iGreen = parseInt(sColor.substr(3, 2), 16); var iBlue = parseInt(sColor.substr(5, 2), 16); var fBrightness = (iRed * 299 + iGreen * 587 + iBlue * 114) / 1000; return (fBrightness > 125) ? 'black' : 'white';


Слайд 32

Пример блока на темном фоне


Слайд 33

«Всплывающий» баннер var oHtml = document.getElementsByTagName('html')[0]; if (!document.body) { oHtml.appendChild(document.createElement('body')); } var oBody = document.body; var oBlock = document.createElement('div'); oBlock.innerHTML = sHtml; oBody.insertBefore(oBlock, oBody.firstChild);


Слайд 34

Спасибо за внимание! Юрий Беляков адрес: 111033, Россия, Москва ул. Самокатная д. 1, стр. 21 телефон: +7 (495) 739-00-00 факс: +7 (495) 739-70-70 эл. почта: belyan@yandex-team.ru


×

HTML:





Ссылка: