我正在尝试为屏幕上的一些点设置动画,它们应该在悬停时停止。

代码:

function dot(_options) {

    this.id = _options.id;
    this.speedX = 0;
    this.speedY = 0;
    this.posx = _options.posx;
    this.posy = _options.posy;
    this.width;
    this.height;
    this.animation = true;
};

dot.prototype.animationStep = function() {
    if(this.animation == true) {
        while (this.speedX == 0)
            this.speedX = randPos(-3, 3);
        while (this.speedY == 0)
            this.speedY = randPos(-3, 3);

    if (this.posx + this.speedX <= 0 || this.posx + this.speedX + this.width >= $(window).width()-2){
            if(this.speedX < 0){
                 this.speedX = randPos(1.5, 3);
            }
            else {
                 this.speedX = randPos(-1.5, -3);
            }
        }
    if (this.posy + this.speedY <= 0 || this.posy + this.speedY + this.height >= $(window).height()-85){
            if(this.speedY < 0){
                 this.speedY = randPos(1, 3);
            }
            else {
                 this.speedY = randPos(-1, -3);
            }
        }
        this.posx += this.speedX;
        this.posy += this.speedY;

        this.width = $('#dot' + this.id).width();
        this.height = $('#dot' + this.id).height();

        $('#dot' + this.id).parent().css({
            'left': this.posx + 'px',
            'top': this.posy + 'px'
        });

        // $('#dot' + this.id).html(this.speedX + ' / ' + this.speedY);
    }
}

dot.prototype.pause = function(){
    this.speedX = 0;
    this.speedY = 0;
}

dot.prototype.unpause = function() {
    while (this.speedX == 0)
        this.speedX = randPos(-3, 3);
    while (this.speedY == 0)
        this.speedY = randPos(-3, 3);
}

var dots = [];
dots.push(new dot({
    id: 1,
    posx: 100,
    posy: 100
}));
dots.push(new dot({
    id: 2,
    posx: 100,
    posy: 100
}));
dots.push(new dot({
    id: 3,
    posx: 100,
    posy: 100
}));
dots.push(new dot({
    id: 4,
    posx: 100,
    posy: 100
}));
dots.push(new dot({
    id: 5,
    posx: 100,
    posy: 100
}));
dots.push(new dot({
    id: 6,
    posx: 100,
    posy: 100
}));

window.setInterval(function() {

    for (var i = 0; i < dots.length; i++) {

        dots[i].animationStep();
    }

}, 16);

function randPos(max, min) {

    return (Math.random() * (max - min + 1)) + min;

}


$(document).ready(function(){
    $('.dot').hover(
        function(){
            var dataid = $('div', this).attr('data-id');
            dots[dataid-1].animation=false;

        },
        function(){
            var dataid = $('div', this).attr('data-id');
            dots[dataid-1].animation=true;
        });
    $('.dot div').hover(
        function(){
            var dataid = $(this).attr('data-id');
            dots[dataid-1].animation=false;

        },
        function(){
            var dataid = $(this).attr('data-id');
            dots[dataid-1].animation=true;
        });
        $('.div2').hover(
        function(){
            var dataid = $(this).attr('data-id');
            dots[dataid-1].animation=false;

        },
        function(){
            var dataid = $(this).attr('data-id');
            dots[dataid-1].animation=true;
        });
        $('.color').hover(
        function(){
            var dataid = $(this).attr('data-id');
            dots[dataid-1].animation=false;

        },
        function(){
            var dataid = $(this).attr('data-id');
            dots[dataid-1].animation=true;
        });
});


在Firefox和Safari(Windows)中,它可以接受。这只是一点点效果,即点飞离了光标。
但是在Chrome,IE和Safari(Mac)中,您无法捕捉到它们在光标前面飞了很远的点,我也不知道为什么。

我希望你们中的一些可以帮助我。

这是我的fiddle

非常感谢!

最佳答案

我解决了我在CSS中添加了transition: 0.3s。这给了我错误,特别是干扰了chrome mac safari。

关于javascript - jQuery/JS CSS动画在悬停时工作错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24798475/

10-12 01:09