Как сделать фон кликабельным? - PullRequest
3 голосов
/ 07 мая 2009

Меня попросили сделать спонсорский фон (захват сайта) для одного из наших сайтов, и возник вопрос, могу ли я сделать логотипы на мозаичном фоне кликабельными.

Моей первоначальной мыслью было «нет», но чем больше я об этом думаю, тем больше я думаю, что было бы возможно, если бы я либо использовал JavaScript, чтобы сделать элемент body кликабельным, либо подделал фоновое изображение как слой под содержание и сделать это кликабельным.

Кто-нибудь делал это раньше с успехом с одним из этих подходов или с другим?

JQuery:

$('body').click()

HTML:

<body>
  <div id="sponsors-div" style="position:fixed;z-index:0;"><a style="display:block;height:100%" href="http://sponsors.url"></a></div>
  <div id="site-container" style="position:relative;z-index:1;">...

Ответы [ 5 ]

3 голосов
/ 07 мая 2009

Вы должны быть осторожны в отношении различий в порядке событий (захват событий и всплывающие сообщения) между IE и Mozilla. Если у вас есть элемент с событием onClick, который по существу занимает всю страницу, а затем другие кликабельные элементы в верхней его части, нажатие на один из этих элементов может вызвать ОБА события, что, вероятно, не является предполагаемой функциональностью.

ППК объясняет это лучше, чем я.

0 голосов
/ 02 ноября 2012

Я написал решение для этого, так как не смог найти полного кросс-браузерного. Он предназначен для размещения и отображения интерактивного фона спонсора в сети сайтов.

Поместите этот код в файл js и разместите его в центральном домене:

$(function () {
//** change these values to your own
var bg_ad_css = "url(http://cdn.my-domain.com/sponsor-bg.jpg) no-repeat center top #ffffff";
var bg_ad_url = "http://www.sponsor-website.com/";
//**
var bg_ad_anchor = $(document.createElement("a"));
bg_ad_anchor.css({ display: "block", position: "absolute", "z-index": 0, top: 0, left: 0, width: $(window).width(), height: $(window).height() });
bg_ad_anchor.attr("target", "_blank").attr("href", bg_ad_url);
$(window).resize(function () {
    if (bg_ad_anchor) {
        bg_ad_anchor.css({ width: $(window).width(), height: $(window).height() });
    }
});
if (window._bg_ad) {
    for (var i = 0; i < _bg_ad.contentWrappers.length; i++) {
        var element = _bg_ad.contentWrappers[i];
        $(element.selector).css({ position: "relative", "z-index": element.zIndex == undefined ? 1 : element.zIndex });
    }
}
$("body").css({ "background": bg_ad_css }).append(bg_ad_anchor);

});

Затем используйте его на одном или нескольких веб-сайтах:

<script type="text/javascript">
    var _bg_ad = {
        //These should be content areas that need to be above the banner link
        //You may only need one element in this array, customize at will
        contentWrappers: [{ selector: "#top_bar", zIndex: 2 }, { selector: "#wrapper" }, { selector: "#footerBottom" }]
    };
</script>
<script type="text/javascript" src="http://www.my-domain.com/js/bg-ad.js"></script>
0 голосов
/ 07 мая 2009

Вы можете создать очень большой тег привязки и заставить тело скрывать переполнение, например:

html, body {
    width: 100%;
    height: 100%;
    overflow: hidden;
}

Получите вдохновение от этого сайта: http://newline.dk/index.aspx

0 голосов
/ 07 мая 2009

Должно сработать событие клика по спонсорам. Размещение его на теле может повлиять на другие части страницы (дочерние элементы тела).

0 голосов
/ 07 мая 2009

Почему бы не превратить фоновое изображение в карту изображений и не привязать событие щелчка к каждой области:

$('#area51').click(function() {...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...