Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在逐个触发单个元素时,在单个元素上设置多个动画_Javascript_Jquery_Css_Animation - Fatal编程技术网

Javascript 在逐个触发单个元素时,在单个元素上设置多个动画

Javascript 在逐个触发单个元素时,在单个元素上设置多个动画,javascript,jquery,css,animation,Javascript,Jquery,Css,Animation,我想在手机上的单个元素上设置多个动画,然后逐个触发它们。我通过under方法实现了这一点,但有两个问题: 我需要准确的位置和尺寸,所以我使用上下宽度高度。但我知道如果使用这些属性,浏览器需要再次渲染,因此效率不高 在第二个动画中,虽然我设置了动画填充模式:forwards,但仍然需要设置0%关键帧,以确保第二个动画起点位于第一个动画终点 谢谢你提供了更有效的方法 html: js: 您可能想尝试使用JQuery keyframe插件,可以在此处下载: 然后可以初始化一组变量,如高度、宽度、顶

我想在手机上的单个元素上设置多个动画,然后逐个触发它们。我通过under方法实现了这一点,但有两个问题:

  • 我需要准确的位置和尺寸,所以我使用
    上下宽度高度
    。但我知道如果使用这些属性,浏览器需要再次渲染,因此效率不高

  • 在第二个动画中,虽然我设置了
    动画填充模式:forwards
    ,但仍然需要设置
    0%
    关键帧,以确保第二个动画起点位于第一个动画终点

  • 谢谢你提供了更有效的方法

    html:

    js:


    您可能想尝试使用JQuery keyframe插件,可以在此处下载:

    然后可以初始化一组变量,如高度、宽度、顶部和左侧,如下所示:

    var $moon = $('.moon'),
        newHeight = '0',
        newWidth = '0',
        newTop = '0',
        newLeft = '0';
    
    然后对于点击,你可以为每次点击尝试动态变量,每次点击递增40

    $('#first').click(function() {
        newHeight = $moon.height() + 40+'px';
        newWidth = $moon.width() + 40+'px';
        newTop = $moon.position().top + 80+'px';
        newLeft = $moon.position().left + 80+'px';
    
        $moon.removeClass('first');
        $moon.removeClass('second');
    
        $.keyframe.define([{
            name: 'first',    
            '0%': {'height': $moon.height()+'px',
                 'width': $moon.width() +'px',
                 'left': $moon.position().left+'px',
                 'top': $moon.position().top+'px'
                    },
            '100%': {'height': newHeight,
                     'width': newWidth,
                     'left': newLeft,
                     'top': newTop
                    }
        }]);
      $moon.addClass('first');
    });
    
    $('#second').click(function() {          
        newHeight = $moon.height() + 40+'px';
        newWidth = $moon.width() + 40+'px';
        newTop = $moon.position().top + 80+'px';
        newLeft = $moon.position().left + 80+'px';
    
        $moon.removeClass('first');  
        $moon.removeClass('second');  
    
        $.keyframe.define([{
            name: 'second',  
            '0%': {'height': $moon.height()+'px',
                 'width': $moon.width()+'px',
                 'left': $moon.position().left+'px',
                 'top': $moon.position().top+'px',
                    },  
            '100%': {'height': newHeight,
                     'width': newWidth,
                     'left': newLeft,
                     'top': newTop,
                    }
        }]);
        $moon.addClass('second');
    });
    

    Leo,我想你可以试试。如果你想试试JQuery keyframe插件,你可以在这里下载:

    然后可以初始化一组变量,如高度、宽度、顶部和左侧,如下所示:

    var $moon = $('.moon'),
        newHeight = '0',
        newWidth = '0',
        newTop = '0',
        newLeft = '0';
    
    然后对于点击,你可以为每次点击尝试动态变量,每次点击递增40

    $('#first').click(function() {
        newHeight = $moon.height() + 40+'px';
        newWidth = $moon.width() + 40+'px';
        newTop = $moon.position().top + 80+'px';
        newLeft = $moon.position().left + 80+'px';
    
        $moon.removeClass('first');
        $moon.removeClass('second');
    
        $.keyframe.define([{
            name: 'first',    
            '0%': {'height': $moon.height()+'px',
                 'width': $moon.width() +'px',
                 'left': $moon.position().left+'px',
                 'top': $moon.position().top+'px'
                    },
            '100%': {'height': newHeight,
                     'width': newWidth,
                     'left': newLeft,
                     'top': newTop
                    }
        }]);
      $moon.addClass('first');
    });
    
    $('#second').click(function() {          
        newHeight = $moon.height() + 40+'px';
        newWidth = $moon.width() + 40+'px';
        newTop = $moon.position().top + 80+'px';
        newLeft = $moon.position().left + 80+'px';
    
        $moon.removeClass('first');  
        $moon.removeClass('second');  
    
        $.keyframe.define([{
            name: 'second',  
            '0%': {'height': $moon.height()+'px',
                 'width': $moon.width()+'px',
                 'left': $moon.position().left+'px',
                 'top': $moon.position().top+'px',
                    },  
            '100%': {'height': newHeight,
                     'width': newWidth,
                     'left': newLeft,
                     'top': newTop,
                    }
        }]);
        $moon.addClass('second');
    });
    
    我想你可以试试,利奥

    $('#first').click(function() {
        newHeight = $moon.height() + 40+'px';
        newWidth = $moon.width() + 40+'px';
        newTop = $moon.position().top + 80+'px';
        newLeft = $moon.position().left + 80+'px';
    
        $moon.removeClass('first');
        $moon.removeClass('second');
    
        $.keyframe.define([{
            name: 'first',    
            '0%': {'height': $moon.height()+'px',
                 'width': $moon.width() +'px',
                 'left': $moon.position().left+'px',
                 'top': $moon.position().top+'px'
                    },
            '100%': {'height': newHeight,
                     'width': newWidth,
                     'left': newLeft,
                     'top': newTop
                    }
        }]);
      $moon.addClass('first');
    });
    
    $('#second').click(function() {          
        newHeight = $moon.height() + 40+'px';
        newWidth = $moon.width() + 40+'px';
        newTop = $moon.position().top + 80+'px';
        newLeft = $moon.position().left + 80+'px';
    
        $moon.removeClass('first');  
        $moon.removeClass('second');  
    
        $.keyframe.define([{
            name: 'second',  
            '0%': {'height': $moon.height()+'px',
                 'width': $moon.width()+'px',
                 'left': $moon.position().left+'px',
                 'top': $moon.position().top+'px',
                    },  
            '100%': {'height': newHeight,
                     'width': newWidth,
                     'left': newLeft,
                     'top': newTop,
                    }
        }]);
        $moon.addClass('second');
    });