网页缩放到100%以下时,循环滚动的图片就停止了,再缩放到100%及以上,又自己滚动了

请大佬看看,要怎么解决这个bug呢。

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>RunJS</title>

<style>

img{border: none;}

#demo {

position: relative;

background: red;

overflow:hidden;

width: 500px;

}

#indemo {

float: left;

width: 800%;

}

#demo1 {

float: left;

}

#demo2 {

float: left;

}

</style>


<body>

<div id="demo">

<div id="indemo">

<div id="demo1">

<a href="#"><img src="img/1.png" border="0" /></a>

<a href="#"><img src="img/2.png" border="0" /></a>

<a href="#"><img src="img/3.png" border="0" /></a>

<a href="#"><img src="img/4.png" border="0" /></a>

<a href="#"><img src="img/5.png" border="0" /></a>

<a href="#"><img src="img/6.png" border="0" /></a>

</div>

<div id="demo2"></div>

</div>

</div>

<div>

<p id="tab"></p>

<p id="tab2"></p>

</div>


<script>

var speed=10; //数字越大速度越慢

var tab=document.getElementById("demo");

var tab1=document.getElementById("demo1");

var tab2=document.getElementById("demo2");

tab2.innerHTML=tab1.innerHTML;

function Marquee(){

document.getElementById('tab').innerHTML=tab.scrollLeft

document.getElementById('tab2').innerHTML=tab2.offsetWidth

if(tab2.offsetWidth-tab.scrollLeft<=0)

tab.scrollLeft-=tab1.offsetWidth

else{

tab.scrollLeft++;

}

}

var MyMar=setInterval(Marquee,speed);

tab.onmouseover=function() {clearInterval(MyMar)};

tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};

</script>


</body>

</html>


qq_控心_0
浏览 2596回答 1
1回答

stone310

测试了一下,scrollleft的变化值,当页面缩小时,只有取缩小的整数倍才发生变化(例如缩小2倍,就要2的倍数);具体原理可能跟scrollleft属性相关;建议做无缝还是用absolute然后left控制更稳定写了个把你的代码修改了下,可以看的更清楚,你可以测试一下<!DOCTYPE html> <html> <head>     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">     <title>RunJS</title>     <style>         img{border: none;}         #demo {  position: relative;  background: red;  overflow:hidden;  width: 500px;  }         #indemo {  float: left;  width: 800%;  }         #demo1 {  float: left;  }         #demo2 {  float: left;  }     </style> </head> <body> <div id="demo">     <div id="indemo">         <div id="demo1">             <a href="#"><img src="img/1.png" border="0" /></a>             <a href="#"><img src="img/2.png" border="0" /></a>             <a href="#"><img src="img/3.png" border="0" /></a>             <a href="#"><img src="img/4.png" border="0" /></a>             <a href="#"><img src="img/5.png" border="0" /></a>             <a href="#"><img src="img/6.png" border="0" /></a>         </div>         <div id="demo2"></div>     </div> </div> <div>     <p id="tab"></p>     <p id="tab2"></p> </div> <p style="font-size:30px"><b>用键盘左右键控制以下拉杆</b></p> <input type="range" min="0" max="100" id="range1" style="width:1000px;" value="0" autofocus/> <script>     var speed=10; //数字越大速度越慢     var tab=document.getElementById("demo");     var tab1=document.getElementById("demo1");     var tab2=document.getElementById("demo2");     var range1=document.getElementById("range1")     tab2.innerHTML=tab1.innerHTML;     var range=0     var a     range1.onchange=function(){         range=parseInt(range1.value)     }     function Marquee(){         a=tab.scrollLeft;         if(tab2.offsetWidth-tab.scrollLeft<=0){             tab.scrollLeft-=tab1.offsetWidth         }         else{             tab.scrollLeft=tab.scrollLeft+range;             document.getElementById('tab').innerHTML="当前设置的移动的速度是:"+range             document.getElementById('tab2').innerHTML="scrollLeft对应变化值是"+( tab.scrollLeft-a)         }     }     var MyMar=setInterval(Marquee,speed);     tab.onmouseover=function() {clearInterval(MyMar)};     tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)}; </script> </body> </html>
打开App,查看更多内容
随时随地看视频慕课网APP