“無限滾動載入”適用於你的產品嗎?
怎樣通過更友好的方式來呈現一系列的資料內容,包括文章、連結、圖片、搜尋結果等等——對於設計師來說,這不是一件很輕鬆的事。在這方面,頁碼導航(pagination)是一種經過時間驗證的、還算值得信賴的解決方案。
不過最近幾年,我們可以發現越來越多的網站開始使用無限滾動(infinite scrolling)的方式來呈現內容了——當使用者瀏覽到頁面底部時,傳統意義上的“下一頁”資料會自動載入,並輸出到當前頁面中。
對於某些型別的網站或移動應用來說,無限滾動確實是一種不錯的模式;但在在某些情況下,它也會造成災難性的後果。
我們先來看一下無限滾動載入的優缺點。
優點
- 有效的降低了介面複雜度,節省了空間:我們不再需要臃腫複雜的頁碼導航連結或按鈕了。
- 對觸屏裝置來說,互動方式更符合直覺:在移動應用的互動環境當中,通過向上滑動進行滾屏的操作已經成為最基本的使用者習慣,而且所需要的操作精準程度遠遠低於點選連結或按鈕。
- 更高的參與度:以上兩點所帶來的互動便捷性可以使使用者將注意力更多的集中在內容而不是操作上,從而讓他們更樂於沉浸在探索與瀏覽當中。
缺點
- 有限的用例:無限滾動的方式只適用於某些特定型別產品當中一部分特定型別的內容。例如,在電商網站當中,使用者時常需要在商品列表與詳情頁面之間切換,這種情況下,傳統的、帶有頁碼導航的方式可以幫助使用者更穩妥和準確的回到某個特定的列表頁面當中。
- 額外的複雜度:那些用來打造無限滾動的JS庫雖然都自稱很容易使用,但你總會需要在自己的產品中進行不同程度的定製化處理,以滿足你們自己的需求;另外這些JS庫在瀏覽器和裝置相容性等方面的表現也參差不齊,你必須做好充分的測試與調整工作。
- 再見了,頁尾:如果使用了比較典型的無限滾動載入模式,這就意味著你可以和頁尾說拜拜了。最好考慮一下頁尾對於你的網站,特別是使用者的重要性;如果其中確實有比較重要的內容或連結,那麼最好換一種更傳統和穩妥的方式。千萬不要耍弄你的使用者,當他們一次次的瀏覽到頁面底部,看到頁尾,卻因為自動載入的內容突然出現而無論如何都無法點選頁尾中的連結時,他們會變的越發憤怒。
- SEO:集中在一頁當中動態載入資料,與一頁一頁的輸出相比,究竟那種方式更利於SEO,這是你必須考慮的問題。對於某些以型別網站來說,在這方面進行冒險是很不划算的。
- 關於頁面數量的印象:其實站在使用者的角度來看,這一點並非負面;不過,如果對於你的網站來說,通過更多的內容頁面展示更多的相關資訊(包括廣告)是很重要的策略,那麼單頁無限滾動的方式對你並不適用。
瞭解了相關的優缺點,接下來我們看一看我個人認為在無限滾動的運用方面比較到位的兩個網站。
Twitter適合採用無限滾動載入的一個重要原因,就是每個內容單元都很短小精煉,其本身就是內容整體,使用者不需要在“列表索引”與“內容詳情”之間切換就可以獲取全部資訊,而且當滑鼠懸停在某個內容條目範圍內的時候,對應的操作(回覆、刪除、收藏等)就會呈現;所有內容與功能全部集中在當前的上下文環境中。
Tumblr
預設情況下,Tumblr是通過無限滾動的方式載入內容的,但他們在設定當中為使用者提供了禁用無限滾動的選項,這種做法非常體貼。Tumblr的產品特色決定了其內容型別的廣泛性,不同型別的使用者所關注的內容在形式方面可能有很大的區別;允許使用者自主設定內容載入方式的做法可以照顧到不同的使用者群體。
下面是我個人認為不大適合採用無限滾動的例子。
Bing的圖片搜尋
與Google相仿,Bing在圖片與視訊的搜尋結果頁面當中採用了無限滾動載入的做法。不過當使用者點選某張縮圖從而進入圖片詳情頁面後,再回到搜尋結果列表時會失去之前的定位,這使得使用者必須重新滾動頁面,尋找點選之前的位置。如果你的關鍵詞會產生大量的搜尋結果,這種方式將給你帶來極大的不便。(現在Bing已經改變了這一做法,當使用者點選了搜尋結果中的縮圖時,會直接在當前頁面輸出包含大圖及相關資訊在內的彈出層;新的流程使使用者不會再脫離當前環境 - 譯者C7210小注)
YouTube
我愛YouTube的整體設計,同時也理解他們不斷修改和調整設計方案的初衷,不過他們最近將首頁的頁碼導航改為無限滾動的做法還是讓我有些不爽。和Bing的問題類似,YouTube的實際內容(視訊)是在一個獨立的頁面中的,使用者顯然不希望在看過一個視訊後回到列表頁面卻發現列表重新載入了。
另外有些尷尬的是,YouTube的無限滾動載入不是那麼的“自動”,使用者需要點選一個按鈕來使列表載入更多的視訊內容;從某種角度上講這不算壞,因為它確實是將控制權交給了使用者,實現了類似前面提到的Tumblr的做法,但直接將無限滾動與手動觸發結合在一起的形式多少有些不倫不類。
最佳實踐
希望你能通過以上這些內容瞭解到自己的產品是否適合採用無限滾動載入的方式。如果答案是肯定的,那麼下面這些要點也許可以幫助你避免掉實踐當中的一些關鍵問題:
- 提供降級方案:前端開發人員要考慮到在特殊環境下JavaScrit無法正常執行的狀況,提供平穩降級的解決方案。
- 可設定:如果可能的話,考慮向使用者提供設定選項,方便他們選擇最適合自己的瀏覽方式。這會讓使用者感到貼心,從而提升對你的產品的滿意度與忠誠度。
- 視覺反饋提示:在自動載入新內容的時候,要向使用者提供必要的視覺反饋,例如各種能夠表達“載入中”的動畫效果,否則使用者將無法瞭解當前的狀況;在沒有視覺提示的情況下,如果載入時間過長,會讓使用者誤以為接下來不再有內容了。
- 幫使用者定位:不要因為使用者訪問內容詳情並點選了瀏覽器上的回退按鈕就失去掉之前的列表位置。如果確實沒有辦法做到,而這一點對你的產品又很重要,那麼還是考慮傳統方式為好。
- 測試:使用目標使用者群有可能用到的各種裝置進行測試,檢驗無限滾動載入方案的實際表現。
相關文章
- Xamarin.Forms: 無限滾動的ListView(懶載入方式)ORMView
- 移動端無限滾動載入 js實現原理JS
- js瀑布流滾動無限載入(路徑需要修改)JS
- 關於頁面無限滾動思路
- [譯] 使用 Angular 和 RxJS 實現的無限滾動載入AngularJS
- 滾動優化(無限滾動載入、滾動元素內有大量dom,造成卡頓問題的優化方案)優化
- Vue 無限滾動元件Vue元件
- PHP+InfiniteScroll網頁無限滾動載入資料例項PHP網頁
- 基於 Vue.js 的移動端元件庫mint-ui實現無限滾動載入更多Vue.js元件UI
- 走近Fusion元件——無限滾動元件
- Framework7 無限滾動Framework
- javascript無限迴圈滾動JavaScript
- 小程式:無限自動滾動的Gallery
- 無限滾動HTML UL結構HTML
- 設計無限滾動下拉載入,實踐高效能頁面真諦
- 無限滾動的最佳實踐經驗
- [譯] Angular: 使用 RxJS Observables 來實現簡易版的無限滾動載入指令AngularJS
- [譯] 使用響應式程式設計來實現簡易版的無限滾動載入程式設計
- 使用RecycleView實現無限滾動的日曆View
- iOS開發之UIScrollView無限滾動iOSUIView
- 安卓中如何實現無限滾動列表安卓
- 銀行類的產品適合做小程式嗎?
- vue 滾動載入Vue
- 原生JS利用transform實現banner的無限滾動JSORM
- 使用 laravel8 + ajax 實現無限滾動Laravel
- 10行程式碼實現頁面無限滾動行程
- 用CSS美化你的滾動條CSS
- AirDrop無限迴圈攻擊,你的iPhone還好嗎?AIiPhone
- 一個支援百萬量級的vue3無限滾動元件Vue元件
- 你真的使用過低程式碼產品嗎?
- 乾貨 | 這些產品主圖設計的色彩原理,你會用嗎?
- 使用Intersection Observer API建立無限載入元件ServerAPI元件
- 滾動載入圖片(懶載入)實現原理
- 字型隨著ProgressBar的載入而滾動
- django 實現滾動載入的功能薦Django
- 90行程式碼,15個元素實現無限滾動行程
- 提升創意無限,盡在The Foundry Nuke 15!現已適用於Mac和Windows!MacWindows
- sqlldr載入會產生redo嗎?SQL