缩短jQuery动画功能,并在键盘上恢复到“开始”
Cut jQuery Animate Function Short and Revert to Start on Keypress
我有一个简单的丢球动画,我正在使用jQuery animate函数。球从bottom: 600
开始下落,直到到达地面,即bottom: 90
。
function ballbounce() {
$('.football').animate({
'bottom': 90
}, bouncetime, 'easeOutBounce', function() {
});
}
当按下空格键时,我想缩短下降的动画,让球再次上升。我尝试通过检测按键,获得球的当前bottom
值,在该值上添加300px,然后将其设置为球上的新bottom
值。但我希望下降的动画从那一点开始恢复。
$(document).keydown(function(e) {
switch(e.which) {
case 32: // spacebar
var ballOffset = $('.football').offset();
var currentBallPosition = $(window).height() - ballOffset.top - $('.football').height();
var newBallPosition = currentBallPosition + 300;
$('.football').css("bottom", newBallPosition);
break;
default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action
});
我不能让它工作,我不确定哪里出了问题。只有在动画完成后按空格键时,才会更新球的bottom
。
这是一个基本的足球比赛。所以球掉了下来,你按下空格键将球再次踢回空中。这是一个好的解决方案吗?
我会在元素上调用.stop()
,然后将其重置到原始位置。您可以在动画之前将原始位置存储为元素本身的数据属性,然后使用该属性稍后重置它,如下所示:
function ballbounce(selector,bouncetime) {
var $ball= $(selector);
$ball.data('original-top',$ball.position().top )
$ball.animate({ top: '+550px'}, bouncetime, "easeOutBounce", function() {
//animation complete
});
return $ball;
}
var $ballReference=ballbounce('.football',5000);
$(document).keydown(function(e) {
switch(e.which) {
case 32: // spacebar
$ballReference.stop().css({top:$ballReference.data('original-top')});
break;
default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action
});
.football{
width:100px;
height:100px;
background-color:#ccc;
position:absolute;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script>
<div class="football"></div>
相关文章:
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- 如何临时暂停浏览器渲染,然后恢复整个页面
- NodeJS-readline暂停和恢复事件发射器(逐行读取)
- 谷歌地图劫持了iphone's滚动(触摸事件)-如何恢复
- 如何添加类,同时开始在文本字段中输入文本
- 我希望在不替换现有变量的情况下恢复localStorage中的变量
- 希望日期开始结束于while循环中的一个房间id的一个数组
- 克隆和恢复”;工具化的“;元素
- 如何暂停和恢复jquery间隔
- ng模型内的ng重复的ng重复开始
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- Yii2从点击链接开始加载模式
- 当我尝试恢复JWPlayer视频时,它从一开始就开始了
- 开始按钮用于启用和恢复动画,而无需在双击时再次重复该功能(javascript)
- 如何使用事件处理程序连续循环遍历数组列表(从结束恢复到开始)
- 开始停止恢复 AJAX
- 从“开始”屏幕恢复动画 CSS3
- 在窗口大小调整事件开始时暂停 Greensock 动画,在调整大小事件结束时恢复动画
- 缩短jQuery动画功能,并在键盘上恢复到“开始”
- jQuery可拖动改变图像大小在拖动开始,恢复原来的大小在恢复