better-scroll之吸頂效果巨坑掙扎中

来源:https://www.cnblogs.com/cq1715584439/archive/2019/04/05/10660265.html
-Advertisement-
Play Games

今天和大家分享下better-scroll這款移動端用來解決各種滾動需求的插件(目前已經支持PC) 關於其中的API大家可以去官網看下 這裡就給大家介紹幾種常用的以及需要註意的點是什麼 首先說一下better-scroll的使用註意問題吧 1、移動端 我們通常採用三段式進行佈局的 例如 <div c ...


     今天和大家分享下better-scroll這款移動端用來解決各種滾動需求的插件(目前已經支持PC)

關於其中的API大家可以去官網看下  這裡就給大家介紹幾種常用的以及需要註意的點是什麼

 

首先說一下better-scroll的使用註意問題吧

     1、移動端 我們通常採用三段式進行佈局的  例如 <div class="container">    <header></header><main></main><fotter></fotter>   </div>  假如我們利用彈性盒佈局的話  給container  開盒子後我們一般給頭部和尾部固定的高度 給main這個中間盒子一個flex:1;和overflow:auto ,讓其達到可以自由滾動效果  但是如果我們給main這層中間盒子載入了better-scroll這款插件後 我們需要把auto改成hidden  畢竟給上固定高度百分百(當然這裡可以省略)

可是有的人就會發現有時滾動效果沒有作用對吧 嘿、此時第一個註意問題就來了 載入better-scroll的元素只能有一個直屬子元素 也就是 <main><div class="content">剩餘佈局盒子寫在這裡</div></main>這種形式 並且content這層盒子不能給固定高度  當content的高度大於外層main這個盒子後better-scroll就會生效

 

     2、然後第二點就是今天的重頭戲 吸頂效果了  

    相信用過這款插件的就會知道我們的滾輪在這裡是沒有作用的 這也意味著onscroll事件不能使用了 那吸頂效果該如何去做才好呢    在better-scroll中給我們提供了這樣一個方法  bs.on("scroll",function(e){})  此時的e能夠列印出一個關於滾動產生的x y 對象  註意這個方法要想生效我們需要在  這個bs對象中添加probeType這個屬性 寫法如下

let bs=new BScroll("main",{ probeType:2 }) 然後到了這裡就有人會說那我們既然能夠得到y值那豈不是可以 利用以前的方法 我們給需要吸頂的元素添加一個關於固定定位的class類名就可以對吧   然後此時又引出了better-scroll的另一個巨坑了    fixed定位的元素,如果父級有transform樣式,值不為none,那麼fixed定位就會失效,scale(),rotate()都會使fixed定位失效。  所以說我們在使用better-scroll事件的盒子里會造成我們的絕對定位失效 從而導致我們的吸頂效果失敗     於是本人想出另外一個比較low的方法可以模擬吸頂效果   我們同樣可以在scroll這個方法中克隆一下這個需要吸頂的盒子然後 在通過e.y值在達到我們想要的高度時動態添加給除了main任何一個地方  註意這裡一定不要加給main   然後在通過絕對定位定在想要位置  不想要的位置再刪除  這裡刪除的時候需要判斷是否添加上   添加的時候註意不要多次添加!!!     3、點擊事件失效問題     在引用了這個插件後這個盒子內部的元素會出現點擊事件失效問題  此時我們需要在bs那個對象中放上這個屬性  click:true     4、  返回頂部操作問題      前面說過引入了這個插件後onscroll事件就不會被觸發了 那麼代表scrollTop也就沒有作用了  那麼返回頂部操作我們應該怎麼辦呢    此時better-scroll事件裡面有一個方法 bs.scrollTop(0,0,1000) 這個方法可以讓我們返回頂部  0,0是返回0,0點位置 第三個參數是返回所用的時間長短      5、上拉載入效果 和 下拉刷新    這裡給大家簡單介紹幾個API的使用  
 1  let bs = new BScroll("main", {
 2             pullUpLoad: true,//上拉
 3             pullDownRefresh: true,//下拉
 4             //也可以寫成對象模式
 5             //註意上拉不支持
 6             // pullDownRefresh:{
 7             //     //下拉到一百的位置才會觸發
 8             //     threshold:100,
 9             //     //然後鬆手後返回50的位置
10             //     stop:50,
11             // }
12         })
13 
14         bs.on("pullingDown", function () {
15             //"pullingUp   上拉"   
16             console.log("下拉刷新");
17             //這個事件開始告訴瀏覽器開始下拉刷新了
18             //然後進行一些數據的請求
19 
20             //當數據請求過來後
21             //告訴瀏覽器下拉結束
22             bs.finishPullUp();//上拉結束
23             bs.finishPullDown();
24             //DOM結構發生改變後可以刷新下
25             bs.refresh()
26         })

 

如果本文對你有所幫助的話 請動動您漂亮的手指點個贊嘍~~~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 問題:在A activity中傳遞一個SpannableString到B activity中,並最終傳遞到B activity中的TextView中,但是沒有展示出Span效果。 解決:閱讀TextView.setText()方法 看到會根據BufferType對傳入的text重新賦值,於是回溯找到 ...
  • 一、概述 AIDL是Android Interface Definition Language的縮寫,即Android介面定義語言。它是Android的進程間通信比較常用的一種方式。 Android中,每一個進程都有自己的Dalvik VM實例,擁有自己的獨立的記憶體空間,進程與進程之間不共用記憶體,這 ...
  • 今天狀態不太好,睡久了懵一天。 以前只是瞭解過async函數,並還沒有很熟練的運用過,所以先開個坑吧,以後再結合實際來更新下,可能說的有些問題希望大家指出。 async和await相信大家應該不陌生,讓非同步處理變得更友好。 其實這玩意兒就是個Generator的語法糖,想深入學習得去看看Genera ...
  • <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script> var now = new Date; var bir = new Date(1995,09,24,08,50,10); //在這裡按照這個格式輸入自己生日 ...
  • vue+element ui中的圖片獲取與上傳 工作上接觸了一下圖片的處理,圖片的格式是文件流, 記錄如下。 請求圖片 請求圖片的時候,帶上 , 否則圖片顯示的可能是亂碼。 顯示圖片 圖片返回的是文件流的形式, 控制臺中顯示的是亂碼。 直接顯示二進位圖片會出錯,所以我們要進行處理。 顯示圖片中,要對 ...
  • 1.CSS認識 在談論CSS的概念之前,我們先說一說web標準的目的——其在於創建一個統一的用於web表現層的技術標準,以便通過不同瀏覽器或終端設備向最終用戶展示信息內容。一個網頁的呈現是由三部分組成:結構(Structure)、表現(Presentation)和行為(Behavior)。 而三大部 ...
  • 1、首先得有node和npm的環境,node的下載:http://nodejs.org/download/。安裝node之後,npm也自動生成了,顯示版本號就意味著安裝成功 2、接下來就是安裝vue-cli腳手架,執行以下命令: 在瀏覽器執行 http://localhost:8080,出現以下截圖 ...
  • 一、2D轉換(transform) CSS3中的transform轉換和PS中的變換是一樣的,分別有:縮放、位移、斜切、旋轉 1.1 transform:scale()縮放 transform:scale(w,h); 寬度和高度,w,h都是填寫縮放的倍數,沒有單位,比如1.5就是放大1.5倍,1是默 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...