這篇文章主要講解了react原生實(shí)現(xiàn)頭像滾動(dòng)播放的方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。
成都創(chuàng)新互聯(lián)專注于扎囊企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),電子商務(wù)商城網(wǎng)站建設(shè)。扎囊網(wǎng)站建設(shè)公司,為扎囊等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
之前需要的是下面這個(gè)效果
現(xiàn)在。。。
憋說(shuō)話,先看看效果。
感覺很簡(jiǎn)單呀,直接渲染,transform就可以了,嗯嗯,是的沒錯(cuò)。
渲染出來(lái),獲取元素,然后添加css,美中不足銜接不是很順暢,不過(guò)還是做出來(lái)了。
<div className="avatar-transform" ref={this.tmall}> {!!personAvatar.length && personAvatar.map((item, index) => { return <div className="avatar-wrap" key={index}> <div><img src={item.avatar} alt="" /></div> <div className="avatar-name">{item.nickname.substring(0, 2)}***已參與活動(dòng)</div> </div> })} </div>
changeCss(){ if(this.index === 31){ this.tmall.current.style = `transform: translateY(${this.index * 4}rem);` this.getAvatar()//獲取數(shù)據(jù) this.index = 0 return } this.tmall.current.style = `transform: translateY(-${this.index * 4}rem);transition: all 1s ease;` ++this.index setTimeout(()=>{ this.changeCss() },3000) }
但是問(wèn)題還是來(lái)了
一次性返回幾百條數(shù)據(jù),什么鬼,難道還直接渲染嗎,我的天,100多個(gè),渲染出來(lái),那酸爽,得了吧,全部渲染出來(lái)是不可能的了,這輩子都不可能全部渲染出來(lái)的了,看一下有沒什么方法沒有。
網(wǎng)上搜了一下,搜出來(lái)的是什么鬼,算了算了,還是得自己寫
思路:想了一下,可不可以,在后面添加一個(gè)節(jié)點(diǎn),然后刪除最前面的節(jié)點(diǎn)
嗯?好像可以
還是原來(lái)的配方原來(lái)的味道
<div className="avatar-transform" ref={this.tmall}> {!!personAvatar.length && personAvatar.map((item, index) => { return <div className="avatar-wrap" key={index}> <div><img src={item.avatar} alt="" /></div> <div className="avatar-name">{item.nickname.substring(0, 2)}***已參與活動(dòng)</div> </div> })} </div>
getAvatar(target = false) { //獲取數(shù)據(jù) http.get('********').json(r => { if (r.error) { return Alert(r.msg); } //判斷一下,不是第一次請(qǐng)求 if (target) { this.listData = r.users this.changeCss() return } //裝起來(lái) this.listData = r.users this.setState({ personAvatar: this.listData.splice(0, 5) //先來(lái)5個(gè) }) //最開始是在下面的transform: translateY(7rem),所以得上來(lái) this.tmall.current.style = `transform: translateY(0);transition: all 1s ease;` setTimeout(() => { this.changeCss() }, 3000) }); }
.avatar-transform { transform: translateY(7rem); }
changeCss() { let data = this.listData.shift() if (!data) { this.getAvatar(1) return } let div = document.createElement('div') div.className = "avatar-wrap" div.innerHTML = `<div><img src='${data.avatar}' alt="" /></div> <div class="avatar-name">${data.nickname.substring(0, 2)}***已參與活動(dòng)</div>` this.tmall.current.style = `transform: translateY(-${4}rem);transition: all 1s ease;` this.tmall.current.appendChild(div) //添加節(jié)點(diǎn) setTimeout(() => { this.tmall.current.style = `transform: translateY(0);` this.tmall.current.removeChild(this.tmall.current.childNodes[0]) //刪除第一個(gè)節(jié)點(diǎn) }, 1000) setTimeout(() => { this.changeCss() }, 3000) }
看完上述內(nèi)容,是不是對(duì)react原生實(shí)現(xiàn)頭像滾動(dòng)播放的方法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前標(biāo)題:react原生實(shí)現(xiàn)頭像滾動(dòng)播放的方法
分享路徑:http://aaarwkj.com/article20/gjcsco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、用戶體驗(yàn)、定制網(wǎng)站、域名注冊(cè)、全網(wǎng)營(yíng)銷推廣、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)