Detect element if over another element via using CSS3 Transform

后端 未结 2 566
我寻月下人不归
我寻月下人不归 2020-12-07 04:14

Any easy way to detect element if its over another element ?

I\'m using CSS3 transform to move a element. (because)

Example : - All element size 10x10 pixels

2条回答
  •  被撕碎了的回忆
    2020-12-07 04:49

    You need to use offset to get the position of the moved object and compare it with the "blocks".

    I've setup in my demonstration the "blocks" to change to blue when they are overlayed. But you can do whatever you want.

    Also you were creating an overhead with your setInterval. I've moved it to the keyup event handler.

    Further I recommend you to store the position of the "blocks" in an array if they are static elements and access them when needed.

    Working example

    var objTop = my.offset().top,
        objLeft = my.offset().left,
        objWidth = my.width(),
        objHeight = my.height();            
    
    $('.fixed').each(function(e){
        var self = $(this),
            selfLeft = self.offset().left,
            selfTop = self.offset().top,
            selfWidth = self.width(),
            selfHeight = self.height();
    
        self.css('background','black');                 
    
        if((objLeft + objWidth) > selfLeft && objLeft < (selfLeft + selfWidth) && (objTop + objHeight) > selfTop && objTop < (selfTop + selfHeight)){
            self.css('background','blue');
        }
    
    });
    

提交回复
热议问题