BetterScroll:在移動端滾動場景的應用
BetterScroll 是一款重點解決移動端各種滾動場景需求的開源外掛(GitHub地址),適用於滾動列表、選擇器、輪播圖、索引列表、開屏引導等應用場景。
為了滿足這些場景,它不僅支援慣性滾動、邊界回彈、滾動條淡入淡出等效果的靈活配置,讓滾動更加流暢,同時還提供了很多 API 方法和事件,以便我們更快地實現滾動場景下的需求,如下拉重新整理、上拉載入。
由於它基於原生 JavaScript 實現,不依賴任何框架,所以既可以原生 JavaScript 引用,也可以與目前前端 MVVM 框架結合使用,比如,其官網上的示例就是與 Vue 的結合。
首先,讓我們來看一下它是怎樣讓滾動更流暢的吧。
讓滾動更流暢
在移動端,如果你使用過 overflow: scroll 生成一個滾動容器,會發現它的滾動是比較卡頓,呆滯的。為什麼會出現這種情況呢?
因為我們早已習慣了目前的主流作業系統和瀏覽器視窗的滾動體驗,比如滾動到邊緣會有回彈,手指停止滑動以後還會按慣性繼續滾動一會,手指快速滑動時頁面也會快速滾動。而這種原生滾動容器卻沒有,就會讓人感到卡頓。
BetterScroll 的滾動體驗
試一試 BetterScroll 的滾動體驗吧。體驗地址
可以發現,在增加慣性滾動,邊緣回彈等效果之後,明顯流暢、舒服了很多。那麼,這些效果是怎麼實現的呢?
慣性滾動
BetterScroll 在使用者滑動操作結束時,還會繼續慣性滾動一段。首先看一下原始碼中的 BScroll.prototype._end 函式,這是 touchend、mouseup、touchcancel、mousecancel 事件的處理函式,也就是使用者滾動操作結束時的邏輯。
BScroll.prototype._end
= function
(e) {
...
if
( this .options.momentum
&& duration < this .options.momentumLimitTime
&& (absDistY > this .options.momentumLimitDistance
|| absDistX > this .options.momentumLimitDistance))
{
let
momentumX = this .hasHorizontalScroll
? momentum( this .x,
this .startX,
duration, this .maxScrollX,
this .options.bounce
? this .wrapperWidth
: 0, this .options)
:
{destination: newX, duration: 0}
let
momentumY = this .hasVerticalScroll
? momentum( this .y,
this .startY,
duration, this .maxScrollY,
this .options.bounce
? this .wrapperHeight
: 0, this .options)
:
{destination: newY, duration: 0}
newX
= momentumX.destination
newY
= momentumY.destination
time
= Math.max(momentumX.duration, momentumY.duration)
this .isInTransition
= 1
}
...
}
|
以上程式碼的作用是,在使用者滑動操作結束時,如果需要開啟了慣性滾動,用 momentum 函式計算慣性滾動距離和時間。該函式,根據使用者滑動操作的速度和 deceleration選項 ——慣性減速來計算滾動距離,至於滾動時間,也是一個可配置的選項。
function
momentum(current, start, time, lowerMargin, wrapperSize, options) {
...
let
distance = current - start
let
speed = Math.abs(distance) / time
...
let
duration = swipeTime
let
destination = current + speed / deceleration * (distance < 0 ? -1 : 1)
...
}
|
邊緣回彈
超過邊緣時的回彈,有兩個處理步驟,第一步是滾動到超過邊界時速度要變慢,第二步是回彈到邊界。其中,第一步是在原始碼的 BScroll.prototype._move 函式,這是 touchmove 和 mousemove 事件的處理函式,也就是在使用者滑動操作過程中的邏輯。
//
Slow down or stop if outside of the boundaries
相關推薦BetterScroll 在移動端滾動場景的應用rtx max 會有 快速滾動 container 切換圖片 real 由於 ecan BetterScroll 是一款重點解決移動端各種滾動場景需求的開源插件( GitHub地址 ),適用於滾動列表、選擇器、輪播圖、索引列表、開屏引導等應用場景。 為了滿足這些場景,它不僅 BetterScroll:在移動端滾動場景的應用BetterScroll 是一款重點解決移動端各種滾動場景需求的開源外掛(GitHub地址),適用於滾動列表、選擇器、輪播圖、索引列表、開屏引導等應用場景。 為了滿足這些場景,它不僅支援慣性滾動、邊界回彈、滾動條淡入淡出等效果的靈活配置,讓滾動更加流暢,同時還提 移動端 H5 場景應用【破繭成蝶】案例鑑賞移動端 H5 場景應用【破繭成蝶】案例鑑賞 移動端【破繭成蝶】場景請用微信掃描二維碼訪問(溫馨提示:H5案例有聲音,請開啟聲音體驗): 案例: <!DOCTYPE HTML> <html> <head> <meta http-equiv 【MDCC專訪】劉昇平:移動端人工智慧最看好會話互動應用2016 年 9 月 23-24 日,由 CSDN 和創新工場聯合主辦的“MDCC 2016 移動開發者大會• 中國”(Mobile Developer Conference China)將在北京•國家會議中心召開,來自iOS、Android、跨平臺開發、產品設 ui界面設計公司搜集精彩設計三十例:移動端APP界面設計欣賞之二lis bin 郵箱 移動 藍藍設計 wid target tro 也會 如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這裏 藍藍設計是一家地處北京的界面設計公司,經常會接到移動端APP界面設計的項目,比如給一起海帶做的海外代購APP、給詞覓公司做的社交AP 移動端二三事【二】:移動端觸摸事件點透及多種解決方案。優化 提前 sta 屬性 lis 剛才 觸摸事件 功能 觸發 大家都知道的少說,多分享一些幹貨。 一、首先說移動端的三大主要事件: 1.手指按下: ontouchstart2.手指移動:ontouchmove3.手指擡起 ontouchend *使用移動端事件時,為盡 回顧2017系列篇(二):移動端APP設計趨勢原型設計 交互設計 界面設計 設計師 移動端APP在2017年經歷了諸多的變化, 人工智能、聊天式的界面、響應式設計、虛擬現實(VR)和增強現實(AR)讓設計師不斷面臨新的挑戰。研究表明,用戶每天耗費在手機和平板上的平均時長為158分鐘,其中127分鐘是耗費在各類APP中,可以看出移動端 第125天:移動端:空白字符問題解決辦法meta set idt tro contain nta 之間 空白字符 body 1、當我們想使用百分比來進行兩個盒子的並排 代碼: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 第126天:移動端-原生實現響應式模態框flex col 16px position inter tween res doc text 下面采用HTML+CSS+JavaScript實現模態框,並采用Flex布局和多媒體查詢實現響應式。 一、模態框HTML代碼 1 <!DOCTYPE html> 第133天:移動端開發的一些總結硬件 緩沖 post 優化 全局 密度 content 允許 接口 1、 piexl 像素知識 640 * 1136的圖片能不能在iphone5上完全展示?iphone5分辨率640*1136 邏輯像素與物理像素的關系px邏輯像素:瀏覽器使用的抽象單位dp,pt物理像素:設 前端性能優化(二):移動端瀏覽器前端優化策略因此 本地 網絡流量 桌面 cse kit 極致 加載 文件 相對於桌面端瀏覽器,移動端Web瀏覽器上有一些較為明顯的特點:設備屏幕較小、新特性兼容性較好、支持一些較新的HTML5和CSS3特性、需要與Native應用交互等。但移動端瀏覽器可用的CPU計算資源和網絡資源極為 移動端滾動插件lB github hub bar option HR 插件 BE tar 1.simulation-scroll-y.js https://fmover.hcysun.me/#/zh-cn/plugins/simulation-scroll-y?id=scrollbar 核心技術解析:移動端車牌識別系統方案ocr文字識別 攝像頭 inf 人員 c代碼 cnblogs 單機 研發 安裝 國內目前OCR車牌識別技術,主要細分為:1.識別車牌號碼、2.車牌顏色、3.車牌類型等車牌特征信息;算法采用清華TH-OCR技術,不僅融合了車牌定位、車牌字符切分、車牌字符識別等算法,而且系統具 MetaHandler.js:移動端適配各種螢幕JS: !function () { var opt = function() { var ua = navigator.userAgent, android = ua.match(/(Android);?[\s\/]+([\d.]+)?/), ip Hades:移動端靜態分析框架只有通過別人的眼睛,才能真正地瞭解自己 ——《雲圖》 背景 作為全球最大的網際網路 + 生活服務平臺,美團點評近年來在業務上取得了飛速的發展。為支援業務的快速發展,移動研發團隊規模也逐漸從零星的小作坊式運營,演變為千人級研發軍團協同作戰。 在公司蓬勃發展的大背景下,移動專案架 AngularJS仿拉勾網WebApp開發移動端單頁應用實戰 AngularJS實戰 共7章第1章 課程介紹 講解課程開發內容和開發流程。前端主流開發框架與AngularJS對比。介紹AngularJS的基本概念。第2章 基礎知識介紹介紹單頁應用以及AngularJS web app的構成。講解css預編譯語言less的使用。第3章 使用構建工具講解構建工具gul 移動端滾動穿透問題解決方案一、 問題描述 移動端當position:fixed的彈窗彈出時,滑動彈窗,下層的頁面會跟隨滾動 二、 解決方案 1. body 設定overflow: hidden; 當彈窗彈出時,設定body元素的overflow屬性為hidden,暴力去除滾動。 缺點:會丟失頁面的滾動位置 重寫移動端滾動條[iScroll.js核心程式碼]最近寫元件庫的時後,發現這個滾動條是真的醜啊,決定重新擼一個滾動條: 首先咱們回顧一下移動端瀏覽器滾動條特性: 滾動條在開始滾動時漸顯,滾動結束後漸隱 滾動條不佔內容區寬度,懸浮固定 滾動條高度(深灰)和滾動區可視高度(淺灰)比等於滾動區可視高度和滾動目標的高度 當滾動目標的高度小於滾動區 移動端滾動載入資料實現模擬場景:移動端上劃到底,載入更多資料。 1、本例子基於jQuery實現。監聽滾動事件。 $(function(){ $(window).scroll(function(){ }) }) 2、獲取滾動條到文件頂部的距離,上圖scrollTop那段。原生JS可用document.documentElement 微信小程式入門(3):移動端訪問PC上一篇講了web-view的使用,然而你會發現這隻能訪問一些百度、淘寶、騰訊等一些存在的網站,但如何訪問自己本地ip以來訪問自己寫的一些網站呢? 注意:這篇文章是利用Python開發的web,可能對一些其他僅有HTML、css、js的靜態不太適用 對於Django部分本篇不做過多講解,以後 |