這篇文章主要介紹JS如何實現無縫循環marquee滾動效果,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

雙鴨山網站制作公司哪家好,找創新互聯公司!從網頁設計、網站建設、微信開發、APP開發、成都響應式網站建設公司等網站項目制作,到程序開發,運營維護。創新互聯公司公司2013年成立到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創新互聯公司。
無縫循環marquee滾動JS代碼實現,兼容IE, FireFox, Chrome,供大家參考,具體內容如下
首先是CSS和HTML如下:
#marquee_zxd {
border: 1px solid red;
white-space: nowrap;
overflow: hidden;
width: 500px;
padding-top: 5px;
}
#marquee_zxd img {
height: 100px;
}
<!-- 橫向一定要是span -->
<div id="marquee_zxd"><span>
<!-- 內嵌一個div很重要,里面的元素必須是一個整體的移動。另外橫移時,必須是行級元素只占自己的空間。 -->
<div id="marquee_inner" >
<img src="img/duck.png"/>
<img src="img/donkey.png"/>
<img src="img/eggbird.png"/>
<img src="img/elephant.png"/>
<img src="img/butterfly.png"/>
</div>
</span></div>
<script type="text/javascript" src="${cpath}/js/marquee_zxd.js"></script>下面是JS實現marquee_zxd.js:
/**除了Chrome以外的瀏覽器可以通過scrollLeft屬性控制滾動*/
function scrolleft(obj){
var $obj = $(obj);
//到右邊頂端后不會再變
//var temp = obj.scrollLeft;
//obj.scrollLeft++;
var temp = $obj.scrollLeft();
//console.log(temp);
$obj.scrollLeft(temp+1);
//當滾動條到達右邊頂端時;或本身長度不夠不好滾動(漫出才好滾)
//if(obj.scrollLeft == temp){
if($obj.scrollLeft() == temp){
obj.innerHTML += obj.innerHTML;
console.log('copy');
}
//當滾動條滾動了初始內容的寬度時,滾動條回到最左端,模擬循環
//if (obj.scrollLeft >= obj.firstChild.offsetWidth)
// obj.scrollLeft = 0;
if ($obj.scrollLeft() >= obj.firstChild.offsetWidth)
$obj.scrollLeft(0);
}
/**除了Chrome以外的瀏覽器可以通過scrolleft()滾動*/
function initMarquee(){
var aaa = document.getElementById('marquee_zxd');
var MyMar = setInterval(function(){
scrolleft(aaa);
}, 20);
//鼠標移上時清除定時器達到滾動停止的目的
aaa.onmouseover=function() {clearInterval(MyMar);};
//鼠標移開時重設定時器
aaa.onmouseout=function() {MyMar = setInterval(function(){
scrolleft(aaa);
}, 20);};
}
/**Chrome定時器循環函數,通過relative布局的left屬性控制滾動*/
function scrolleftChrome($marquee_inner, inner_width){
var width = parseInt(inner_width);
var leftPx = $marquee_inner.css("left");
//兼容IE
if(leftPx == 'auto')
leftPx = 0;
//位置左移
var left = parseInt(leftPx);
left = left - 1;
//到頂歸位
if(left <= -width)
left = 0;
$marquee_inner.css("left", left);
//console.log(width + ", " + left);
}
/**Chrome瀏覽器可以通過scrolleftChrome滾動*/
function initMarqueeChrome() {
//局部變量不污染全局變量空間
var $marquee_inner = $('#marquee_inner');
//原內容大小
var inner_width = $marquee_inner.css('width');
//復制一份原內容
var innerHtml = $marquee_inner.html();
$marquee_inner.html(innerHtml + innerHtml);
console.log(inner_width);
//參數采用字符串形式的缺陷:參數不能被周期性改變,參數必須是全局變量
//var MyMar = setInterval("scrolleftChrome($marquee_inner, inner_width)", 5000);
var MyMar = setInterval(function(){
//參數不污染全局變量空間
scrolleftChrome($marquee_inner, inner_width);
}, 50);
var marquee_zxd = document.getElementById('marquee_zxd');
//鼠標移上時清除定時器達到滾動停止的目的
marquee_zxd.onmouseover=function() {clearInterval(MyMar);};
//鼠標移開時重設定時器
marquee_zxd.onmouseout=function() {
//參數采用字符串形式的缺陷:參數不能被周期性改變,參數必須是全局變量
//MyMar = setInterval("scrolleftChrome($marquee_inner, inner_width)", 50);
MyMar = setInterval(function(){
//參數不污染全局變量空間
scrolleftChrome($marquee_inner, inner_width);
}, 50);
};
}
$(function(){
var ua = window.navigator.userAgent;
var isIE = window.ActiveXObject != undefined && ua.indexOf("MSIE") != -1;
var isFirefox = ua.indexOf("Firefox") != -1;
var isChrome = ua.indexOf("Chrome") && window.chrome;
if(isChrome){
initMarqueeChrome();
console.log("isChrome: initMarqueeChrome");
}else{
initMarquee();
console.log("isChrome: initMarquee");
}
});以上是“JS如何實現無縫循環marquee滾動效果”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯行業資訊頻道!
文章題目:JS如何實現無縫循環marquee滾動效果
URL分享:http://www.yijiale78.com/article28/jcspcp.html
成都網站建設公司_創新互聯,為您提供企業網站制作、App開發、網頁設計公司、品牌網站制作、面包屑導航、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