js替代marquee實現圖片無縫滾動
可能大家都碰到過,當marquee中滾動的是圖片的時候,滾到終點的時候直接就跳回到起點了,而不像文字那樣可以無縫滾動,下面介紹的是通過js來實現圖片的無縫滾動。
先了解一下下面這幾個屬性:
innerHTML: 設置或獲取位於對象起始和結束標簽內的 HTML
scrollHeight: 獲取對象的滾動高度。
scrollLeft: 設置或獲取位於對象左邊界和窗口中目前可見內容的最左端之間的距離
scrollTop: 設置或獲取位於對象最頂端和窗口中可見內容的最頂端之間的距離
scrollWidth: 獲取對象的滾動寬度
offsetHeight: 獲取對象相對於版面或由父坐標 offsetParent 屬性指定的父坐標的高度
offsetLeft: 獲取對象相對於版面或由 offsetParent 屬性指定的父坐標的計算左側位置
offsetTop: 獲取對象相對於版面或由 offsetTop 屬性指定的父坐標的計算頂端位置
offsetWidth: 獲取對象相對於版面或由父坐標 offsetParent 屬性指定的父坐標的寬度
-----------------------------------------------------------------------
圖片向上無縫滾動
<style type="text/css"> <!-- #demo { background: #FFF; overflow:hidden; border: 1px dashed #CCC; height: 100px; text-align: center; float: left; } #demo img { border: 3px solid #F2F2F2; display: block; } --> </style> 向上滾動 <div id="demo"> <div id="demo1"> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> </div> <div id="demo2"></div> </div> <script> <!-- var speed=10; //數字越大速度越慢 var tab=document.getElementByIdx_x("demo"); var tab1=document.getElementByIdx_x("demo1"); var tab2=document.getElementByIdx_x("demo2"); tab2.innerHTML=tab1.innerHTML; //克隆demo1為demo2 function Marquee(){ if(tab2.offsetTop-tab.scrollTop<=0)//當滾動至demo1與demo2交界時 tab.scrollTop-=tab1.offsetHeight //demo跳到最頂端 else{ tab.scrollTop++ } } var MyMar=setInterval(Marquee,speed); tab.onmouseover=function() {clearInterval(MyMar)};//鼠標移上時清除定時器達到滾動停止的目的 tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};//鼠標移開時重設定時器 --> </script>
圖片向下無縫滾動
<style type="text/css"> <!-- #demo { background: #FFF; overflow:hidden; border: 1px dashed #CCC; height: 100px; text-align: center; float: left; } #demo img { border: 3px solid #F2F2F2; display: block; } --> </style> 向下滾動 <div id="demo"> <div id="demo1"> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> </div> <div id="demo2"></div> </div> <script> <!-- var speed=10; //數字越大速度越慢 var tab=document.getElementByIdx_x("demo"); var tab1=document.getElementByIdx_x("demo1"); var tab2=document.getElementByIdx_x("demo2"); tab2.innerHTML=tab1.innerHTML; //克隆demo1為demo2 tab.scrollTop=tab.scrollHeight function Marquee(){ if(tab1.offsetTop-tab.scrollTop>=0)//當滾動至demo1與demo2交界時 tab.scrollTop+=tab2.offsetHeight //demo跳到最頂端 else{ tab.scrollTop-- } } var MyMar=setInterval(Marquee,speed); tab.onmouseover=function() {clearInterval(MyMar)};//鼠標移上時清除定時器達到滾動停止的目的 tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};//鼠標移開時重設定時器 --> </script>
圖片向左無縫滾動
<style type="text/css"> <!-- #demo { background: #FFF; overflow:hidden; border: 1px dashed #CCC; width: 500px; } #demo img { border: 3px solid #F2F2F2; } #indemo { float: left; width: 800%; } #demo1 { float: left; } #demo2 { float: left; } --> </style> 向左滾動 <div id="demo"> <div id="indemo"> <div id="demo1"> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> </div> <div id="demo2"></div> </div> </div> <script> <!-- var speed=10; //數字越大速度越慢 var tab=document.getElementByIdx_x("demo"); var tab1=document.getElementByIdx_x("demo1"); var tab2=document.getElementByIdx_x("demo2"); tab2.innerHTML=tab1.innerHTML; function Marquee(){ 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>
圖片向右無縫滾動
<style type="text/css"> <!-- #demo { background: #FFF; overflow:hidden; border: 1px dashed #CCC; width: 500px; } #demo img { border: 3px solid #F2F2F2; } #indemo { float: left; width: 800%; } #demo1 { float: left; } #demo2 { float: left; } --> </style> 向右滾動 <div id="demo"> <div id="indemo"> <div id="demo1"> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> </div> <div id="demo2"></div> </div> </div> <script> <!-- var speed=10; //數字越大速度越慢 var tab=document.getElementByIdx_x("demo"); var tab1=document.getElementByIdx_x("demo1"); var tab2=document.getElementByIdx_x("demo2"); tab2.innerHTML=tab1.innerHTML; function Marquee(){ if(tab.scrollLeft<=0) tab.scrollLeft+=tab2.offsetWidth else{ tab.scrollLeft--; } } var MyMar=setInterval(Marquee,speed); tab.onmouseover=function() {clearInterval(MyMar)}; tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)}; --> </script>
最後,如果有人想一個頁面有兩個滾動圖片集,一個往左一個往右,那下面的能用了。我把js都加個i了,還有css
向右滾動
<div id="demoi"> <div id="indemoi"> <div id="demoi1"> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> <a href="#"><img src="http://www.jb51.net/other/link/Clear_logo.gif" border="0" /></a> </div> <div id="demoi2"></div> </div> </div> <script> <!-- var speedi=10; //數字越大速度越慢 var tabi=document.getElementByIdx_x("demoi"); var tabi1=document.getElementByIdx_x("demoi1"); var tabi2=document.getElementByIdx_x("demoi2"); tabi2.innerHTML=tabi1.innerHTML; function Marqueei(){ if(tabi.scrollLeft<=0) tabi.scrollLeft+=tabi2.offsetWidth else{ tabi.scrollLeft--; } } var MyMari=setInterval(Marqueei,speedi); tabi.onmouseover=function() {clearInterval(MyMari)}; tabi.onmouseout=function() {MyMari=setInterval(Marqueei,speedi)}; --> </script>
以上這篇JS實現圖片的不間斷連續滾動的簡單實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。