午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JS實(shí)現(xiàn)單張或多張圖片持續(xù)無(wú)縫滾動(dòng)的示例代碼

瀏覽:231日期:2024-05-09 08:33:57

背景:

想要實(shí)現(xiàn)圖片持續(xù)滾動(dòng),既然使用js,就千萬(wàn)不要加css動(dòng)畫(huà)、過(guò)渡等相關(guān)樣式,如果想要滾動(dòng)的平滑一下,可以一像素一像素的感動(dòng),則很平滑,如果加了過(guò)渡動(dòng)畫(huà),當(dāng)圖片重置為0時(shí),會(huì)有往回倒的動(dòng)畫(huà)效果,跟預(yù)期不符。

原理:

圖片滾動(dòng)原理同圖片輪播原理,同樣也適用于文字滾動(dòng)等一系列滾動(dòng),通過(guò)復(fù)制最后一張圖片或最后一堆文字插入第一行,或復(fù)制第一張圖片或一堆文字插入在結(jié)尾,來(lái)實(shí)現(xiàn)無(wú)縫拼接,前提:1、必須是沒(méi)有設(shè)置過(guò)渡動(dòng)畫(huà)的,2、重置為0的時(shí)候與當(dāng)前已經(jīng)滾動(dòng)到的高度對(duì)于圖片的位置而言肉眼看上去沒(méi)變化。

實(shí)現(xiàn):

html主要包含三塊:

1、最外層盒子,用來(lái)展示滾動(dòng)圖的區(qū)域,overflow:hidden;

2、滾動(dòng)的盒子,主要改變?cè)摵凶拥亩ㄎ恢担瑏?lái)實(shí)現(xiàn)滾動(dòng),里面包含所有要滾動(dòng)的圖片或文字

3、包含圖片或文字的盒子。

代碼:

class Roll { constructor(opts) { this.elem = opts.elem; // 圖片包含滾動(dòng)長(zhǎng)度的元素的 this.elemBox = opts.elemBox; //圖片展示區(qū)域元素,為了獲取展示區(qū)域的高度 this.direction = opts.direction; this.time = opts.time; this.init(); this.roll = this.roll.bind(this) this.startRoll = this.startRoll.bind(this) this.stopRoll = this.stopRoll.bind(this) } init(){ this.elemHeight = this.elem.offsetHeight; this.elemHtml = this.elem.innerHTML; this.elem.innerHTML = this.elem.innerHTML + this.elemHtml+ this.elemHtml; this.speed; // 如果向上滾或者向左滾動(dòng)每次減1,向下滾或者向右滾動(dòng)每次加1 if(this.direction === ’top’ || this.direction === ’left’){ this.speed = -1; }else{ this.speed = 1; } } roll(){ switch (this.direction) { case 'top':// 如果滾動(dòng)的盒子的top值超出元素的高度,則置為0if(Math.abs(this.elemBox.offsetTop) >= this.elemHeight){ this.elemBox.style.top = 0;}else{ this.elemBox.style.top = this.elemBox.offsetTop + this.speed + ’px’;}break; case 'bottom':// 如果滾動(dòng)的盒子的bottom值超出元素的高度,則置為0if(Math.abs(this.elemBox.offsetBottom) >= this.elemHeight){ this.elemBox.style.bottom = 0;}else{ this.elemBox.style.bottom = this.elemBox.offsetBottom + this.speed + ’px’;}break; case 'left':// 如果滾動(dòng)的盒子的left超出元素的高度,則置為0if(Math.abs(this.elemBox.offsetLeft) >= this.elemHeight){ this.elemBox.style.left = 0;}else{ this.elemBox.style.left = this.elemBox.offsetLeft + this.speed + ’px’;}break; case 'right':// 如果滾動(dòng)的盒子的right超出元素的高度,則置為0if(Math.abs(this.elemBox.offsetRight) >= this.elemHeight){ this.elemBox.style.right = 0;}else{ this.elemBox.style.right = this.elemBox.offsetRight + this.speed + ’px’;}break; default:// 默認(rèn)向上滾動(dòng),如果滾動(dòng)的盒子的top超出元素的高度,則置為0if(Math.abs(this.elemBox.offsetTop) >= this.elemHeight){ this.elemBox.style.top = 0;}else{ this.elemBox.style.top = this.elemBox.offsetTop + speed + ’px’;} } } stopRoll(){ clearInterval(this.scrollTimer) } startRoll(){ this.scrollTimer = setInterval(this.roll,this.time) }}

參考鏈接:

https://www.teakki.com/p/590beb7be8136dfc5f21770d

總結(jié)

到此這篇關(guān)于JS實(shí)現(xiàn)單張或多張圖片持續(xù)無(wú)縫滾動(dòng)的文章就介紹到這了,更多相關(guān)js 圖片 無(wú)縫滾動(dòng)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 欧美日韩色 | 在线日韩av | 黄色av影院| 欧洲中文字幕 | 免费毛片av | 91久久国产综合久久91精品网站 | 最近韩国日本免费高清观看 | 在线观看自拍 | 1024国产精品| 亚洲精品久久久久avwww潮水 | 久色婷婷 | 国产激情在线观看 | 欧美在线网址 | 国产天堂第一区 | www.久久视频 | 国产精品久久久视频 | 欧美色拍 | 丰满少妇乱子伦精品看片 | 久久久999| 蜜乳av一区二区 | 蜜臀久久99精品久久久画质超高清 | 91久久精品一区二区三区 | 久久精品国产99国产 | 日本在线观看中文字幕 | 日本h在线观看 | 亚洲天堂欧美 | 超碰综合在线 | 欧美一区二区三区在线视频 | 色婷婷久久综合久色 | 欧美国产另类 | 91麻豆精品国产91久久久久久 | 日韩欧美中文字幕在线视频 | 大地资源网在线观看免费官网 | 婷婷九月丁香 | 亚洲在线视频免费观看 | 欧美日韩精品久久久 | 五月色婷 | 999国产精品 | 六月婷婷在线 | 亚洲成人精品在线观看 | 国产精品一区av |