亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

原生javascript實現無間縫滾動示例

2019-11-20 21:10:57
字體:
來源:轉載
供稿:網友
目前支持的是豎向與橫向滾動

http://lgyweb.com/marScroll/

現在分析下無間縫實現的基本思路(豎向例子):

HTML結構:
復制代碼 代碼如下:

<div id="marScroll">
<ul>
<li>01</li>
<li>02</li>
<li>03</li>
<li>04</li>
<li>05</li>
</ul>
</div>

CSS:
復制代碼 代碼如下:



<style type="text/css">
ul,li{padding: 0;margin: 0;}
#marScroll{height: 60px;overflow: hidden;}
#marScroll li{height: 20px;line-height: 20px;font-size: 14px;}
</style>



(1)首先需要判斷里面的內容高度ul結構是否高于外層div#marScrolll,則才進行無間縫滾動:
復制代碼 代碼如下:

// 寫在匿名函數里面,防止全局變量污染
(function(){
var target = document.getElementById('marScroll'),
oUl = target.getElementsByTagName('ul')[0];
// 內容少,則直接退出此函數
if(oUl.offsetHeight<target.offsetHeight) return;
})();

(2)無間縫就是內容的無限滾動展示,那么先需要復制里面的內容,然后通過外層的scrollTop++屬性,用setInterval 函數進行循環執行
復制代碼 代碼如下:

target.innerHTML += target.innerHTML;
/* 判斷每次滾動的距離等于第一個ul的高度時,設置scrollTop為0,然后如此的循環操作就是無間滾動了
---------------------------------------------------------------------------------------------*/
// 把功能函數抽離出來,方便調用
var fn = function(){
if(target.scrollTop == oUl_h){
target.scrollTop = 0;
}else{
target.scrollTop++;
}
}
// setInterval 循環
var timer = setInterval(function(){
fn();
},30);

(3)鼠標經過此內容塊時,就停止滾動
復制代碼 代碼如下:

// hover
target.onmouseover = function(){
clearTimeout(timer);
}
target.onmouseout = function(){
timer = setInterval(function(){
fn();
},30);
}

例子JS總代碼:
復制代碼 代碼如下:

// 寫在匿名函數里面,防止全局變量污染
(function(){
var target = document.getElementById('marScroll'),
oUl = target.getElementsByTagName('ul')[0],
oUl_h = oUl.offsetHeight;
// 內容少,則直接退出此函數
if(oUl_h<target.offsetHeight) return;

target.innerHTML += target.innerHTML;

/* 判斷每次滾動的距離等于第一個ul的高度時,設置scrollTop為0,然后如此的循環操作就是無間滾動了
---------------------------------------------------------------------------------------------*/
// 把功能函數抽離出來,方便調用
var fn = function(){
if(target.scrollTop == oUl_h){
target.scrollTop = 0;
}else{
target.scrollTop++;
}
}
// setInterval 循環
var timer = setInterval(function(){
fn();
},30);
// hover
target.onmouseover = function(){
clearTimeout(timer);
}
target.onmouseout = function(){
timer = setInterval(function(){
fn();
},30);
}
})();

已經完成了個簡單的豎向無間縫,為了滿足更多的需求,建議封裝成可以,豎向,橫向,多次調用的函數。

以下是個人的封裝,線上例子:

http://lgyweb.com/marScroll/
復制代碼 代碼如下:

