首頁 web前端 Layui教程 讓layui table固定列也能監聽滾動的方法介紹

讓layui table固定列也能監聽滾動的方法介紹

Nov 23, 2019 pm 03:31 PM
layui

讓layui table固定列也能監聽滾動的方法介紹

目前table能滾動的區域是layMain這個區域,他會連動的去滾動表頭和固定列,左右固定列實際他們本身的樣式overflow是hidden的,所以本身不會出現滾動條,也就是說你把滑鼠移到左右固定列上去的話,它是無法被滾動的,比如下面這個效果圖

讓layui table固定列也能監聽滾動的方法介紹

當然這個不是一兩個樣式就能搞定的事情,不然也就不需要整個帖子了,受限於layui table的實現方式特別是表頭固定和左右列固定的實現方法,基本說只添加一兩個css應該是處理不了的。

推薦:layui框架快速入門

目前我的處理方式有幾個步驟:

第一步就是在特定的時候要讓固定列區域下的tbody是可捲動的,這樣子才能去監聽由使用者滑鼠操作的滾動

這個一般可以利用一個css的hover來出來

讓layui table固定列也能監聽滾動的方法介紹

但是,這個只是開頭中的開頭,還需要一些輔助處理,不然出來的結果就會是下面這樣子的

讓layui table固定列也能監聽滾動的方法介紹輔助處理呢,這個得先了解以下table目前的固定列的一些樣式,例如如果有滾動條的話他會計算出來滾動條的寬度,然後有固定列的right就是根據這個值去得出來一個值,具體要看滾動條的寬度了。

如果內容少沒有滾動的那麼他的right就是-1,所以一般來說就是在hover的時候要給它right:0,讓它跟內容的容器的滾動條重疊,看著就像什麼也沒變化一樣但是實際上是固定列的tbody也給加了可以滾動的支持了,

讓layui table固定列也能監聽滾動的方法介紹

這裡不能直接hover的時候就right:0,上面說了,不需要滾動的時候他本來是-1所以如果不管什麼時候hover他都是0的話在不需要滾動的時候就會異常的跳一下,那麼這個標記怎麼來的?這個是透過js事件在滑鼠移入的時候就判斷是有需要,在需要的情況下就給mark一下大致如下:

讓layui table固定列也能監聽滾動的方法介紹到這裡一般就可以滾動了效果如下:

讓layui table固定列也能監聽滾動的方法介紹

第二步,接下來重頭的就是要處理跟實際內容的同步滾動了

一般來說就是監聽scroll然後讓layMain跟著滾動,但是!實際情況定然不會這麼簡單,因為原始的layMain的滾動事件就已經同步的讓固定列去滾動了,這個滾動也會觸發你加到固定列的滾動監聽。

那麼就會出現1212121212121212....這樣循環下去,當然滾動的還好一些它不會出現死循環,要是發現沒有滾動位置他也就停了,但是會大大的使得很難滾動一樣,就是變龜速了,因為滾動一下改變了對方對方反過來也會影響己方這樣如是反覆。

那麼如何處理,還是前面的套路,就是在特殊的情況下給個標誌,然後在固定列滾動的監聽中根據這個標誌去決定是否要同步對方,反過來也是,layMain的滾動也要看情況同步,大致的程式碼如下

讓layui table固定列也能監聽滾動的方法介紹最後的效果:

讓layui table固定列也能監聽滾動的方法介紹

第三步, 然後是處理左固定的相關樣式

因為追求跟滑鼠沒懸浮上去一樣,也就是說左邊的要是一個看不到滾動條但是有能夠監聽到滑鼠滾動的,做了一些特殊的處理:

讓layui table固定列也能監聽滾動的方法介紹樣式

讓layui table固定列也能監聽滾動的方法介紹

#效果:

讓layui table固定列也能監聽滾動的方法介紹

#最後這個修改就看怎麼理解了,如果覺得要顯示滾動條出來好的話就把最後的這步驟處理去掉就好了

測試頁: https://sun_zoro.gitee.io/layuitableplug/testTableCheckboxDisabled

註:以上程式碼中insObj是table.render內部new出來的表格實例,不是return回來的對象,所以以上程式碼是在tablePlug內部有效的,如果不想使用這個插件但是要做對應的處理的話,可以參考以上的邏輯,將insObj.layMain之類的換成對應的表格的jquery物件即可。

在tablePlugv0.1.6的版本中對這部分的一些邏輯進行了微調,主要就是將一些可以用事件委託的用事件委託的方式實現,一些能用其他的選擇器比如:hover代替的就不用標記mark class的形式了,修改大概如下:

刪除之前固定列的body滑鼠移入移出的事件處理,

##改用事件委託的方式:讓layui table固定列也能監聽滾動的方法介紹

聯合滾動的時候採用是否hover的形式不用之前的mark了省得要加入和刪除這個mark,最終效果一樣讓layui table固定列也能監聽滾動的方法介紹

讓layui table固定列也能監聽滾動的方法介紹

以上是讓layui table固定列也能監聽滾動的方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

layui怎麼取得表單數據 layui怎麼取得表單數據 Apr 04, 2024 am 03:39 AM

layui怎麼取得表單數據

layui登陸頁怎麼設定跳轉 layui登陸頁怎麼設定跳轉 Apr 04, 2024 am 03:12 AM

layui登陸頁怎麼設定跳轉

layui如何實現自適應 layui如何實現自適應 Apr 26, 2024 am 03:00 AM

layui如何實現自適應

layui和elementui哪個好 layui和elementui哪個好 Apr 04, 2024 am 04:15 AM

layui和elementui哪個好

layui怎麼運行 layui怎麼運行 Apr 04, 2024 am 03:42 AM

layui怎麼運行

layui框架是什麼語言 layui框架是什麼語言 Apr 04, 2024 am 04:39 AM

layui框架是什麼語言

layui跟vue有啥差別 layui跟vue有啥差別 Apr 04, 2024 am 03:54 AM

layui跟vue有啥差別

layui框架和vue框架的區別 layui框架和vue框架的區別 Apr 26, 2024 am 01:27 AM

layui框架和vue框架的區別

See all articles