随机悬停元素需要悬停在特定div上

时间:2014-12-30 21:36:33

标签: javascript jquery html css hover

我尝试过对javascript进行大量修改,但我似乎无法做到正确。基本上我没有得到的功能是能够让悬停的幽灵div悬停在页面中的某个div或元素上,而不是只浮动在任何地方。

$(document).ready(function(){
animateDiv();

});

function makeNewPosition(){

// Get viewport dimensions (remove the dimension of the div)
var h = $(window).height() - 50;
var w = $(window).width() - 50;

var nh = Math.floor(Math.random() * h);
var nw = Math.floor(Math.random() * w);

return [nh,nw];    

}

function animateDiv(){
var newq = makeNewPosition();
var oldq = $('.shape').offset();
var speed = calcSpeed([oldq.top, oldq.left], newq);

$('.shape').animate({ top: newq[0], left: newq[1] }, speed, function(){
  animateDiv();       
});

};

function calcSpeed(prev, next) {

var x = Math.abs(prev[1] - next[1]);
var y = Math.abs(prev[0] - next[0]);

var greatest = x > y ? x : y;

var speedModifier = 0.3;

var speed = Math.ceil(greatest/speedModifier);

return speed;

}



$(document).ready(function(){
 $(".shape").show("slow");
 $(".coupontooltip").show("slow");


 });







$(document).ready(function(){
 $(".coupontooltip").show("slow");


 });

A fiddle with the current situation

1 个答案:

答案 0 :(得分:0)

要使其附加到某个div,您必须首先遵循这些:

  1. 传递要应用随机悬停div的 元素 。因此,animateDiv()应为animateDiv(element),其中variable元素是您要应用此div的DOM元素。

  2. 通过限制.shape最大 - 最小偏移高度和重量的值来考虑动画来获取DOM元素。使用此var nh = Math.floor(Math.random() * (maxHeight - minHeight)) + minHeight;

  3. 还要考虑 .shape宽度和高度 ,以便它不会超出DOM元素。通过.shape高度/宽度减少maxHeight / maxWidth。

  4. 您修改后的makeNewPosition(element)将如下所示:

    function makeNewPosition(element1) {
        var minHeight = $(element1).offset().top;
        var maxHeight = $(element1).height() + minHeight - 90;
        var minWidth = $(element1).offset().left;
        var maxWidth = $(element1).width() + minWidth - 90;
        var nh = Math.floor(Math.random() * (maxHeight - minHeight)) + minHeight;
        var nw = Math.floor(Math.random() * (maxWidth - minWidth)) + minWidth;
        return [nh, nw];
    }
    

    Working fiddle

    P.S。已经减少了一点速度,所以效果在小div上看起来更舒服你可以相应地设置它