jQuery幕布卷轴应用程序

时间:2014-03-14 02:06:18

标签: javascript jquery

enter image description here enter image description here

我试图建立一个窗帘滑块 - 就像Apple网站上使用的那样 - http://www.apple.com/30-years/

http://jsfiddle.net/NYEaX/405/

我创建了以下代码 - 我需要添加侦听器来检测鼠标悬停在页面的最左侧/最右侧 - 然后调用指数幻灯片。

var curtainSlider = {
    invoke: function(el){
         var that = this;

         var list = $(el + " ul").find("li");
         this.initialListWidth = list.outerWidth(true);

        list
            .mouseover(function() {
                console.log("over"); 
                that.expand(this);
            })
            .mouseout(function() {
                console.log("out");
                that.contract(this);
            });         
    },
    expand: function(el){
        var that = this;

        $(el).stop().animate({
            width: that.initialListWidth*2
        },400, function() {
            // Animation complete.
        });
    },
    contract: function(el){
        var that = this;

        $(el).stop().animate({
            width: that.initialListWidth
        },400, function() {
            // Animation complete.
        });
    }

}


$(document).ready(function() {
    console.log( "ready!" );

    curtainSlider.invoke("#curtain");
});

1 个答案:

答案 0 :(得分:0)

enter image description here

**最新代码 - 完全整合 - http://jsfiddle.net/NYEaX/538/ **

我已经稳定了这个版本的卷轴。 - 这会使图像和光谱在启动时消失。它重新定位了一个元素,使图像更加集中对齐。

http://jsfiddle.net/NYEaX/432/

我已经将负责移动滑块单元的代码分离出来,加速/减速。我希望现在关注的这部分应用程序。

http://jsfiddle.net/NYEaX/434/

我试图将pagex变量推送到动画部分,以帮助操纵动画的持续时间。如何稳定/改善这一点。我发现很难对苹果30年的滑块进行逆向工程。

var curtainSlider = {
    bindEvents: function(){
        var that = this;    
        $("body").on("mousemove",function(event) {
            if (event.pageX < 50) {
                // animate curtain left
                console.log("curtain left");
                that.scroll("l", event.pageX);
            }

            if (event.pageX > (window.width - 50)) {
                // animate curtain right
                console.log("curtain right");                
                that.scroll("r", window.width - event.pageX);
            }
        });    

    },
    scroll: function(direction, leveler){
        var charge = "-";
        if(direction == "r"){
            charge = "+";
        }

        $('#curtainholder #slider').animate({
            left: charge+"="+leveler
        },400, function() {
            // Animation complete.
        });
    },
    invoke: function(el){
         var that = this;
        this.bindEvents();
    }
}


$(document).ready(function() {
    curtainSlider.invoke("#curtain");
});