function GyMarquee(opt){
this.opt = opt;
if(!document.getElementById(this.opt.targetID)) return;
this.target = document.getElementById(this.opt.targetID);
this.dir = this.opt.dir == 'crosswise'?'crosswise':'vertical';
this.effect = this.opt.effect == 'scroll'?'scroll':'marque';
this.scrollHeight = this.opt.scrollHeight;
this.init();
}
GyMarquee.prototype = {
marquee:function(){
var _that = this,
direction = 'scrollTop',
judge = this.target.scrollHeight,
timer = null;
if(this.dir == 'crosswise'){
direction = 'scrollLeft';
judge = this.itemLen*this.opt.itemWidth;
this.targetChild.style.width = this.itemLen*this.opt.itemWidth*2 + 'px';
}
var doFn = function(){
if(_that.target[direction] == judge){
_that.target[direction] = 0;
}
_that.target[direction]++;
}
timer = setInterval(function(){
doFn();
},38);
this.target.onmouseover = function(){
if(timer) clearTimeout(timer);
}
this.target.onmouseout = function(){
timer = setInterval(function(){
doFn();
},38);
}
},
scrollDo:function(){
var can = true,
_that = this;
this.target.onmouseover=function(){can=false};
this.target.onmouseout=function(){can=true};
new function (){
var stop=_that.target.scrollTop%_that.scrollHeight==0&&!can;
if(!stop)_that.target.scrollTop==parseInt(_that.target.scrollHeight/2)?_that.target.scrollTop=0:_that.target.scrollTop++;
setTimeout(arguments.callee,_that.target.scrollTop%_that.scrollHeight?20:2500);
};
},
getByClassName:function(className,parent){
var elem = [],
node = parent != undefined&&parent.nodeType==1?parent.getElementsByTagName('*'):document.getElementsByTagName('*'),
p = new RegExp("(^|//s)"+className+"(//s|$)");
for(var n=0,i=node.length;n<i;n++){
if(p.test(node[n].className)){
elem.push(node[n]);
}
}
return elem;
},
init:function(){
var val = 0;
if(this.dir =='crosswise'&&this.effect=='marque'&&this.opt.itemName!=''){
this.itemLen = this.target.getElementsByTagName(this.opt.itemName).length;
val = this.itemLen*this.opt.itemWidth;
}else{
val = this.target.scrollHeight;
}
var holderHTML = this.target.innerHTML;
this.target.innerHTML = '<div class="J_scrollInner">'+holderHTML+'</div>';
this.targetChild = this.getByClassName('J_scrollInner',this.target)[0];
var attr = this.dir == 'vertical'?'offsetHeight':'offsetWidth';
if(val>this.target[attr]){
if(this.effect == 'scroll'){
this.scrollDo();
}else{
this.marquee();
}
this.targetChild.innerHTML += this.targetChild.innerHTML;
}
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久精品久久久| 亚洲免费伊人电影在线观看av| 欧美高清视频免费观看| 浅井舞香一区二区| 国产精品久久久久久搜索| 日韩精品欧美国产精品忘忧草| 欧美在线视频免费播放| 欧美性感美女h网站在线观看免费| 欧美电影在线观看高清| 久久久之久亚州精品露出| 国产精品视频地址| 一本一本久久a久久精品牛牛影视| 国产精品99蜜臀久久不卡二区| 欧美激情视频网址| 日韩在线视频国产| 久久影院资源站| 97在线看免费观看视频在线观看| 欧美床上激情在线观看| 国产剧情日韩欧美| 久久av在线播放| 亚洲mm色国产网站| 久99久在线视频| 欧美日本精品在线| 在线观看精品自拍私拍| 久热精品视频在线| 欧美激情精品久久久久久变态| 国产精品极品在线| 69视频在线免费观看| 国产视频久久网| 91久久精品一区| 国产精品99久久久久久www| 亚洲一品av免费观看| 成人欧美一区二区三区黑人| 一区二区欧美激情| 久久精品国产久精国产一老狼| 亚洲伊人一本大道中文字幕| 亚洲欧美国产视频| 亚洲伦理中文字幕| 91夜夜未满十八勿入爽爽影院| 亚洲自拍小视频| 欧美日韩一区二区免费在线观看| 91av在线免费观看| 中文字幕亚洲图片| 欧美一区二区三区……| 久久久久久69| 欧美极品xxxx| 欧美成人免费播放| 亚洲免费人成在线视频观看| 日韩欧美精品在线观看| 91av在线免费观看| 亚洲欧美成人一区二区在线电影| www.xxxx精品| 国产日韩欧美在线视频观看| 中文日韩在线观看| 国语对白做受69| 亚洲欧美精品一区二区| 日韩大片在线观看视频| 91在线观看免费网站| 日韩电影免费观看中文字幕| 亚洲欧美色图片| 日韩免费精品视频| 九九精品在线播放| 日韩精品在线视频美女| 欧美激情精品久久久| 91国语精品自产拍在线观看性色| 亚洲精品成a人在线观看| 亚洲人成电影网站色www| 久久夜色精品国产欧美乱| 久久伊人色综合| 欧美在线视频在线播放完整版免费观看| 日本国产欧美一区二区三区| 日韩在线观看网站| 亚洲的天堂在线中文字幕| 亚洲天堂久久av| 久久久久在线观看| 亚洲欧美日韩高清| 中文字幕在线视频日韩| 国产精品视频一| 中文在线不卡视频| 超薄丝袜一区二区| 中国人与牲禽动交精品| 成人av色在线观看| 91国产在线精品| 国产欧美在线视频| 亚洲精品免费在线视频| 国产精品欧美亚洲777777| 久久中文字幕在线| 最好看的2019年中文视频| 久久午夜a级毛片| 日韩av资源在线播放| 一本色道久久综合狠狠躁篇的优点| 日韩av理论片| 国产成人精品日本亚洲| 成人欧美一区二区三区在线| 国产成人精品久久二区二区| 成人性教育视频在线观看| 亚洲电影免费观看高清完整版在线观看| 欧美精品久久久久久久久久| 久久在精品线影院精品国产| 在线观看免费高清视频97| 国产精品96久久久久久又黄又硬| 欧美肥婆姓交大片| 欧日韩不卡在线视频| 69影院欧美专区视频| 亚洲一区中文字幕在线观看| 久久人人看视频| 日本一区二区在线免费播放| 国产日韩欧美中文| www.99久久热国产日韩欧美.com| 久久综合电影一区| 亚洲男人的天堂在线播放| 亚洲女人天堂成人av在线| 91久久久精品| 91精品久久久久久久久久入口| 亚洲精品视频免费| 亚洲综合精品一区二区| 久操成人在线视频| 日韩一区二区精品视频| 欧美亚洲视频在线观看| 九九热99久久久国产盗摄| 久久精品国产一区| 91精品国产91| 久久国产精品久久国产精品| 国产精品jvid在线观看蜜臀| 中文字幕日韩av电影| 日韩成人黄色av| 久久久精品久久久| 91九色综合久久| 久久综合色影院| 久久理论片午夜琪琪电影网| 久久精品视频免费播放| 欧美日韩激情小视频| 日本免费一区二区三区视频观看| 亚洲精品成a人在线观看| 久久精品亚洲一区| 97在线观看免费高清| 日韩极品精品视频免费观看| 欧美精品中文字幕一区| 国产精品精品久久久久久| 亚洲人成网在线播放| 国产一区二区日韩精品欧美精品| 91手机视频在线观看| 久久精品成人欧美大片古装| 国产精品极品美女在线观看免费| 一区二区三区美女xx视频| 国产成人精品免费视频| 成人写真视频福利网| 欧美高清无遮挡| 国产精品第100页| 日韩免费不卡av| 亚洲精品美女久久久久| 2019亚洲男人天堂| 欧美日韩国产123| 欧美激情极品视频| 精品久久久999| 国产成人一区二| 亚洲人a成www在线影院| 国产精品一区二区在线| 欧美日韩精品国产| 91精品国产乱码久久久久久蜜臀| 亚洲最大福利视频| 日韩有码在线视频| 中文字幕亚洲无线码在线一区| 亚洲欧洲av一区二区|