效果图:

html代码:

  1. 1 <h1>无缝滚动,向右滚动</h1>
  2. 2 <ul id="guoul1">
  3. 3 <li><img src="img/f1.jpg" alt="f1"/></li>
  4. 4 <li><img src="img/f2.jpg" alt="f2"/></li>
  5. 5 <li><img src="img/f3.jpg" alt="f3"/></li>
  6. 6 <li><img src="img/f4.jpg" alt="f4"/></li>
  7. 7 <li><img src="img/f5.jpg" alt="f5"/></li>
  8. 8 <li><img src="img/f6.jpg" alt="f6"/></li>
  9. 9 <li><img src="img/f7.jpg" alt="f7"/></li>
  10. 10 </ul>
  11. 11
  12. 12 <h1>无缝滚动,向左滚动</h1>
  13. 13 <ul id="guoul2">
  14. 14 <li>111111111111</li>
  15. 15 <li>222222222222</li>
  16. 16 <li>3333333333333</li>
  17. 17 <li>4444444444444</li>
  18. 18 <li>5555555555555</li>
  19. 19 <li>6666666666666</li>
  20. 20 <li>7777777777777</li>
  21. 21 <li>8888888888888</li>
  22. 22 <li>9999999999999</li>
  23. 23 </ul>
  24. 24 <h1>无缝滚动,向上滚动</h1>
  25. 25 <ul id="guoul3">
  26. 26 <li>111111111111</li>
  27. 27 <li>222222222222</li>
  28. 28 <li>3333333333333</li>
  29. 29 <li>4444444444444</li>
  30. 30 <li>5555555555555</li>
  31. 31 <li>6666666666666</li>
  32. 32 <li>7777777777777</li>
  33. 33 <li>8888888888888</li>
  34. 34 <li>9999999999999</li>
  35. 35 </ul>
  36. 36 <h1>无缝滚动,向下滚动</h1>
  37. 37 <ul id="guoul4">
  38. 38 <li>111111111111</li>
  39. 39 <li>222222222222</li>
  40. 40 <li>3333333333333</li>
  41. 41 <li>4444444444444</li>
  42. 42 <li>5555555555555</li>
  43. 43 <li>6666666666666</li>
  44. 44 <li>7777777777777</li>
  45. 45 <li>8888888888888</li>
  46. 46 <li>9999999999999</li>
  47. 47 </ul>
  48. 48 <h1>无缝滚动,非ul,li标签组合,向右滚动</h1>
  49. 49 <div id="guoul5">
  50. 50 <p>111111111111</p>
  51. 51 <p>222222222222</p>
  52. 52 <p>3333333333333</p>
  53. 53 <p>4444444444444</p>
  54. 54 <p>5555555555555</p>
  55. 55 <p>6666666666666</p>
  56. 56 <p>7777777777777</p>
  57. 57 <p>8888888888888</p>
  58. 58 <p>9999999999999</p>
  59. 59 </div>
  60. 60 <h1>不动</h1>
  61. 61 <ul id="guoul6">
  62. 62 <li>111111111111</li>
  63. 63 <li>222222222222</li>
  64. 64 <li>3333333333333</li>
  65. 65 <li>4444444444444</li>
  66. 66 <li>5555555555555</li>
  67. 67 <li>6666666666666</li>
  68. 68 <li>7777777777777</li>
  69. 69 <li>8888888888888</li>
  70. 70 <li>9999999999999</li>
  71. 71 </ul>

css代码:

  1. 1 ul, li,h1 { margin: 0; padding: 0; list-style-type:none;}
  2. 2 ul,div { height: 200px; border: 1px solid red; width: 300px; padding: 30px;margin:10px;list-style-type:none;}
  3. 3 li,p { height: 30px; line-height: 30px; margin-top: 10px; background-color: Gray; color: Yellow; margin-left:10px;}
  4. 4 #guoul1{ width:1000px; height:188px;margin: 0; padding: 0;}
  5. 5 #guoul1 li{ width:300px; height:188px;margin: 0; padding: 0; margin-left:10px;}

