mousewheel.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  6. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  7. <title>鼠标滚轮监听</title>
  8. <link rel="stylesheet" href="../../../assets/libs/layui/css/layui.css"/>
  9. <link rel="stylesheet" href="../../../assets/module/admin.css?v=315"/>
  10. <!--[if lt IE 9]>
  11. <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
  12. <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  13. <![endif]-->
  14. <style>
  15. /* 横向滚动 */
  16. #demoMw2 {
  17. white-space: nowrap;
  18. overflow: auto;
  19. padding: 47px 15px;
  20. }
  21. /* 垂直翻页滚动 */
  22. .demoPage {
  23. padding: 0;
  24. height: 250px;
  25. overflow: hidden;
  26. border-radius: 5px;
  27. }
  28. .demoPage > div {
  29. height: 250px;
  30. line-height: 250px;
  31. color: #fff;
  32. text-align: center;
  33. background-color: #01AAED;
  34. }
  35. .demoPage > div:nth-child(odd) {
  36. background-color: #5FB878;
  37. }
  38. /* 横向翻页滚动 */
  39. .demoPage2 {
  40. white-space: nowrap;
  41. font-size: 0;
  42. }
  43. .demoPage2 > div {
  44. width: 100%;
  45. display: inline-block;
  46. font-size: 14px;
  47. }
  48. /* 指示器 */
  49. .demoCourse {
  50. text-align: center;
  51. position: absolute;
  52. width: 100%;
  53. bottom: 15px;
  54. }
  55. .demoCourse > div {
  56. display: inline-block;
  57. margin: 5px;
  58. width: 10px;
  59. height: 10px;
  60. border-radius: 50%;
  61. background-color: rgba(0, 0, 0, .3);
  62. }
  63. .demoCourse > div.active {
  64. background-color: #fff;
  65. }
  66. /* 垂直指示器 */
  67. .demoCourse2 > div {
  68. display: block;
  69. margin: 10px;
  70. }
  71. .demoCourse2 {
  72. width: auto;
  73. bottom: unset;
  74. top: 50%;
  75. transform: translateY(-50%);
  76. right: 20px;
  77. }
  78. </style>
  79. </head>
  80. <body>
  81. <!-- 加载动画 -->
  82. <div class="page-loading">
  83. <div class="ball-loader">
  84. <span></span><span></span><span></span><span></span>
  85. </div>
  86. </div>
  87. <!-- 正文开始 -->
  88. <div class="layui-fluid">
  89. <div class="layui-row layui-col-space15">
  90. <div class="layui-col-xs12 layui-col-sm6">
  91. <div class="layui-card">
  92. <div class="layui-card-header">对div进行鼠标滚轮监听</div>
  93. <div class="layui-card-body" id="demoMw1" style="padding: 55px 15px;">
  94. 请在此区域滚动鼠标滚轮
  95. </div>
  96. </div>
  97. </div>
  98. <div class="layui-col-xs12 layui-col-sm6">
  99. <div class="layui-card">
  100. <div class="layui-card-header">实现横向滚动</div>
  101. <div class="layui-card-body layui-badge-list" id="demoMw2">
  102. <span class="layui-badge layui-bg-gray">很有想法的</span>
  103. <span class="layui-badge layui-bg-gray">专注设计</span>
  104. <span class="layui-badge layui-bg-gray">辣~</span>
  105. <span class="layui-badge layui-bg-gray">大长腿</span>
  106. <span class="layui-badge layui-bg-gray">川妹子</span>
  107. <span class="layui-badge layui-bg-gray">海纳百川</span>
  108. <span class="layui-badge layui-bg-gray">萌萌哒</span>
  109. <span class="layui-badge layui-bg-gray">萝莉</span>
  110. <span class="layui-badge layui-bg-gray">宅男拯救世界</span>
  111. <span class="layui-badge layui-bg-gray">我这么美我不能死</span>
  112. <span class="layui-badge layui-bg-gray">小清新</span>
  113. <span class="layui-badge layui-bg-gray">萌新求带</span>
  114. <span class="layui-badge layui-bg-gray">吃饱了才有力气减肥</span>
  115. <span class="layui-badge layui-bg-gray">穷游党</span>
  116. <span class="layui-badge layui-bg-gray">夜猫子</span>
  117. <span class="layui-badge layui-bg-gray">做一个开心的吃货</span>
  118. <span class="layui-badge layui-bg-gray">铲屎官</span>
  119. <span class="layui-badge layui-bg-gray">逗比</span>
  120. <span class="layui-badge layui-bg-gray">为了联盟</span>
  121. <span class="layui-badge layui-bg-gray">选择恐惧症</span>
  122. <span class="layui-badge layui-bg-gray">玄不救非,氪不改命</span>
  123. <span class="layui-badge layui-bg-gray">背包客</span>
  124. <span class="layui-badge layui-bg-gray">追剧是种坚持</span>
  125. <span class="layui-badge layui-bg-gray">懒癌患者</span>
  126. </div>
  127. </div>
  128. </div>
  129. <div class="layui-col-xs12 layui-col-sm6">
  130. <div class="layui-card">
  131. <div class="layui-card-header">实现翻页滚动</div>
  132. <div class="layui-card-body">
  133. <div class="demoPage" id="demoMw3">
  134. <div>第一页</div>
  135. <div>第二页</div>
  136. <div>第三页</div>
  137. <div>第四页</div>
  138. <div>第五页</div>
  139. </div>
  140. <div class="demoCourse demoCourse2">
  141. <div class="active"></div>
  142. <div></div>
  143. <div></div>
  144. <div></div>
  145. <div></div>
  146. </div>
  147. </div>
  148. </div>
  149. </div>
  150. <div class="layui-col-xs12 layui-col-sm6">
  151. <div class="layui-card">
  152. <div class="layui-card-header">横向翻页滚动</div>
  153. <div class="layui-card-body">
  154. <div class="demoPage demoPage2" id="demoMw4">
  155. <div>第一页</div>
  156. <div>第二页</div>
  157. <div>第三页</div>
  158. <div>第四页</div>
  159. <div>第五页</div>
  160. </div>
  161. <div class="demoCourse">
  162. <div class="active"></div>
  163. <div></div>
  164. <div></div>
  165. <div></div>
  166. <div></div>
  167. </div>
  168. </div>
  169. </div>
  170. </div>
  171. </div>
  172. </div>
  173. <!-- js部分 -->
  174. <script type="text/javascript" src="../../../assets/libs/layui/layui.js"></script>
  175. <script type="text/javascript" src="../../../assets/js/common.js?v=315"></script>
  176. <script>
  177. layui.use(['layer', 'mousewheel'], function () {
  178. var $ = layui.jquery;
  179. var layer = layui.layer;
  180. // 滚动监听
  181. $('#demoMw1').on('mousewheel', function (event) {
  182. var delta = '', factor = 0;
  183. if (event.deltaX > 0) {
  184. delta = '右 ';
  185. factor = event.deltaFactor * event.deltaX;
  186. } else if (event.deltaX < 0) {
  187. delta = '左 ';
  188. factor = event.deltaFactor * event.deltaX;
  189. }
  190. if (event.deltaY > 0) {
  191. delta += '上';
  192. factor = event.deltaFactor * event.deltaY;
  193. } else if (event.deltaY < 0) {
  194. delta = '下';
  195. factor = event.deltaFactor * event.deltaY;
  196. }
  197. $(this).html(new Date().getTime() + '&emsp;滚动方向:' + delta + '&emsp;滚动距离:' + factor + 'px')
  198. event.stopPropagation();
  199. event.preventDefault();
  200. });
  201. // 实现横向滚动
  202. $('#demoMw2').on('mousewheel', function (event) {
  203. $(this).stop();
  204. $(this).animate({'scrollLeft': $(this).scrollLeft() - event.deltaFactor * event.deltaY * 2}, 80);
  205. event.stopPropagation();
  206. event.preventDefault();
  207. });
  208. // 实现翻页滚动
  209. var isScroll1 = false;
  210. $('#demoMw3').on('mousewheel', function (event) {
  211. if (!isScroll1) {
  212. if (event.deltaY > 0) {
  213. $course = $(this).parent().find('.demoCourse>div.active').prev();
  214. $(this).animate({'scrollTop': $(this).scrollTop() - $(this).outerHeight()}, 500);
  215. } else if (event.deltaY < 0) {
  216. $course = $(this).parent().find('.demoCourse>div.active').next();
  217. $(this).animate({'scrollTop': $(this).scrollTop() + $(this).outerHeight()}, 500);
  218. }
  219. if ($course.length > 0) {
  220. $(this).parent().find('.demoCourse>div').removeClass('active');
  221. $course.addClass('active');
  222. }
  223. isScroll1 = true;
  224. setTimeout(function () {
  225. isScroll1 = false;
  226. }, 500);
  227. }
  228. event.stopPropagation();
  229. event.preventDefault();
  230. });
  231. // 横向翻页滚动
  232. var isScroll1 = false;
  233. $('#demoMw4').on('mousewheel', function (event) {
  234. if (!isScroll1) {
  235. var $course;
  236. if (event.deltaY > 0) {
  237. $course = $(this).parent().find('.demoCourse>div.active').prev();
  238. $(this).animate({'scrollLeft': $(this).scrollLeft() - $(this).outerWidth()}, 500);
  239. } else if (event.deltaY < 0) {
  240. $course = $(this).parent().find('.demoCourse>div.active').next();
  241. $(this).animate({'scrollLeft': $(this).scrollLeft() + $(this).outerWidth()}, 500);
  242. }
  243. if ($course.length > 0) {
  244. $(this).parent().find('.demoCourse>div').removeClass('active');
  245. $course.addClass('active');
  246. }
  247. isScroll1 = true;
  248. setTimeout(function () {
  249. isScroll1 = false;
  250. }, 500);
  251. }
  252. event.stopPropagation();
  253. event.preventDefault();
  254. });
  255. });
  256. </script>
  257. </body>
  258. </html>