需要帮助添加/修改我的脚本以包含使用jquery和css的一些轮换

时间:2012-10-16 17:15:53

标签: javascript jquery html css

  

这是小提琴:

     

http://jsfiddle.net/7txt3/29/

我想让记录上的记录针像你在下面的图片中看到的那样,当用户点击播放按钮时旋转到记录上(见小提琴)

针位置不一定是最终的,我可能希望它位于右上角。(我已经包含了所需的图像和底部的css)

Record

现在,如果您单击播放(请参阅小提琴,将鼠标悬停在其中一个记录封面上,单击播放),记录针从左侧进入,然后如果您在同一记录上单击停止,则返回到剩下。如果您在停止播放之前单击其他记录上的播放,则它只会停留在同一位置。

我希望它像下面的图像一样,它总是显示但不在记录上,除非你单击播放按钮然后它旋转。然后,如果你在另一个记录中点击播放,而当前正在播放它只是改变/移动。当然,如果你点击停止它就会取消记录。

The record needle pattern I want

这是我目前的剧本:

$(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;
}

3 个答案:

答案 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)

我认为这应该会产生预期的效果。

要使针正确旋转,您需要设置变换原点。

http://jsfiddle.net/7txt3/35/

您当然希望修改速度/百分比。

    #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)

这是一个使用CANVAS获取你想要的针动画的演示。

http://jsfiddle.net/7txt3/46/

由于发送者前缀垃圾邮件CSS3和缺乏浏览器支持旋转点。我认为CANVAS会更清洁。