js插件代码:

  1. 1 ; (function ($) {
  2. 2 var defaults = {
  3. 3 dir: "left", //none:不动,up:上,right:右,down:下,left:左
  4. 4 delay: 30,//执行时间
  5. 5 };
  6. 6 $.fn.gysContentDisplay = function (opt) {
  7. 7 opt = $.extend({}, defaults, opt);
  8. 8
  9. 9 //全局变量区域
  10. 10 var obj = $(this); //当前对象
  11. 11 var dirs={left:"left",right:"right",up:"up",down:"down",none:"none"};
  12. 12 obj.css({ "overflow": "hidden" }); //初始化元素
  13. 13 if (opt.dir === dirs.none) return;
  14. 14 var objLis = obj.children(); //对象中的子元素
  15. 15 objLis.css({ "overflow": "hidden" });
  16. 16 var objSize = 0; //外框尺寸
  17. 17 var scrollEvent = "scrollLeft"; //滚动条的滚动方向
  18. 18 var liTotalSize = 0, liTotalSizeOther = 0; //每个li元素的尺寸(宽或者高),克隆之后的总尺寸
  19. 19 var scrollSize = 0, //滚动条的实际距离
  20. 20 scrollSizeMax = 0, //滚动条的最大距离
  21. 21 scrollSizeMin = 0; //滚动条的最小距离
  22. 22 var interval = undefined; //记录setInterval
  23. 23
  24. 24
  25. 25 if (opt.dir ===dirs.up || opt.dir ===dirs.down) {//上下
  26. 26 objSize = obj.innerHeight();
  27. 27 scrollEvent = "scrollTop";
  28. 28 obj.css({ "paddingTop": 0, "paddingBottom": 0 }).height(objSize);
  29. 29 }
  30. 30 else if (opt.dir === dirs.left || opt.dir === dirs.right) {//左右
  31. 31 objSize = obj.innerWidth();
  32. 32 scrollEvent = "scrollLeft";
  33. 33 obj.css({ "paddingLeft": 0, "paddingRight": 0 }).width(objSize);
  34. 34 }
  35. 35 else {
  36. 36 alert("你的dir参数有误");
  37. 37 return;
  38. 38 }
  39. 39
  40. 40 var getChildTotalSize = function (dir,dirs,objLis) {// 定义获取li总尺寸的方法
  41. 41 if (dir === dirs.left || dir ===dirs.right) {
  42. 42 objLis.css("float", "left");
  43. 43 return function () {
  44. 44 objLis.each(function () {
  45. 45 liTotalSize += $(this).outerWidth(true);
  46. 46 });
  47. 47 }
  48. 48 }
  49. 49 else if (dir === dirs.up || dir ===dirs.down) {
  50. 50 objLis.css("float", "none");
  51. 51 return function () {
  52. 52 objLis.each(function () {
  53. 53 liTotalSize += $(this).outerHeight(true);
  54. 54 });
  55. 55 }
  56. 56 }
  57. 57 } (opt.dir,dirs,objLis);
  58. 58 getChildTotalSize(); //获得所有的li的总尺寸,在方法中赋值
  59. 59
  60. 60 (function (obj) {
  61. 61 var cloneCount = Math.ceil(objSize * 2 / liTotalSize); //赋值子元素多少遍
  62. 62 var cloneHtmlNow = "", cloneHtmlStart = obj.html(); //原始的子元素字符串
  63. 63
  64. 64 for (var i = 0; i < cloneCount; i++) {
  65. 65 cloneHtmlNow += cloneHtmlStart;
  66. 66 }
  67. 67 obj.append(cloneHtmlNow);
  68. 68 liTotalSizeOther = (cloneCount + 1) * liTotalSize; //获取添加了子元素之后的长度
  69. 69 })(obj);
  70. 70
  71. 71
  72. 72 if (opt.dir === dirs.left || opt.dir === dirs.right) {
  73. 73 obj.css({ "position": "relative", "z-index": 0 });
  74. 74 obj.children().css({ "position": "absolute", "z-index": 1 });
  75. 75 var left = 0;
  76. 76 obj.children().each(function () {
  77. 77 $(this).css({ "left": left + "px", "top": 0 });
  78. 78 left += $(this).outerWidth(true);
  79. 79 });
  80. 80 }
  81. 81
  82. 82
  83. 83 //滚动条的滚动方法
  84. 84 function scrollChange(dir) {
  85. 85 if (dir ===dirs.left || dir === dirs.up) {
  86. 86 obj[scrollEvent](0);
  87. 87 scrollChange = function () {
  88. 88 scrollSize++;
  89. 89 if (scrollSize >= liTotalSize) scrollSize = 0;
  90. 90 obj[scrollEvent](scrollSize);
  91. 91 }
  92. 92 }
  93. 93 else if (dir === dirs.right|| dir ===dirs.down) {
  94. 94 scrollSizeMax = liTotalSizeOther - objSize;
  95. 95 obj[scrollEvent](scrollSizeMax);
  96. 96 scrollSize = scrollSizeMax;
  97. 97 scrollSizeMin = scrollSizeMax - liTotalSize;
  98. 98 scrollChange = function () {
  99. 99 scrollSize--;
  100. 100 if (scrollSize <= scrollSizeMin) scrollSize = scrollSizeMax;
  101. 101 obj[scrollEvent](scrollSize);
  102. 102 }
  103. 103 }
  104. 104 };
  105. 105 scrollChange(opt.dir);
  106. 106 interval = setInterval(scrollChange, opt.delay);
  107. 107 obj.children().on("mouseover", function () {
  108. 108 clearInterval(interval);
  109. 109 }).on("mouseleave", function () {
  110. 110 interval = setInterval(scrollChange, opt.delay);
  111. 111 });
  112. 112 }
  113. 113 })(jQuery);

