Discuz教程网

一个JQuery写的点击上下滚动的小例子

[复制链接]
authicon dly 发表于 2011-9-8 16:23:57 | 显示全部楼层 |阅读模式
功能需求:
1、滚动框内显示10条记录;
2、有向上和向下滚动按钮,每次点击按钮向上或向下滚动记录条数,不自动滚动;
3、记录条数不循环滚动,滚动到起点或终点则停止滚动。
下面介绍一个简单实现方法:
1、外层容器(div) overflow: hidden,内层列表(ul)
2、按钮点击事件触发一个修改列表的函数
3、应用animate实现动画效果
具体不再啰嗦,直接上代码
CSS设置
  1. <style type="text/css">
  2. ul, li
  3. {
  4. margin: 0;
  5. padding: 0;
  6. }
  7. #scrollDiv
  8. {
  9. width: 300px;
  10. height: 250px;
  11. min-height: 25px;
  12. line-height: 25px;
  13. border: #ccc 1px solid;
  14. overflow: hidden;
  15. }
  16. #scrollDiv li
  17. {
  18. height: 25px;
  19. padding-left: 10px;
  20. }
  21. </style>
复制代码

JQuery 代码
  1. <script type="text/javascript">
  2. (function ($) {
  3. $.fn.extend({
  4. Scroll: function (opt, callback) {
  5. if (!opt) var opt = {};
  6. var _btnUp = $("#" + opt.up); //Shawphy:向上按钮
  7. var _btnDown = $("#" + opt.down); //Shawphy:向下按钮
  8. var _this = this.eq(0).find("ul:first");
  9. var lineH = _this.find("li:first").height(); //获取行高
  10. var line = opt.line ? parseInt(opt.line, 10) : parseInt(this.height() / lineH, 10); //每次滚动的行数,默认为一屏,即父容器高度
  11. var speed = opt.speed ? parseInt(opt.speed, 10) : 600; //卷动速度,数值越大,速度越慢(毫秒)
  12. var m = line; //用于计算的变量
  13. var count = _this.find("li").length; //总共的<li>元素的个数
  14. var upHeight = line * lineH;
  15. function scrollUp() {
  16. if (!_this.is(":animated")) { //判断元素是否正处于动画,如果不处于动画状态,则追加动画。
  17. if (m < count) { //判断 m 是否小于总的个数
  18. m += line;
  19. _this.animate({ marginTop: "-=" + upHeight + "px" }, speed);
  20. }
  21. }
  22. }
  23. function scrollDown() {
  24. if (!_this.is(":animated")) {
  25. if (m > line) { //判断m 是否大于一屏个数
  26. m -= line;
  27. _this.animate({ marginTop: "+=" + upHeight + "px" }, speed);
  28. }
  29. }
  30. }
  31. _btnUp.bind("click", scrollUp);
  32. _btnDown.bind("click", scrollDown);
  33. }
  34. });
  35. })(jQuery);
  36. $(function () {
  37. $("#scrollDiv").Scroll({ line: 10, speed: 500,up: "btn1", down: "btn2" });
  38. });
  39. </script>
复制代码

可以设置$("#scrollDiv").Scroll({ line: 10, speed: 500,up: "btn1", down: "btn2" });对滚动按钮,滚动行数,滚动速度进行设置。
Html Body 内容
  1. <body>
  2. <p style="font-family: 微软雅黑; font-weight: bold;">
  3. 信息滚动栏DEMO:</p>
  4. <div id="scrollDiv">
  5. <ul>
  6. <li>这是滚动信息的第1行</li>
  7. <li>这是滚动信息的第2行</li>
  8. <li>这是滚动信息的第3行</li>
  9. <li>这是滚动信息的第4行</li>
  10. <li>这是滚动信息的第5行</li>
  11. <li>这是滚动信息的第6行</li>
  12. <li>这是滚动信息的第7行</li>
  13. <li>这是滚动信息的第8行</li>
  14. <li>这是滚动信息的第9行</li>
  15. <li>这是滚动信息的第10行</li>
  16. <li>这是滚动信息的第11行</li>
  17. <li>这是滚动信息的第12行</li>
  18. <li>这是滚动信息的第13行</li>
  19. <li>这是滚动信息的第14行</li>
  20. <li>这是滚动信息的第15行</li>
  21. <li>这是滚动信息的第16行</li>
  22. <li>这是滚动信息的第17行</li>
  23. <li>这是滚动信息的第18行</li>
  24. <li>这是滚动信息的第19行</li>
  25. <li>这是滚动信息的第20行</li>
  26. <li>这是滚动信息的第21行</li>
  27. <li>这是滚动信息的第22行</li>
  28. <li>这是滚动信息的第23行</li>
  29. <li>这是滚动信息的第24行</li>
  30. <li>这是滚动信息的第25行</li>
  31. <li>这是滚动信息的第26行</li>
  32. <li>这是滚动信息的第27行</li>
  33. <li>这是滚动信息的第28行</li>
  34. <li>这是滚动信息的第29行</li>
  35. <li>这是滚动信息的第30行</li>
  36. <li>这是滚动信息的第31行</li>
  37. <li>这是滚动信息的第32行</li>
  38. </ul>
  39. </div>
  40. <button id="btn1">
  41. 上滚</button>
  42. <button id="btn2">
  43. 下滚</button>
  44. </body>
复制代码



上一篇:JavaScript原型继承之基础机制分析
下一篇:基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 18:33

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表