使用js实现滑动页面效果,很漂亮

使用了一个现成的js

先贴html

  1. <html>
  2. <head>
  3. <metahttp-equiv="content-type"content="text/html;charset=gb2312">
  4. <title>滑动页面效果示例</title>
  5. <linkrel="stylesheet"href="stylesheets/glider.css"type="text/css"media="screen"charset="utf-8">
  6. <scriptsrc="javascripts/prototype.js"type="text/javascript"charset="utf-8"></script>
  7. <scriptsrc="javascripts/effects.js"type="text/javascript"charset="utf-8"></script>
  8. <scriptsrc="javascripts/glider.js"type="text/javascript"charset="utf-8"></script>
  9. </head>
  10. <body>
  11. <h1>滑动页面效果示例(Glider.js)</h1>
  12. <divid="my-glider">
  13. <divclass="controls">
  14. <ahref="#HTML1">HTML1</a>|
  15. <ahref="#HTML2">HTML2</a>|
  16. <ahref="#HTML3">HTML3</a>|
  17. </div>
  18. <divclass="scroller">
  19. <divclass="content">
  20. <divclass="section"id="HTML1">
  21. HTML1
  22. <objectstyle="border:0px"type="text/x-scriptlet"data="1.html"width=100%height="500px"></object>
  23. </div>
  24. <divclass="section"id="HTML2">
  25. HTML2
  26. <objectstyle="border:0px"type="text/x-scriptlet"data="2.html"width=100%height="500px"></object>
  27. </div>
  28. <divclass="section"id="HTML3">
  29. HTML3
  30. <p>一个youtube篮球视频</p>
  31. <objectwidth="200"height="150">
  32. <paramname="movie"value="http://www.youtube.com/v/Ef-f7EeDpYI"></param>
  33. <paramname="wmode"value="transparent"></param>
  34. <embedsrc="http://www.youtube.com/v/Ef-f7EeDpYI"type="application/x-shockwave-flash"wmode="transparent"width="200"height="150"></embed>
  35. </object>
  36. </div>
  37. </div>
  38. </div>
  39. </div>
  40. <ahref="#"onClick="my_glider.previous();returnfalse;">Previous</a>|<ahref="#"onClick="my_glider.next();returnfalse">Next</a>
  41. <scripttype="text/javascript"charset="utf-8">
  42. varmy_glider=newGlider('my-glider',{duration:0.5});
  43. </script>
  44. </body>
  45. </html>


glider.js
  1. /**
  2. *@authorBrunoBornsztein<bruno@missingmethod.com>
  3. *@copyright2007CurblyLLC
  4. *@packageGlider
  5. *@licenseMIT
  6. *@urlhttp://www.missingmethod.com/projects/glider/
  7. *@version0.0.3
  8. *@dependenciesprototype.js1.5.1+,effects.js
  9. */
  10. /*ThankstoAndrewDupontforrefactoringhelpandcodecleanup-http://andrewdupont.net/*/
  11. Glider=Class.create();
  12. Object.extend(Object.extend(Glider.prototype,Abstract.prototype),{
  13. initialize:function(wrapper,options){
  14. this.scrolling=false;
  15. this.wrapper=$(wrapper);
  16. this.scroller=this.wrapper.down('div.scroller');
  17. this.sections=this.wrapper.getElementsBySelector('div.section');
  18. this.options=Object.extend({duration:1.0,frequency:3},options||{});
  19. this.sections.each(function(section,index){
  20. section._index=index;
  21. });
  22. this.events={
  23. click:this.click.bind(this)
  24. };
  25. this.addObservers();
  26. if(this.options.initialSection)this.moveTo(this.options.initialSection,this.scroller,{duration:this.options.duration});//initialSectionshouldbetheidofthesectionyouwanttoshowuponload
  27. if(this.options.autoGlide)this.start();
  28. },
  29. addObservers:function(){
  30. varcontrols=this.wrapper.getElementsBySelector('div.controlsa');
  31. controls.invoke('observe','click',this.events.click);
  32. },
  33. click:function(event){
  34. this.stop();
  35. varelement=Event.findElement(event,'a');
  36. if(this.scrolling)this.scrolling.cancel();
  37. this.moveTo(element.href.split("#")[1],this.scroller,{duration:this.options.duration});
  38. Event.stop(event);
  39. },
  40. moveTo:function(element,container,options){
  41. this.current=$(element);
  42. Position.prepare();
  43. varcontainerOffset=Position.cumulativeOffset(container),
  44. elementOffset=Position.cumulativeOffset($(element));
  45. this.scrolling=newEffect.SmoothScroll(container,
  46. {duration:options.duration,x:(elementOffset[0]-containerOffset[0]),y:(elementOffset[1]-containerOffset[1])});
  47. returnfalse;
  48. },
  49. next:function(){
  50. if(this.current){
  51. varcurrentIndex=this.current._index;
  52. varnextIndex=(this.sections.length-1==currentIndex)?0:currentIndex+1;
  53. }elsevarnextIndex=1;
  54. this.moveTo(this.sections[nextIndex],this.scroller,{
  55. duration:this.options.duration
  56. });
  57. },
  58. previous:function(){
  59. if(this.current){
  60. varcurrentIndex=this.current._index;
  61. varprevIndex=(currentIndex==0)?this.sections.length-1:
  62. currentIndex-1;
  63. }elsevarprevIndex=this.sections.length-1;
  64. this.moveTo(this.sections[prevIndex],this.scroller,{
  65. duration:this.options.duration
  66. });
  67. },
  68. stop:function()
  69. {
  70. clearTimeout(this.timer);
  71. },
  72. start:function()
  73. {
  74. this.periodicallyUpdate();
  75. },
  76. periodicallyUpdate:function()
  77. {
  78. if(this.timer!=null){
  79. clearTimeout(this.timer);
  80. this.next();
  81. }
  82. this.timer=setTimeout(this.periodicallyUpdate.bind(this),this.options.frequency*1000);
  83. }
  84. });
  85. Effect.SmoothScroll=Class.create();
  86. Object.extend(Object.extend(Effect.SmoothScroll.prototype,Effect.Base.prototype),{
  87. initialize:function(element){
  88. this.element=$(element);
  89. varoptions=Object.extend({
  90. x:0,
  91. y:0,
  92. mode:'absolute'
  93. },arguments[1]||{});
  94. this.start(options);
  95. },
  96. setup:function(){
  97. if(this.options.continuous&&!this.element._ext){
  98. this.element.cleanWhitespace();
  99. this.element._ext=true;
  100. this.element.appendChild(this.element.firstChild);
  101. }
  102. this.originalLeft=this.element.scrollLeft;
  103. this.originalTop=this.element.scrollTop;
  104. if(this.options.mode=='absolute'){
  105. this.options.x-=this.originalLeft;
  106. this.options.y-=this.originalTop;
  107. }
  108. },
  109. update:function(position){
  110. this.element.scrollLeft=this.options.x*position+this.originalLeft;
  111. this.element.scrollTop=this.options.y*position+this.originalTop;
  112. }
  113. });
还有2个js,内容太多,这里先不贴出来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值