JS實(shí)現(xiàn)無(wú)縫循環(huán)marquee滾動(dòng)效果
無(wú)縫循環(huán)marquee滾動(dòng)JS代碼實(shí)現(xiàn),兼容IE, FireFox, Chrome,供大家參考,具體內(nèi)容如下
首先是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>
<!-- 內(nèi)嵌一個(gè)div很重要,里面的元素必須是一個(gè)整體的移動(dòng)。另外橫移時(shí),必須是行級(jí)元素只占自己的空間。 -->
<div id="marquee_inner" style="position:relative; display: inline-block;">
<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實(shí)現(xiàn)marquee_zxd.js:
/**除了Chrome以外的瀏覽器可以通過(guò)scrollLeft屬性控制滾動(dòng)*/
function scrolleft(obj){
var $obj = $(obj);
//到右邊頂端后不會(huì)再變
//var temp = obj.scrollLeft;
//obj.scrollLeft++;
var temp = $obj.scrollLeft();
//console.log(temp);
$obj.scrollLeft(temp+1);
//當(dāng)滾動(dòng)條到達(dá)右邊頂端時(shí);或本身長(zhǎng)度不夠不好滾動(dòng)(漫出才好滾)
//if(obj.scrollLeft == temp){
if($obj.scrollLeft() == temp){
obj.innerHTML += obj.innerHTML;
console.log('copy');
}
//當(dāng)滾動(dòng)條滾動(dòng)了初始內(nèi)容的寬度時(shí),滾動(dòng)條回到最左端,模擬循環(huán)
//if (obj.scrollLeft >= obj.firstChild.offsetWidth)
// obj.scrollLeft = 0;
if ($obj.scrollLeft() >= obj.firstChild.offsetWidth)
$obj.scrollLeft(0);
}
/**除了Chrome以外的瀏覽器可以通過(guò)scrolleft()滾動(dòng)*/
function initMarquee(){
var aaa = document.getElementById('marquee_zxd');
var MyMar = setInterval(function(){
scrolleft(aaa);
}, 20);
//鼠標(biāo)移上時(shí)清除定時(shí)器達(dá)到滾動(dòng)停止的目的
aaa.onmouseover=function() {clearInterval(MyMar);};
//鼠標(biāo)移開(kāi)時(shí)重設(shè)定時(shí)器
aaa.onmouseout=function() {MyMar = setInterval(function(){
scrolleft(aaa);
}, 20);};
}
/**Chrome定時(shí)器循環(huán)函數(shù),通過(guò)relative布局的left屬性控制滾動(dòng)*/
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瀏覽器可以通過(guò)scrolleftChrome滾動(dòng)*/
function initMarqueeChrome() {
//局部變量不污染全局變量空間
var $marquee_inner = $('#marquee_inner');
//原內(nèi)容大小
var inner_width = $marquee_inner.css('width');
//復(fù)制一份原內(nèi)容
var innerHtml = $marquee_inner.html();
$marquee_inner.html(innerHtml + innerHtml);
console.log(inner_width);
//參數(shù)采用字符串形式的缺陷:參數(shù)不能被周期性改變,參數(shù)必須是全局變量
//var MyMar = setInterval("scrolleftChrome($marquee_inner, inner_width)", 5000);
var MyMar = setInterval(function(){
//參數(shù)不污染全局變量空間
scrolleftChrome($marquee_inner, inner_width);
}, 50);
var marquee_zxd = document.getElementById('marquee_zxd');
//鼠標(biāo)移上時(shí)清除定時(shí)器達(dá)到滾動(dòng)停止的目的
marquee_zxd.onmouseover=function() {clearInterval(MyMar);};
//鼠標(biāo)移開(kāi)時(shí)重設(shè)定時(shí)器
marquee_zxd.onmouseout=function() {
//參數(shù)采用字符串形式的缺陷:參數(shù)不能被周期性改變,參數(shù)必須是全局變量
//MyMar = setInterval("scrolleftChrome($marquee_inner, inner_width)", 50);
MyMar = setInterval(function(){
//參數(shù)不污染全局變量空間
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");
}
});
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS實(shí)現(xiàn)可調(diào)整倒計(jì)時(shí)間代碼分享
這篇文章主要介紹了JS實(shí)現(xiàn)可調(diào)整倒計(jì)時(shí)間代碼,效果很酷炫,也很具有實(shí)用價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08
如何利用JS將手機(jī)號(hào)中間四位變成*號(hào)
這篇文章主要介紹了如何利用JS將手機(jī)號(hào)中間四位變成*號(hào),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
解決ie11 SCRIPT5011:不能執(zhí)行已釋放Script的代碼問(wèn)題
這篇文章主要介紹了ie11 SCRIPT5011:不能執(zhí)行已釋放Script的代碼 ,需要的朋友可以參考下2019-05-05
TypeScript工具類(lèi) Partial 和 Required 的場(chǎng)景分析
這篇文章主要介紹了TypeScript工具類(lèi) Partial 和 Required 的詳細(xì)講解,本文通過(guò)場(chǎng)景描述給大家詳細(xì)講解工具類(lèi)的使用,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
js控制不同的時(shí)間段顯示不同的css樣式的實(shí)例代碼
這篇文章介紹了js控制不同的時(shí)間段顯示不同的css樣式的實(shí)例代碼,有需要的朋友可以參考一下2013-11-11

