无缝滚动基础

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. *{
  8. margin: 0;
  9. padding: 0;
  10. }
  11. #div1{
  12. width:1200px ;
  13. height: 85px;
  14. position: relative;
  15. margin: 100px auto;
  16. overflow: hidden; /*最后用overflow: hidden限制div宽 实现无缝滚动*/
  17. }
  18. #div1 ul{
  19. position: absolute;
  20. left: 0;
  21. top: 0;
  22. }
  23. #div1 ul li{
  24. float: left;
  25. width: 200px;
  26. height: 85px;
  27. list-style: none;
  28. }
  29. </style>
  30. <script>
  31. window.onload=function () {
  32. var oDiv = document.getElementById('div1');
  33. var oUl = oDiv.getElementsByTagName('ul')[0];
  34. var aLi = oUl.getElementsByTagName('li');
  35. oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;//把ul中的内容复制一份,重复出现一次,一行出现12张图
  36. oUl.style.width=aLi[0].offsetWidth*aLi.length+'px';//让ul的宽,等于li的个数乘宽度
  37. setInterval(function () {
  38. if (oUl.offsetLeft<-oUl.offsetWidth/2){ //当ul向左的距离小于ul的宽的二分之一的时候
  39. oUl.style.left='0';//ul的位置归零
  40. }
  41. oUl.style.left=oUl.offsetLeft-2+'px'; //在定时器中 让ul一直向左2px
  42. },30)
  43. }
  44. </script>
  45. </head>
  46. <body>
  47. <div id="div1">
  48. <ul>
  49. <li><img src="scroll_img/1.jpg" style="width: 200px;height: 85px"/></li>
  50. <li><img src="scroll_img/2.jpg" style="width: 200px;height: 85px"/></li>
  51. <li><img src="scroll_img/3.jpg" style="width: 200px;height: 85px"/></li>
  52. <li><img src="scroll_img/4.jpg" style="width: 200px;height: 85px"/></li>
  53. <li><img src="scroll_img/5.jpg" style="width: 200px;height: 85px"/></li>
  54. <li><img src="scroll_img/6.jpg" style="width: 200px;height: 85px"/></li>
  55. </ul>
  56. </div>
  57. </body>
  58. </html>

无缝滚动进阶

可调节左右滚动,但会出现刷新后不动,当鼠标放上再离开才会动的问题
解决办法:

  1. var timer = setInterval(function move() {
  2. if (oUl.offsetLeft < -oUl.offsetWidth/2){ //当ul向左的距离小于ul的宽的二分之一的时候
  3. oUl.style.left='0';//ul的位置归零
  4. }
  5. if(oUl.offsetLeft > 0){ //当ul向右的距离大于零的时候
  6. oUl.style.left = -oUl.offsetWidth/2+'px' //让ul滚动的距离等于ul的一半
  7. }
  8. oUl.style.left = oUl.offsetLeft+speed+'px'; //在定时器中 ul滚动的距离等于ul向左滚动speed(speed可正可负即向右向左)
  9. },30)//直接封装 不用单独封装

问题代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. *{
  8. margin: 0;
  9. padding: 0;
  10. }
  11. #div1{
  12. width:1200px ;
  13. height: 85px;
  14. position: relative;
  15. margin: 100px auto;
  16. overflow: hidden; /*最后用overflow: hidden限制div宽 实现无缝滚动*/
  17. }
  18. #div1 ul{
  19. position: absolute;
  20. left: 0;
  21. top: 0;
  22. }
  23. #div1 ul li{
  24. float: left;
  25. width: 200px;
  26. height: 85px;
  27. list-style: none;
  28. }
  29. </style>
  30. <script>
  31. window.onload=function () {
  32. var oDiv = document.getElementById('div1');
  33. var oUl = oDiv.getElementsByTagName('ul')[0];
  34. var aLi = oUl.getElementsByTagName('li');
  35. var speed = -2; //初始化默认向左
  36. oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;//把ul中的内容复制一份,重复出现一次,一行出现12张图
  37. oUl.style.width=aLi[0].offsetWidth*aLi.length+'px';//让ul的宽,等于li的个数乘宽度
  38. function move() {
  39. if (oUl.offsetLeft<-oUl.offsetWidth/2){ //当ul向左的距离小于ul的宽的二分之一的时候
  40. oUl.style.left='0';//ul的位置归零
  41. }
  42. if(oUl.offsetLeft>0){ //当ul向右的距离大于零的时候
  43. oUl.style.left=-oUl.offsetWidth/2+'px' //让ul滚动的距离等于ul的一半
  44. }
  45. oUl.style.left=oUl.offsetLeft+speed+'px'; //在定时器中 ul滚动的距离等于ul向左滚动speed(speed可正可负即向右向左)
  46. }
  47. var timer = setInterval(move(),30);
  48. oDiv.onmouseover=function () {
  49. clearInterval(timer); //鼠标放进去 计时器关闭
  50. };
  51. oDiv.onmouseout= function () {
  52. timer = setInterval(move,30);
  53. };
  54. document.getElementsByTagName('a')[0].onclick = function () { //当点击第一个a标签时 speed = -2 即向左
  55. speed = -2;
  56. };
  57. document.getElementsByTagName('a')[1].onclick = function () {//当点击第二个a标签时 speed = 2 即向右
  58. speed = 2;
  59. };
  60. }
  61. </script>
  62. </head>
  63. <body>
  64. <a href="#">向左</a>
  65. <a href="#">向右</a>
  66. <div id="div1">
  67. <ul>
  68. <li><img src="scroll_img/1.jpg" style="width: 200px;height: 85px"/></li>
  69. <li><img src="scroll_img/2.jpg" style="width: 200px;height: 85px"/></li>
  70. <li><img src="scroll_img/3.jpg" style="width: 200px;height: 85px"/></li>
  71. <li><img src="scroll_img/4.jpg" style="width: 200px;height: 85px"/></li>
  72. <li><img src="scroll_img/5.jpg" style="width: 200px;height: 85px"/></li>
  73. <li><img src="scroll_img/6.jpg" style="width: 200px;height: 85px"/></li>
  74. </ul>
  75. </div>
  76. </body>
  77. </html>