【发布时间】:2018-09-12 10:31:58
【问题描述】:
我一直在尝试找到一种解决方案,该解决方案允许我在按住单个键时在 div 中替换 css 属性。
我正在尝试通过使用左右箭头来移动角色,但我无法在按下键时移动它,现在它仅在按下右键然后释放时移动。
这是我的代码:
$(document).keydown(function(e) {
switch (e.which) {
case 37: //left arrow key
$("#matteo-walking").css("left", "-150px");
break;
case 39: //right arrow key
$("#matteo-walking").css("left", "-150px");
$("#matteo-walking").css("left", "0px");
$("#matteo-walking").css("left", "-150px");
break;
}
});
$(document).keyup(function(e) {
switch (e.which) {
case 37: //left arrow key
$("#matteo-walking").css("left", "-150px");
break;
case 39: //right arrow key
$("#matteo-walking").css("left", "0px");
break;
}
});
#matteo-container {
position: absolute;
left: 50%;
bottom: 150px;
}
#matteo-character {
position: relative;
left: -50%;
width: 150px;
height: 200px;
overflow: hidden;
}
#matteo-walking {
background: url('http://www.matteoschiatti.it/fancycv/images/matteo-walking.png');
position: absolute;
height: 200px;
width: 300px;
left: 0;
top: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="matteo-container">
<div id="matteo-character">
<div id="matteo-walking"></div>
</div>
</div>
在这个阶段,角色一直在移动他的腿,只要我按下并释放右键,有没有办法在我一直按下时得到相同的结果?我在想这样的事情:每个 X px,left 属性返回 0px,然后在 X px 之后,left 属性一次又一次变为-150px,但我不确定这是否是正确的方法以及如何做到这一点,因为我还必须想想角色的回归。
这里是小提琴:
【问题讨论】:
-
你试过动画吗?在 keydown 上给它一个动画并在 keyup 上删除动画
-
您应该做的是制作 CSS 动画并在按下键时应用它。并且只有在释放密钥后才能将其移除。
-
还有一点要记住,你的角色不是会移动的,而是背景才是真正会移动的。