亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

網頁縮放到100%以下時,循環滾動的圖片就停止了,再縮放到100%及以上,又自己滾動了

網頁縮放到100%以下時,循環滾動的圖片就停止了,再縮放到100%及以上,又自己滾動了

qq_控心_0 2016-11-24 14:41:42
請大佬看看,要怎么解決這個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.offsetWidthelse{tab.scrollLeft++;}}var MyMar=setInterval(Marquee,speed);tab.onmouseover=function() {clearInterval(MyMar)};tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};</script> </body></html>
查看完整描述

1 回答

已采納
?
stone310

TA貢獻361條經驗 獲得超191個贊

測試了一下,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>


查看完整回答
反對 回復 2016-11-24
  • qq_控心_0
    qq_控心_0
    很感謝你的回答,果然問題還是在scrollleft的上面,的確用scrollleft不太好,我嘗試下用定位,是不是原理也一樣,要兩個div輪流換?
  • stone310
    stone310
    對。原理一樣,你的#indemo 寬度設置成200%,因為要移動的是#indemo
  • qq_控心_0
    qq_控心_0
    不好意思,還是問下,我#indemo定位absolute移動,但是demo的overflow: hidden;就不能用了,用上去后就隱藏了子級,不用的話就沒有那種效果了
點擊展開后面3
  • 1 回答
  • 1 關注
  • 2576 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號