Vue練習五十七 07 02

2022-07-25 09:45:11 字數 1427 閱讀 9080

(太多使用了$refs來直接操作dom,有待更正)

需求:1. 滑鼠移至/離開左側/右側,顯示/隱藏向左/向右切換按鈕

2. 載入時新增loading.gif,載入完成後消失(根據網速)

4. 向左/向右切換至第一張/最末一張後,再次點選,彈出提示無更多

解析:1. html結構:1個大的div(id為big),包含5個子div:masks_l, masks_r, btn_l, btn_r, title。從id可知其用途,前2個為蒙版(其用途是當mouseover其上時,分別顯示向左/向右按鈕,離開則隱藏),後2個為左/右側按鈕,第5個為標題div,內含乙個span元素。

2. 根據id獲取各div引用,獲取 span元素的引用

3. 設定data資料,為乙個陣列物件,由imgsrc和title2個屬性組成,分別表示路徑和標題文字

4. 給masks_l, masks_r,btn_l, btn_r新增mouseover/mouseout事件,呼叫startmove輔助函式,傳入左右按鈕,屬性及數值。

5. startmove()輔助函式接受4個引數,obj物件,attr屬性,屬性數值及**函式fnend。給obj新增計時器setinterval,呼叫domove()並傳遞所有引數,每30毫秒執行一次。

6. domove()輔助函式,接受4個引數,先根據物件及屬性,呼叫輔助函式getstyle獲取當前屬性值。如屬性為透明度opacity,則值需乘以100進行換算。接下給obj設定屬性值。

7. 給btnl和btnr新增click事件處理器。先判斷是否已無更多,(此處根據inow計數器進行判斷)如是,則return,如否,呼叫loadimg(),載入對應。

8. loadimg(),載入函式。給big(最外層容器div)新增loading類,載入loading gif。設定標題div高度為0,設定span透明度為0。獲取img元素的引用,如存在則先刪除(呼叫removechild)。建立乙個img元素及new乙個image例項。給例項新增onload事件處理器,當載入成功後,先清除掉big(最外層div)的類,給img元素新增src屬性,設定其寬度(最大不超過800)和高度。給span元素新增文字(標題)呼叫startmove()先設定title(外層div)的高度,再設定span的透明度(由0到100),從完全透明到完全不透明。

以上為對原生js寫就的程式的粗淺分析。

在使用vue改寫時,需要考慮的最主要的地方是:以資料來驅動,而盡量不要直接操作dom.

1 在給maskl,maskr,btnl,btnr新增mouseover/mouseout處理器時,嘗試以vue中的transition元件來操作元素的顯示/隱藏,既將btnl,btnr包裹在transition元件中,同時給mask/btn新增over/out事件處理器,新增bollean資料show,當over時,為真時顯示,out則為false,隱藏。說白了,mask相當於2個大型的按鈕

題解五十七

請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew ...

誅天者 pat basic 練習五十七 數零壹

給定一串長度不超過 10 5 的字串,本題要求你將其中所有英文本母的序號 字母 a z 對應序號 1 26,不分大小寫 相加,得到整數 n,然後再分析一下 n 的二進位制表示中有多少 0 多少 1。例如給定字串pat basic 其字母序號之和為 16 1 20 2 1 19 9 3 71,而 71...

詩與遠方 無題(五十七)

這首詩,是當時上家公司安排團建,我不想去,因為當時想離職,後面又被大佬安排去了,去了之後發現團建還挺好玩的,後面公司說要寫個感想,我就跟大佬們說,我寫首詩吧,不寫感想了,於是就出來了 激情久久難褪去,舉手動嘴共協作 扎筏泅渡並前進,衣襟均溼勿忘行 若問天無通庭處,何不堆塔定高低 高空捉杆腳搖晃,斷橋...