Кликабельный фон / подложка для сайта через HTML, CSS, JS

e

Кликабельный фон сайта

Кликабельный фон сайта

Реализацию данной задачи вы наверняка встречали на крупных порталах, так как подобный рекламный брендинг привлекает максимум внимания посетителей и является более эффективным чем обычные баннеры. Сегодня рассмотрим как сделать фон ссылкой на сайте с помощью HTML, CSS, Javascript и некоторых других «подручных средств».

Ранее в блоге уже публиковались статьи по схожей тематике, например, про большую фоновую картинку у веб-страниц или создание изображения на весь экран но все эти варианты были не кликабельные. Тем не менее, для общего развития и улучшения навыков советуем их изучить.

Кликабельная подложка для сайта через HTML и CSS

Если искать решение в интернете, то найдете несколько заметок с более простой или сложной реализацией, с интеграцией брендинга под WordPress CMS и др. Скомпоновав все эти знания и советы в один код и немного его модифицировав, получили следующий результат:

<html>
<head>
<style type="text/css">
.home { background:url('ВАШ-АДРЕС-ГРАФИКИ.jpg'); background-position:top center; background-repeat:no-repeat; background-attachment:fixed;
} #ad_bg { top: 0; left:0; position: absolute; display: inline; width: 100%; cursor: pointer; text-decoration: none;
} .main-content-block { position: relative; z-index: 1000; margin: 0pt auto; width: 900px; border: 1px solid red; background: #fff;
} </style>
</head>
<body class="home"> <a style="height:1200px;" id="ad_bg" href="http://ВАШ-САЙТ.ru" target="_blank">&nbsp;</a> <div class="main-content-block"> Text </div>
</body>
</html>

Визуально выглядит как-то так:

Кликабельная подложка для сайта

Кликабельная подложка для сайта

Важные пояснения по примеру:

  1. Во-первых, вы видите, что весь код собран в одном блоке, но вы можете разделить его на 2 части: отдельно HTML, а стили вынести во второй файл (style.css).
  2. Тег A с адресом для перехода (href) добавляется сразу после класса body. При этом в стилях у него выключается подчеркивание, ставится обычный курсор и ширина 100%. Свойство target=»_blank» откроет линк в новом окне. Не забудьте заменить URL на нужный!
  3. Адрес фонового изображения задается в свойстве CSS background для класса в BODY. Обязательно(!) поменяйте адрес картинки (ВАШ-АДРЕС-ГРАФИКИ.jpg) на свое значение.
  4. Параметр background-attachment: fixed не обязательный, он фиксирует фоновую графику при прокрутке, если вам надо. Важно, чтобы в блоке контента задавался тип позиционирования position: relative. Дабы сохранить адаптивность предлагается добавлять DIV’у вокруг основного контента margin auto.
  5. Все названия классов и блоков разрешается менять на свои, главное не забывайте делать это и в HTML, и в CSS одновременно.

Высота подложки сайта

В коде вы можете видеть заданную высоту height:1200px — следовательно HTML ссылка фона будет активна только в данном диапазоне. Это пригодится, когда рекламный брендинг должен располагаться исключительно в шапке сайта, а потом через полупрозрачный переход постепенно сливаться с обычным бекграундом (по которому кликать уже не получится).

Кликабельный фон для сайта

Кликабельный фон для сайта

В принципе, значение height при желании легко перемещается из тега А в CSS.

Внимание! Если же вам надо сделать наоборот, чтобы абсолютно вся подложка была кликабельной, то, во-первых, удаляете опцию height из HTML, а во-вторых, для идентификатора #ad_bg в стилях используете:

#ad_bg { top: 0; left:0; display: inline; width: 100%; height: 100%; position: fixed; cursor: pointer; text-decoration: none;
}

Из новых фишек здесь: высота 100% + позиционирование блока fixed. При этом значение background-attachment для бекграунда может быть как фиксированное, так и со скроллингом.

Рандомные кликабельные фоновые картинки

Рассмотрим полезную модификацию предыдущего решения, когда нужно разместить в background несколько разных фоток, которые бы менялись случайным образом при переходах по страницам проекта. Заметьте, речь идет не о слайдшоу, а про обновление веб-страниц. Принцип реализации следующий.

В CSS-файле создаете несколько стилей с разными background:url (photo1.jpg, photo2.jpg и photo3.jpg):

.home1 { background:url('photo1.jpg'); background-position:top center; background-repeat:no-repeat; background-attachment:fixed;
} .home2 { background:url('photo2.jpg'); background-position:top center; background-repeat:no-repeat; background-attachment:fixed;
} .home3 { background:url('photo3.jpg'); background-position:top center; background-repeat:no-repeat; background-attachment:fixed;
}

Далее перед body добавляете скрипт случайной выборки параметров из массива:

