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

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

Upload: webcrunch

Post on 14-Nov-2014

1.070 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

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

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

сети Яндекса

Юрий Беляков

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

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

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

Требования к рекламному блокуКод должен работать независимо от:

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

работу кода или внешний вид рекламного блока.

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

Защита от конфликтовДля того, чтобы снизить вероятность конфликтов мы используем:

– префиксы;– специальный «ластик»;– инструкцию !important;– длинные селекторы;– случайные имена классов.

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

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

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

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

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

Представление маски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]];

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

Функция отрисовки иконки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);

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

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;}

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

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

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

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

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

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

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

Событие DOMContentLoaded/* Firefox, Opera */

if (document.addEventListener) {

document.addEventListener('DOMContentLoaded', init, false);

}

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

Решение для 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(); }};

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

Решение для Safari/* Safari */if (/WebKit|Khtml/i.test(navigator.userAgent)) { var timer = setInterval(function() { if (/loaded|

complete/.test(document.readyState)) { clearInterval(timer); init(); } }, 1);}

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

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

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

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

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

Элемент canvasvar 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);

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

Метод toDataURL()var sDataUrl =

oContext.canvas.toDataURL('image/png');

oBlock.style.backgroundImage = 'url(' + sDataUrl + ')';

oBlock.style.backgroundRepeat = 'repeat-x';

oBlock.style.backgroundPosition = 'top';

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

Фильтр GradientoBlock.style.filter =

'progid:DXImageTransform.Microsoft.Gradient(Enabled=true, GradientType=0, StartColorStr=' + sColorStart + ', EndColorStr=' + sColorEnd + ')';

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

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

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

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

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

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

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

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

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

Код для IE<div class="header">Яндекс.Директ</div>

div.header {background-color: white; filter: flipv() fliph(); writing-mode: tb-rl;}

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

Формат 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>

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

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

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

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

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

«Выпрыгивание» из iframeif (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;}

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

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

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

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

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

Вычисление яркости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';

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

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

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

«Всплывающий» баннер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);

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

Спасибо за внимание!

Юрий Беляков

адрес: 111033, Россия, Москва

ул. Самокатная д. 1, стр. 21

телефон: +7 (495) 739-00-00

факс: +7 (495) 739-70-70

эл. почта: [email protected]