插件的调用:

  1. 1 $(function () {
  2. 2 $("#guoul1").gysContentDisplay({ dir: "right" });
  3. 3 $("#guoul2").gysContentDisplay({ dir: "left" });
  4. 4 $("#guoul3").gysContentDisplay({ dir: "up" });
  5. 5 $("#guoul4").gysContentDisplay({ dir: "down" });
  6. 6 $("#guoul5").gysContentDisplay({ dir: "right" });
  7. 7 $("#guoul6").gysContentDisplay({ dir: "none" });
  8. 8 })

自己写了一个无缝滚动的插件(jQuery)的更多相关文章

  1. 写了一个迷你toast提示插件,支持自定义提示文字和显示时间

    写了一个迷你toast提示插件,支持自定义提示文字和显示时间,不想用其他第三方的ui插件,又想要toast等小效果来完善交互的同学可以试试, 代码中还贡献了一段css能力检测js工具函数,做项目的时候 ...

  2. 写了一个迷你confirm弹窗插件,有取消和确认操作处理并支持单个确认使用弹窗和锁屏禁止滚动

    由于项目想精简不想用其他第三方的ui插件,又很需要像confirm等小效果来完善交互,且使用的频率也是相当的高,于是自己造了一个,省时也省力 代码已经粘贴出来,直接复制即可看到效果,高手勿喷,可以相互 ...

  3. 一个无缝滚动的jquery插件

    $.fn.imgscroll = function(o){ var defaults = { speed: 40, amount: 0, width: 1, dir: "left" ...

  4. jq无缝滚动效果插件(之前的那个升级改造加强版)

    scroll滚动插件 支持上下左右,淡入淡出,滚动时间设置,动画时间设置,鼠标经过是否停止设置 默认配置参数可修改 $(".content").easysroll({ //默认配置 ...

  5. 写了一个 gorm 乐观锁插件

    前言 最近在用 Go 写业务的时碰到了并发更新数据的场景,由于该业务并发度不高,只是为了防止出现并发时数据异常. 所以自然就想到了乐观锁的解决方案. 实现 乐观锁的实现比较简单,相信大部分有数据库使用 ...

  6. [browser navigator 之plugins] 写了一个检测游览器插件

    检测IE插件 function hasIEPlugin(name){ try{ new ActiveXObject(name); return true; }catch(ex){ return fal ...

  7. iOS开发:一个无限滚动自动播放图片的Demo(Swift语言编码)

    很久以前就想写这么一个无限滚动的Demo了,最近学习了下Swift,手中没有可以用来练手的Demo,所以才将它实现了. Github地址(由于使用了UIView+AutoLayout第三方进行布局,所 ...

  8. 001.Delphi插件之QPlugins,一个最简单的插件

    安装QPlugins里面的Demo,复制粘贴着写了一个最简单的插件,看看好不好用 EXE代码如下: unit Main_Frm; interface uses Winapi.Windows, Wina ...

  9. 自己写一个jQuery垂直滚动栏插件(panel)

    html中原生的滚动栏比較难看,所以有些站点,会自己实现滚动栏,导航站点hao123在一个側栏中,就自己定义了垂直滚动栏,效果比較好看,截图例如以下: watermark/2/text/aHR0cDo ...

随机推荐

  1. CFBundleVersion与CFBundleShortVersionString,上架注意事项

    CFBundleVersion,标识(发布或未发布)的内部版本号.这是一个单调增加的字符串,包括一个或多个时期分隔的整数. CFBundleShortVersionString  标识应用程序的发布版 ...

  2. js分页小结

     今天解决了JS分页的问题1 页码 给每页的内容套一个相同的类名 通过选择器加上.length或者.size() 来获得总页数2当前页的页码可以使用each(function(index,DOMsss ...

  3. getCanonicalName和getSimpleName getName的区别与应用

    接口: package com.test; public interface Fruit { } 一个实现类: package com.test; public class Apple impleme ...

  4. Jquery实现花瓣随机飘落(收藏自慕课网)

    这个东西实际上慕课的艾伦大大先写的. 然后别人推荐给我,偶一直收藏着,然后偶再推荐给偶的队友们,然后呢,这帮货就懒得都不肯去看... 接着今天受伤在家就提出来了一点东西放在我博客顶上... 然后艾伦的 ...

  5. PHP正则表达式详解(三)

    1.preg_match() :preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 . 语法:int preg_match( string pattern, strin ...

  6. 微信公共服务平台开发(.Net 的实现)12-------网页授权(上 :更加深入理解OAuth2.0 )

    我们首先来认识一下OAuth协议吧,这个东西很早就听说过,总觉得离我很远(我的项目用不到这些),但是最近不得不学习一下了.我在网上找了一些解释,认为解释的最好的是这样说的(出处:http://hi.b ...

  7. java基础 集合 ArrayList 增删改除

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  8. python之路三

    集合 set拥有类似dict的特点:可以用{}花括号来定义:其中的元素没有序列,也就是是非序列类型的数据;而且,set中的元素不可重复,这就类似dict的键. set也有继承了一点list的特点:如可 ...

  9. Mac键盘图标与对应快捷按键标志汇总

    Mac键盘图标与对应快捷按键 ⌘--Command () win键 ⌃ --Control ctrl键 ⌥--Option (alt) ⇧--Shift ⇪--Caps Lock fn--功能键就是 ...

  10. jquery手写实现单页滚动导航

    效果说明:点击tab导航,页面滑动到下方相应板块.并且当页面通过鼠标滚动下去时,上方的tab也可以自动切换到当前位置的板块上. 代码说明:js中对两个动作分别写,一个是tab点击下滑到相应板块位置:一 ...