2009.10 24

活动盒:jQuery滑动盒

本来就说着要写关于jQuery的文章,分享出来,同时强迫自己学习。一直就折腾着,给itatour设计;还折腾了淘宝店;还有之前去面试之类的(现在,我决定自己单干一段时间了,非常感谢各位热心的同学的帮助和推荐)。对Zippo有兴趣的同学,或者想送礼给有抽烟人士的同学可以看一下我昨天(10/23/2009)开的网店:

淘宝网店 » ZIPPO收藏夹 ZIPPO收藏夹

然后,我们步入正题。doublechou同学在Marguerite Su中已经翻译了两篇了,我也不能落后,应该来交作业。不过,Moving Boxes这篇文章并不适合翻译,所以,来讲讲这代码里面值得我们学习的地方法。当然,CSS和HTML就忽略了,我们把重点放在JS上。先来看一个 Demo :

moving box
效果预览 | 下载源文件

这个活动盒效果,除了一个jQuery框架之外,就是一个slider.js了。你可以在源文件中找到。而这里面很值得我们学习的有2个方面:

1. 智能判断向方向滑动

不过,似乎查了很多资料,都显示direction是用于marquee的,方向可以是上下左右。而这是不是因为只有两个方向? (似乎这容易被我误导,请自行理解)事实上,就是可以借鉴,全部理解得透彻这事可以慢慢来。

//关于方向 direction true = right, false = left
function change(direction) {
//当不是第一个或最后一个面板时返回false
if((direction && !(curPanel < totalPanels)) || (!direction && (curPanel <= 1))) { return false; }
//当不是当前滑动面板
if (($("#slider").data("currentlyMoving") == false)) {
$("#slider").data("currentlyMoving", true);
//利用条件运算符 "变量=布尔描述?当相互时执行的值:当不互时执行的值"
var next = direction ? curPanel + 1 : curPanel - 1;
var leftValue = $(".scrollContainer").css("left");
var movement = direction ? parseFloat(leftValue, 10) - movingDistance : parseFloat(leftValue, 10) + movingDistance;
$(".scrollContainer")
.stop()
.animate({
"left": movement
}, function() {
$("#slider").data("currentlyMoving", false);
});
returnToNormal("#panel_"+curPanel);
growBigger("#panel_"+next);
curPanel = next;
$("#panel_"+(curPanel+1)).unbind();
$("#panel_"+(curPanel+1)).click(function(){ change(true); });
$("#panel_"+(curPanel-1)).unbind();
$("#panel_"+(curPanel-1)).click(function(){ change(false); });
$("#panel_"+curPanel).unbind();
}
}

// 设置当面显示面板,这里设置的是3
growBigger("#panel_3");
var curPanel = 3;
$("#panel_"+(curPanel+1)).click(function(){ change(true); });
$("#panel_"+(curPanel-1)).click(function(){ change(false); });
//当方向图标被点击时向左或向右
$(".right").click(function(){ change(true); });
$(".left").click(function(){ change(false); });

2. 提供键盘支持

这个,在给小众软件(哦也,小众11月就4周年了,也会用上我做的主题)做主题的时候,就用过了。还是用了keycode:13 => enter,是我唯一知道。当然,现在又知道space和right、left键了。这是多好的用户体验呢!请自行理解,因为很简单:

$(window).keydown(function(event){
switch (event.keyCode) {
case 13: //回车
$(".right").click();
break;
case 32: //空格
$(".right").click();
break;
case 37: //左方向键
$(".left").click();
break;
case 39: //右方向键
$(".right").click();
break;
}
});

好吧,文章这么一篇,也折腾完了,多多指教!谢谢。我这人就怕文章错了,即使我可以有时候折腾着来改,但这不能愚弄群众啊,所以,这篇文章也显得这么简单,基本上属于代码分享了。嘿嘿…你,将就着先吧。

23

  1. 2009.10.24 2:15 am
    Marguerite Su(visit): [回复]

    哇哈哈,能走后门捞到大大的沙发也不容易耶~

  2. 2009.10.24 2:18 am
    sofish(visit): [回复]

    @Marguerite Su: 这个时候,连鸟儿都睡啦。沙发很轻松。

  3. 2009.10.24 2:21 am
    Justice(visit): [回复]

    CSS-Tricks上的确经常有很棒的东西~

  4. 2009.10.24 2:33 am
    bolo(visit): [回复]

    曾经观摩过这个实例,但是不知道还有键盘支持。

  5. 2009.10.24 8:24 am
    jasonbai(visit): [回复]

    刚发现这个有键盘支持…

  6. 2009.10.24 9:20 am
    underone(visit): [回复]

    淘宝店一定光临

  7. 2009.10.24 10:49 am
    会律博客(visit): [回复]

    呀,都10点多了,我还能这么靠前,难道是奇迹?

  8. 2009.10.24 11:29 am
    ZH CEXO(visit): [回复]

    那个,原来还发在了博客上……

  9. 2009.10.24 12:33 pm
    Dianso(visit): [回复]

    保存下来,漫漫看。

  10. 2009.10.24 4:41 pm
    anyLiv(visit): [回复]

    能给个 TechMeme 的邀请码吗?谢谢了……

  11. 2009.10.24 7:20 pm
    左岸读书(visit): [回复]

    这种效果挺美的~
    另:sofish抽烟吗?

  12. 2009.10.24 9:03 pm
    aisinvon(visit): [回复]

    嗯,我现在做页面就经常用到这效果啊

  13. 2009.10.24 9:05 pm
    aisinvon(visit): [回复]

    要是做成那种2边的按钮当按到最右端或最左端变成不可点击或灰色状态就好啦

  14. 2009.10.24 10:59 pm
    Mars(visit): [回复]

    demo在IE里好像不支持键盘操作

  15. 2009.10.24 11:16 pm
    韦斯特(visit): [回复]

    这里永远这么热闹。

  16. 2009.10.24 11:21 pm
    韦斯特(visit): [回复]

    刚才到你的shop59608902中和几个人握爪,挺好。大家一起握爪。有趣

  17. 2009.10.25 1:37 pm
    真好吧(visit): [回复]

    你可以建个独立的网站那有力于推广,呵呵呵

  18. 2009.10.25 2:09 pm
    忆往事(visit): [回复]

    请问一下您用的这个评论回复插件是什么?

  19. 2009.10.25 3:01 pm
    Hobo(visit): [回复]

    好东西,可以研究研究呵呵,正好在学jQuery

  20. 2009.10.25 8:59 pm
    sofish(visit): [回复]

    @underone: 欢迎来捧场!

    @左岸读书: 哈,这个不抽,只是之前在的公司是做这个的,自己熟悉,也有货源,就来做了。

    @韦斯特: 握爪握爪。

    @忆往事: 用mail to commentor…

  21. 2009.10.26 11:09 am
    WordPress啦(visit): [回复]

    很酷炫,比较喜欢

  22. 2009.10.26 1:39 pm
    sleepy(visit): [回复]

    很不错的效果,收藏

  23. 2009.10.26 10:24 pm
    Alex(visit): [回复]

    防小一点貌似可以摆到博客的首页上,看到这玩儿又有点想折腾主题了,O(∩_∩)O哈哈~

Additional comments powered by BackType