web前端教程:js實現單張或多張圖片持續無縫滾動

2020-09-09 網際網路酷仔

JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的腳本語言,最早是在html(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。

背景:

想要實現圖片持續滾動,既然使用js,就千萬不要加css動畫、過渡等相關樣式,如果想要滾動的平滑一下,可以一像素一像素的感動,則很平滑,如果加了過渡動畫,當圖片重置為0時,會有往回倒的動畫效果,跟預期不符。

原理:

圖片滾動原理同圖片輪播原理,同樣也適用於文字滾動等一系列滾動,通過複製最後一張圖片或最後一堆文字插入第一行,或複製第一張圖片或一堆文字插入在結尾,來實現無縫拼接,前提:1、必須是沒有設置過渡動畫的,2、重置為0的時候與當前已經滾動到的高度對於圖片的位置而言肉眼看上去沒變化。

實現:

html主要包含三塊:

1、最外層盒子,用來展示滾動圖的區域,overflow:hidden;

2、滾動的盒子,主要改變該盒子的定位值,來實現滾動,裡面包含所有要滾動的圖片或文字

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

代碼:

classRoll{

constructor(opts){

this.elem=opts.elem;//圖片包含滾動長度的元素的

this.elemBox=opts.elemBox;//圖片展示區域元素,為了獲取展示區域的高度

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;

//如果向上滾或者向左滾動每次減1,向下滾或者向右滾動每次加1

if(this.direction===&39;||this.direction===&39;){

this.speed=-1;

}else{

this.speed=1;

}

}

roll(){

switch(this.direction){

case&34;:

//如果滾動的盒子的top值超出元素的高度,則值為0

if(Math.abs(this.elemBox.offsetTop)>=this.elemHeight){

this.elemBox.style.top=0;

}else{

this.elemBox.style.top=this.elemBox.offsetTop+this.speed+&39;;

}

break;

case&34;:

//如果滾動的盒子的bottom值超出元素的高度,則值為0

if(Math.abs(this.elemBox.offsetBottom)>=this.elemHeight){

this.elemBox.style.bottom=0;

}else{

this.elemBox.style.bottom=this.elemBox.offsetBottom+this.speed+&39;;

}

break;

case&34;:

//如果滾動的盒子的left超出元素的高度,則置為0

if(Math.abs(this.elemBox.offsetLeft)>=this.elemHeight){

this.elemBox.style.left=0;

}else{

this.elemBox.style.left=this.elemBox.offsetLeft+this.speed+&39;;

}

break;

case&34;:

//如果滾動的盒子的right超出元素的高度,則置為0

if(Math.abs(this.elemBox.offsetRight)>=this.elemHeight){

this.elemBox.style.right=0;

}else{

this.elemBox.style.right=this.elemBox.offsetRight+this.speed+&39;;

}

break;

default:

//默認向上滾動,如果滾動的盒子的top超出元素的高度,則置為0

if(Math.abs(this.elemBox.offsetTop)>=this.elemHeight){

this.elemBox.style.top=0;

}else{

this.elemBox.style.top=this.elemBox.offsetTop+speed+&39;;

}

}

}

stopRoll(){

clearInterval(this.scrollTimer)

}

startRoll(){

this.scrollTimer=setInterval(this.roll,this.time)

}

}

在1995年時,由Netscape公司的BrendanEich,在網景導航者瀏覽器上首次設計實現而成。因為Netscape與Sun合作,Netscape管理層希望它外觀看起來像java,因此取名為JavaScript。但實際上它的語法風格與Self及Scheme較為接近。js實現單張或多張圖片持續無縫滾動。

開課吧Web前端教程

相關焦點

  • 前端高效開發必備的 js 庫梳理
    作者: 徐小夕 來源:趣談前端之前有很多人問學好前端需要學習哪些 js 庫, 主流框架應該學 vue 還是 react ? 針對這些問題, 筆者來說說自己的看法和學習總結。,可以讓我們用SVG製作動畫,使其具有被繪製的外觀GreenSock JS 一個JavaScript動畫庫,用於創建高性能、零依賴、跨瀏覽器動畫,已在超過400萬個網站上使用, 並且可以在React、Vue、Angular項目中使用Scroll Reveal 零依賴,為 web 和移動瀏覽器提供了簡單的滾動動畫
  • 初學者必看Web前端學習路線圖
    Web前端行業的發展,讓前端人員能完成比以前更多的職責範圍,所以未來前端可以寬口徑就業,前景非常好。除此之外,目前web前端工程師日均崗位缺口超50000,平均薪資10820元/月。對於零基礎的人而言,要怎麼學習web前端呢?1、 前端頁面重構。主要內容為PC端網站布局、Photoshop 工具及切圖、H5移動端網頁布局、HTML5+CSS3新特性與交互。
  • 小程序上傳多張圖片到springboot後臺,返回可供訪問的圖片連結
    最近在做小程序多圖片上傳到Java後臺,Java後臺是用springboot寫的。也算是踩了不少坑,今天就來帶大家來一步步實現小程序端多圖片的上傳。話不多說,直接看代碼。這裡有些注意點要給大家說下小程序每次只能上傳單張圖片如果採用for循環進行上傳請求 會出現並行上傳,並行上傳會出現某一個圖片漏傳的問題我採用串行的思路,每張圖片執行一次上傳請求,請求響應成功後在調用請求上傳第二張圖片,以此類推 。
  • 谷歌也發布了Web前端機器學習庫,就叫deeplearn.js
    以往大家對前端機器學習庫的關注度較低,不外乎人們認為 JavaScript 運行速度低、應用範圍窄、支持前端的庫少等幾個原因。現在谷歌也決定在機器學習前端開發領域添一把柴,昨天發布了開源了自己的前端機器學習庫 deeplear.js(https://pair-code.github.io/deeplearnjs/ )。
  • 南通WEB前端就業前景怎麼樣
    同時,我們展開了青少年編程實踐課程的開發,旨在完成IT教育的整體布局,形成多位一體的IT人才培養。Function、String 和 正則表達式、常用內置對象、JS0N、錯誤處理、面向對象高級編程;JavaScrip的引入及插入位置、JS元素的獲取及簡單的函數引用、JS的頁面輸出及注釋語句、變量及JS的數據類型、表單的簡單應用及js的操作符等;帶參函數及數組的運用;數組及滾動條事件;js中對象的移動;js中盒子的移動;js中的滑鼠及鍵盤事件等;第四階段
  • web前端達到什麼水平,才能找到工作?
    3、JS基本特效:常見特效、例如:tab、導航、整頁滾動、輪播圖、JS製作幻燈片、彈出層、手風琴菜單、瀑布流布局、滾動事件、滾差視圖。lazy-load技術、JQuery框架中的AjaxAPI、使用Ajax實現爆布流案例額。
  • web前端怎麼樣才能入門
    web前端怎麼樣才能入門,首先我們要從什麼是初級web前端工程師說起:按照我的想法,我把前端工程師分為了入門、初級、中級、高級這四個級別:入門級別指的是了解什麼是前端(前端到底是什麼其實很多人還是不清楚的
  • 初學者必看杭州Web前端學習路線圖-Web前端教學出品
    隨著移動網際網路的發展,web前端逐漸受到企業的重視,前端開發人員的薪資也水漲船高,越來越多的人看好前端行業的發展,想要轉行加入。下面,給大家分享一份web前端學習路線圖,希望對初學者有所幫助。Web前端行業的發展,讓前端人員能完成比以前更多的職責範圍,所以未來前端可以寬口徑就業,前景非常好。除此之外,目前web前端工程師日均崗位缺口超50000,平均薪資10820元/月。
  • web前端學習路線(涵蓋20個web開發實戰項目)
    目前web前端工程師日均崗位缺口已經超過50000,隨著網際網路+的深入發展,html5作為前端展示技術,市場人才需求量將呈直線上漲。Web前端工程師的崗位職責是利用HTML、CSS、Java、DOM等各種web技能結合產品的界面開發,製作標準化純手工代碼,並增加交互功能,豐富網際網路的Web開拓,致力於改進用戶體驗。
  • web前端線上培訓 - CSDN
    先說說線下培訓班吧,目前web前端培訓這塊沒有任何一家的口碑是好的,由於培訓機構現在太多,北京這樣的城市至少有上萬家web前端培訓機構,有的線下培訓機構可能只有兩個老師,只要能招到學生,什麼手段都用,他們最常見的手段就是「包就業」「推薦就業」,但這些承諾都是狗屎,等你培訓完了之後就會知道了
  • web前端學習路線是什麼
    好程式設計師web前端培訓web前端學習路線是什麼,很多剛接觸web前端的開發的新手小白,都會有這樣的疑問,「零基礎如何學習web前端?小白學習web前端的學習路線是什麼?」。接下來,就帶大家來了解一下這些問題,助力新手小白快速轉變成為合格的web前端開發工程師。
  • 帝國cms+jquery.lazyload.js實現圖片延遲懶加載的極簡方法
    通常而言,首次只加載第一屏(能看得見的)的圖片,之後的圖片則不加載(或只加載一個文件容量特別小的圖片,稱為佔位圖),如果用戶拖動滾動條至後面某處位置(這處位置稱為可視區域)則再加載圖片,這樣做的好處是避免網頁因加載圖片過多而打開慢的弊端。兩個字,提速!如果網站圖片多,要提速,那懶加載就是web技術層面的標配。
  • 南京web前端培訓學什麼,零基礎可以參加南京web前端培訓嗎?
    南京web前端培訓學什麼?現在對web前端有需求的崗位越來越多了,很多人都想轉行做web前端開發。那麼零基礎可以參加南京web前端培訓嗎?答案是可以的,而且web前端學習會比後端開發更加容易一些,也更加適合零基礎人員學習。
  • 最新web前端大廠面試常見問題匯總
    1.web前端項目的結構是怎樣的?文件有哪些命名規範?文件:js/userinfo/userlist.jscss樣式:css/userinfo/userlist.css注意:圖片的分類一般按照功能作用劃分,比如: 小圖標、動畫圖片
  • 用three.js把高數可視化-開課吧Web前端教程
    用three.js 玩轉高數的目的是什麼?目的:讓大家在開發計算機圖形、動畫項目的時候,具備更加紮實的功底。計算機圖形動畫就像一隻展翅的雄鷹,它右邊的翅膀是藝術,左邊的翅膀是算法。無論是二維的canvas教程,還是三維的webgl教程,都要把算法講明白了。
  • 月薪50W前端大牛分享的技能整理,web前端要學哪些東西
    [ ] 伸縮布局:grid網格布局 [ ] 基礎UI樣式:元素reset、按鈕、圖片對象模擬dom(elem.js),virtual domdiff算法(diff.js)、差異渲染dom(patch.js)
  • 抖音怎麼發單張和多張照片 上傳圖片方法教程
    抖音最近很多玩家都看有些人只上傳一張圖片,想必大家都很想知道到底怎麼解決吧。下面小編就為各位玩家帶來了抖音發單張圖片方法介紹,快來看看吧。  抖音怎麼上傳圖片  1、首先在手機上啟動抖音應用程式,進入該程序的主界面。
  • 你真的了解Web前端開發嗎?未來前端遠比你想的有前途
    {「 web前端開發 」有前途嗎?}{「 web前端開發 」到底怎麼學?}NO 1:web前端開發 」是什麼?‍2005年以後,網際網路進入Web 2.0時代,各種類似桌面軟體的Web應用大量湧現,網站的前端由此發生了翻天覆地的變化。網頁不再只是承載單一的文字和圖片,各種豐富媒體讓網頁的內容更加生動,網頁上軟體化的交互形式為用戶提供了更好的使用體驗,這些都是基於前端技術實現的。
  • 零基礎開始學 Web 前端開發,有什麼建議?(附視頻教程)
    WEB前端看似簡單,其實不然,要學的知識點很多很雜,對於零基礎學習前端的小夥伴來說,一份詳細的前端學習知識點大綱尤為重要。下面,話不多說,直接上乾貨(全網最全,沒有之一)。web前端學習路線(包含各階段的詳細知識點),適合零基礎的小夥伴。
  • 2020Web前端面試常見基礎題及答案解析-開課吧
    Web前端面試題:一個tcp連結能發幾個http請求?而如果是 HTTP 1.1 版本協議,支持了長連接,因此只要 TCP 連接不斷開,便可以一直發送 HTTP 請求,持續不斷,沒有上限; 同樣,如果是 HTTP 2.0 版本協議,支持多用復用,一個 TCP 連接是可以並發多個 HTTP 請求的,同樣也是支持長連接,因此只要不斷開 TCP 的連接,HTTP 請求數也是可以沒有上限地持續發送