摘要:今天遇到一個一直認為很簡單的問題,真正接手后才知道這么可怕大體是這樣的,默認動態(tài)加載的應(yīng)該是自動向下,當遇到頁面最下面應(yīng)該自動向上渲染。動態(tài)生成的都是根據(jù)來監(jiān)聽獲取元素的信息。
今天遇到一個一直認為很簡單的問題,真正接手后才知道這么可怕
大體是這樣的,默認動態(tài)加載的card應(yīng)該是自動向下,當card遇到頁面最下面應(yīng)該自動向上渲染。
動態(tài)生成的DOM都是根據(jù)id來監(jiān)聽獲取元素的信息。
入坑1:當我一開始碰到這個bug時,so easy?。?!所以加了一個判斷條件,在函數(shù)@mouseenter獲取觸發(fā)點位置,然后加上一個頁面高度和頁面高度screen.height進行對比,然后對card進行移位,蒽,easy?。?!
let rect = this.$el.getBoundingClientRect()
so,坑:很快,師傅過來啦,你這個寫死啦,擴展性不好!內(nèi)心毫無波瀾,好,改成動態(tài)!
進坑2:Google一下,百度一天,怎么檢查新生成的DOM元素是否超出可視頁面!結(jié)果搜到一堆判斷scroll滾動元素的邊境溢出!根本沒有智能的自動檢查函數(shù),我平時也看到過有的網(wǎng)站是可以實現(xiàn)自動判斷,所以一定可以解決!證明只有程序袁才是萬能的,代碼,呵!
so,坑:表示師傅看不下去啦,“你根據(jù)ID,利用$nextTick獲得更新后的元素信息來獲取DOM的信息!”
出坑4:so,小case【找了兩個小時,自閉】,通過this.$rootDOM樹來查到元素id,這樣找到的id每次都是動態(tài)的啦!
進坑3:問題很快來了,我通過id獲取到元素的高度啦,但是每次順序不對啊,每次dom渲染后在找到更新dom的信息。。。又仔細看了一下this.$nextTick(),en,DOM更新后,函數(shù)返回操作!??!換個思路,于是通過監(jiān)控DOM樹的變化來在第一時間來獲取到dom變化的id并且獲取DOM信息
let dom=document.getElementById(this.$root.$children.***.id) dom.addEventListener("DOMNodeInserted", function(){ let height=dom.getBoundingClientRect().height }, false)
唉,結(jié)果和 $nextTick一毛一樣,扎心啦,而且在這個監(jiān)聽函數(shù)里面使用函數(shù)之后,會一直獲取到dom更新的信息,卡崩啦!
233,強行出來:嗯嗯,天要亡我!!靜想,如果要實現(xiàn)避免動態(tài)的card頁面生成到可視頁面外,大概兩種途徑,第一種動態(tài)的判斷位置條件,另一種是通過更加生成位置再次調(diào)整!行吧,又回到坑3啦,顯示給位置一個默認值,然后根據(jù)$nextTick()獲取到的dom信息,然后根據(jù)鼠標位置,dom高度,可視化窗口高度document.body.clientHeight【上面的那個獲取到的是電腦的信息】來判斷,調(diào)整!?。?!
/苦笑/苦笑,有更好的方法,求告知?。?!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/53547.html
摘要:今天遇到一個一直認為很簡單的問題,真正接手后才知道這么可怕大體是這樣的,默認動態(tài)加載的應(yīng)該是自動向下,當遇到頁面最下面應(yīng)該自動向上渲染。動態(tài)生成的都是根據(jù)來監(jiān)聽獲取元素的信息。 今天遇到一個一直認為很簡單的問題,真正接手后才知道這么可怕 大體是這樣的,默認動態(tài)加載的card應(yīng)該是自動向下,當card遇到頁面最下面應(yīng)該自動向上渲染。showImg(https://segmentfault...
摘要:提示如需移除事件處理程序,請使用方法。說明和綁定的點擊事件被的事件覆蓋。分析不同的綁定方式執(zhí)行順序?qū)傩栽厥录录T亟壎ㄊ录h除按鈕。屬性綁定事件動態(tài)綁定事件方法的方法的屬性綁定。 一、動態(tài)監(jiān)聽加載對象 當使用js或jQuery動態(tài)創(chuàng)建元素(例如append,appendChildren),再用on(事件, function(){...})或addEventListener監(jiān)聽事件...
摘要:基于的動態(tài)數(shù)據(jù)綁定歸屬于筆者的與前端工程化實踐中的,本文中設(shè)計的引用資料參考學(xué)習(xí)與實踐資料索引,如果有對基礎(chǔ)語法尚存疑惑的可以參閱現(xiàn)代開發(fā)語法基礎(chǔ)與實踐技巧。 基于 JSX 的動態(tài)數(shù)據(jù)綁定歸屬于筆者的 React 與前端工程化實踐中的,本文中設(shè)計的引用資料參考 React 學(xué)習(xí)與實踐資料索引,如果有對 JavaScript 基礎(chǔ)語法尚存疑惑的可以參閱現(xiàn)代 JavaScript 開發(fā):語...
摘要:效率不高,很多多余,稱之為臟檢查。通過索引設(shè)置數(shù)組元素并觸發(fā)視圖更新。解決閃爍問題自定義指令自定義指令提供一種機制將數(shù)據(jù)的變化映射為行為。 Vue特性 Vue只是聚焦視圖層,是一個構(gòu)建數(shù)據(jù)驅(qū)動的Web界面的庫。 Vue通過簡單 API提供高效的數(shù)據(jù)綁定和靈活的組件系統(tǒng) 輕量 數(shù)據(jù)綁定 指令 插件化 架構(gòu)從傳統(tǒng)后臺MVC 向REST API + 前端MV*遷移DOM是數(shù)據(jù)的一種自然映...
摘要:采用了新舊的對比,獲取差異的,最后一次性的更新到真實上。對基本屬性進行監(jiān)聽對對象進行監(jiān)聽對對象某一個屬性監(jiān)聽監(jiān)聽自定義指令全局指令,第一個參數(shù)是指令名,第二個參數(shù)是一個對象,對象內(nèi)部有個的函數(shù),函數(shù)里有這個參數(shù),表示綁定了這個指令的元素。 11.vue 虛擬DOM的理解 Web界面由DOM樹(樹的意思是數(shù)據(jù)結(jié)構(gòu))來構(gòu)建,當其中一部分發(fā)生變化時,其實就是對應(yīng)某個DOM節(jié)點發(fā)生了變化,??...
閱讀 3053·2023-04-26 00:32
閱讀 537·2019-08-30 15:52
閱讀 2139·2019-08-30 15:52
閱讀 3385·2019-08-30 15:44
閱讀 3311·2019-08-30 14:09
閱讀 1441·2019-08-29 15:15
閱讀 3427·2019-08-28 18:12
閱讀 1110·2019-08-26 13:55