<?php
$banners[1] = array('home1','http://site1.com/');
$banners[2] = array('home2','http://site2.com/');
$banners[3] = array('home3','http://site3.com/');
$rnd = rand(1,3);
?> <body class="<?php echo $banners[$rnd][0]; ?>"> <a style="height:1200px;" id="ad_bg" href="<?php echo $banners[$rnd][1]; ?>" target="_blank">&nbsp;</a> <div class="main-content-block"> Text </div>
</body>

Суть следующая: каждый раз при генерации страницы выбирается рандомное число от 1 до 3х, а затем оно подставляются в код и указывает порядковый номер ячейки массива.

Здесь важно:

  • задать в переменной banners линки, куда пользователь будет переходить при клике на фоновое изображение (вместо site1, site2 и site3);
  • укажите правильные адреса картинок в background:url;
  • не забудьте скопировать остальную часть стилей из прошлого примера (#ad_bg, .main-content-block);
  • меняйте значение высоты подложки height:1200px, если потребуется.

Внимание! Учитывая наличие PHP функций, работать данная конструкция будет только для исполняемых файлов с расширением .php (в стандартной .html странице не запустится).

Кликабельный фон сайта с ссылкой через Javascript

Если по каким-то причинам первый способ решения задачи вам не подошел, то есть парочка на JS. Следует заметить, что в примерах ниже используются совсем другое оформление, поэтому визуальный результат тестирования у вас получится несколько иной. Однако в данном случае важным является именно Javascript, — все остальное подправите уже после его внедрения.

1. Итак, вариант1 найден здесь, он максимально компактный. Сначала добавляете HTML:

<body> <img src="http://ВАШ-САЙТ.com/НАЗВАНИЕ-КАРТИНКИ.jpg" class="ad" alt="" rel="http://ВАШ-САЙТ.com" /> <div class="contents"> <span>testing</span> </div>
</body>

Затем стили:

img{position:absolute;display:block;top:0;left:0;z-index:1;}
div{position:relative;z-index:1000;}
span{color:#f00;}

Ну, и дальше сам скрипт. Можете сделать из него отдельный JS-файл либо прописать сразу в body:

<body> <script type="text/javascript"> $("img.ad").click(function(e){ window.location = $(this).attr("rel"); }); </script> </body>

2. Исходник второго решения, к сожалению, не сохранился, остался лишь код:

<html>
<head>
<style type="text/css">
.ad-banner-image {
position: absolute;
display: block;
left: 0pt;
z-index: 1;
width: 100%;
height: 1252px;
background: url('ВАШ-АДРЕС-ГРАФИКИ.jpg') no-repeat scroll center top transparent; top: 0pt; cursor: pointer;
} .main-content-block{
position: relative;
z-index: 1000;
margin: 0pt auto;
width: 900px;
border: 1px solid red;
background: #fff;
}
</style> </head>
<body> <div class="ad-banner-image" onclick="window.open(this.href, '_self'); window.open('http://ВАШ-САЙТ.ru'); return false;"></div> <div class="main-content-block"> Text </div>
</body>
</html>

Здесь для события onclick был добавлено открытие нового окна с указанным URL. Его вместе с адресом подложки под сайт следует заменить на свои. Оформление также следует подправить под себя. Оба метода тестировались, и на момент написания поста все работало.

Реализация на Вордпресс и доп.нюансы

Во-первых, пару слов следует сказать про добавление ссылки на фон в одной из самых популярных CMS систем. Всю информацию по теме найдете в статье про кликабельное фоновое изображение WordPress сайта где описано 2 метода:

  • через HTML/CSS — он совпадает с нашим примером в начале публикации;
  • с помощью соответствующих модулей.

Как оказалось, сейчас в системе нет на 100% подходящих бесплатных плагинов. Ранее в Дизайн Мании мы рассказывали о двух возможных вариантах по теме, но один из них (Background Manager) уже недоступен/удален.

Что же делать? Если у вас недостаточно навыков для написания модуля с нуля, то следует выбрать максимально подходящий по смыслу и преобразовать его под свои нужды. К сожалению, без дополнительных навыков веб-разработки просто не обойтись. Вы можете взять:

  • WP-Backgrounds Lite — выполняет установку полноэкранного кликабельного фона на страницах/постах блога. Вам придется сделать так, чтобы он реализовывал функцию и для остального веб-проекта.
  • Backdrop — его преимущество в задании всех параметров через Настройщик шаблона (находящийся в админке). Нужно добавить в исходник плагина еще одну опцию и подправить вывод результирующего HTML-кода.

Также советуем почитать статью о брендированной рекламной подложке — почему этот формат интересует рекламодателей, какие нюансы и вопросы возникают при его внедрении и т.п.

Если вы знаете еще какие-то варианты как сделать фон ссылкой, делитесь ими в комментариях.