这是小提琴:
我想让记录上的记录针像你在下面的图片中看到的那样,当用户点击播放按钮时旋转到记录上(见小提琴)
针位置不一定是最终的,我可能希望它位于右上角。(我已经包含了所需的图像和底部的css)
现在,如果您单击播放(请参阅小提琴,将鼠标悬停在其中一个记录封面上,单击播放),记录针从左侧进入,然后如果您在同一记录上单击停止,则返回到剩下。如果您在停止播放之前单击其他记录上的播放,则它只会停留在同一位置。
我希望它像下面的图像一样,它总是显示但不在记录上,除非你单击播放按钮然后它旋转。然后,如果你在另一个记录中点击播放,而当前正在播放它只是改变/移动。当然,如果你点击停止它就会取消记录。
这是我目前的剧本:
$(function(){
var station = $('.player-station'),
record = $('.record2:first'),
playBtns = $('.play'),
info = $('.nprecinfo');
var isPlaying = false;
playBtns.click(function()
{
var btn = $(this);
if(btn.text() == 'STOP')
{
btn.text('PLAY');
record.css({'-webkit-animation-play-state': 'paused',
'-moz-animation-play-state': 'paused'});
$('#needle').show().animate({"left": "-=120px"}, "slow");
isPlaying = false;
return;
};
playBtns.text('PLAY');
var album = btn.closest('.album');
station.text(album.find('h3').text());
info.text(album.find('.recordinfo').text());
record.css({'-webkit-animation-play-state': 'running',
'-moz-animation-play-state': 'running'});
if (isPlaying == false)
{
$('#needle').show().animate({"left": "+=120px"}, "slow");
isPlaying = true;
}
$('#lrvinyl').css("background-image","url("+btn.attr('rel')+")");
$('#lrvinyl').hide().fadeIn();
btn.text('STOP');
});
});
这是记录针的当前css:
#needle {
background-image:url(http://benlevywebdesign.com/somafm/images/recordneedle2.png);
background-repeat: no-repeat;
width:220px;
height:220px;
position:absolute;
left:-115px;
top:185px;
z-index:10;
overflow:hidden;
}
如果你想把针放在右上角这里是图像和css用于小提琴。您可能需要移动记录
(.record2)
,所以只需将css更改为left:-4px;
#needle {
background-image:url(http://benlevywebdesign.com/somafm/images/recordneedle4.png);
background-repeat: no-repeat;
width:220px;
height:220px;
position:absolute;
left:205px;
top:10px;
z-index:10;
overflow:hidden;
}
答案 0 :(得分:5)
+1详细问题! :)
你已经依赖css3来制作旋转光盘了,因为这对于css过渡是非常可行的,所以你需要用javascript来添加/删除一个类。
演示:http://jsfiddle.net/7txt3/31/
这基本上是我添加的(加上一些供应商前缀)
CSS
#needle
transition: all .2s ease;
}
#needle.playing {
transform: rotate(-10deg);
}
jquery的
从.animate(...)
更改为.removeClass()
和.addClass()
次来电。
我也改变了#needle css,以便从针手的左侧旋转,但你可以改为https://developer.mozilla.org/en-US/docs/CSS/transform-origin。
修改强>
抱歉,我错过了关于记录更改之间动画的部分。您可以做的一件事是删除该类,然后在延迟后将其添加回来,如下所示: http://jsfiddle.net/7txt3/53/
答案 1 :(得分:3)
我认为这应该会产生预期的效果。
要使针正确旋转,您需要设置变换原点。
您当然希望修改速度/百分比。
#needle {
background-image:url(http://benlevywebdesign.com/somafm/images/recordneedle2.png);
background-repeat: no-repeat;
width:220px;
height:220px;
position:absolute;
top:185px;
z-index:10;
overflow:hidden;
}
#needle.playing {
-webkit-animation-name: needle_move;
-webkit-animation-duration:8s;
-webkit-animation-timing-function:linear;
-webkit-animation-iteration-count:infinite;
-webkit-animation-direction:normal;
-webkit-transform-origin: 0px 10px;
-webkit-transform: rotate(0deg);
-webkit-transition: all .2s;
-moz-transition: all .2s;
transition: all .2s;
}
@-webkit-keyframes needle_move {
0% {
-webkit-transform: rotate(0deg);
}
50% {
-webkit-transform: rotate(-15deg);
}
70% {
-webkit-transform: rotate(-15deg);
}
0% {
-webkit-transform: rotate(0deg);
}
}
答案 2 :(得分:1)