首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >背景图像事件处理程序

背景图像事件处理程序
EN

Stack Overflow用户
提问于 2011-11-09 06:07:29
回答 3查看 3K关注 0票数 5

如果一个超文本标记语言元素(例如div)有一个CSS背景图片,是否可以指定一个当用户点击背景图片时触发的事件处理程序,而不是元素的任何其他部分?

如果是这样的话,我们将非常感谢一个JQuery示例。

EN

回答 3

Stack Overflow用户

发布于 2011-11-09 06:28:32

虽然不可能检测到在背景图片上的点击,但你可以使用一些聪明的JS和CSS魔法,在背景图片上设计一个掩蔽元素,比如:http://jsfiddle.net/ahmednuaman/75Rxu/,这是代码:

HTML:

代码语言:javascript
复制
<div id="bg_img_1"></div>
<div id="bg_img_2">
    <div id="hit"></div>
</div>

CSS:

代码语言:javascript
复制
div
{
    display: block;
    position: relative;
    width: 200px;
    height: 200px;
    background-repeat: no-repeat;
    background-position: center center;
}
#bg_img_1
{
    background-image: url('http://placekitten.com/100/100');   
}
#bg_img_2
{
    background-image: url('http://placekitten.com/100/100');   
}
#hit
{
    display: block;
    position: absolute;
    width: 100px;
    height: 100px;
    background: #000000;
    opacity: .3;
    margin: 50px;
}

JS:

代码语言:javascript
复制
function handleClick(e)
{
    console.log(e.target.id);
}

$( '#bg_img_1' ).click( handleClick );
$( '#hit' ).click( handleClick );
票数 2
EN

Stack Overflow用户

发布于 2012-08-10 02:21:34

我认为有一个更好更简单的方法来实现这一点,这是我的解决方案

代码语言:javascript
复制
$(document).ready(function() {
$("*").click(function(event)
{
    if(event.target.nodeName == 'BODY')
    {
        alert('you have just clicked the body background');
    }
});
票数 2
EN

Stack Overflow用户

发布于 2011-11-09 06:56:14

这是一个非常基本的代码,它只在x轴上工作,以显示注入一个带有背景图像URL值的img元素作为它的src,并检测背景图像的高度和宽度来计算点击是否发生在背景图像上。

这段代码需要大量的改进。它不能在y轴上工作。此外,background-positionbackground-size也没有参与其中。但添加这些期货很容易。

下面是:

下面是jQuery代码:

代码语言:javascript
复制
$('#d').bind('click', function(e){
    var d = $(this),
        bg = {};
    //insert an image to detect background-image image size
    $('body').append(
        $('<img/>').attr('src',
                   d.css('background-image').split('(')[1].split(')')[0]
    ).attr('class', 'testImage'));
    bg.h = $('.testImage').height();
    bg.w = $('.testImage').width();
   console.log(bg, e.offsetX, $('.testImage').width());

    if(e.offsetX >  $('.testImage').width()){
        $('#l').text('it was NOT on background-image');
    }
    else{
        $('#l').text('it was on background-image');
    }
   $('.testImage').hide();
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8057747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档