我尝试过对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");
});
答案 0 :(得分:0)
要使其附加到某个div,您必须首先遵循这些:
传递要应用随机悬停div的 元素 。因此,animateDiv()
应为animateDiv(element)
,其中variable元素是您要应用此div的DOM元素。
通过限制.shape
的最大 - 最小偏移高度和重量的值来考虑动画来获取DOM元素。使用此var nh = Math.floor(Math.random() * (maxHeight - minHeight)) + minHeight;
还要考虑 .shape
宽度和高度 ,以便它不会超出DOM元素。通过.shape
高度/宽度减少maxHeight / maxWidth。
您修改后的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];
}
P.S。已经减少了一点速度,所以效果在小div上看起来更舒服你可以相应地设置它