秒度開發 | 這個技巧讓小程序也能像朋友圈一樣
之前做小程序開發時,遇到要實現過長文本進行的折疊的效果(類型微信朋友圈的效果)。主要交互有三點:
本質上,要實現這個效果得解決兩個問題:
如何判斷文本是否過長? 所謂「文本過長」,就是文本占據屏幕的高度太大。之所以要判斷這個,是為了能告知邏輯層控制「全文」按鈕的展示與切換。如果沒這個交互,完全可忽略這個問題。 最直接的文本過長判斷標準,是文本行數超過某個值。在瀏覽器端,可通過 DOM 獲取容器高度和文本的行高,來計算文本顯示的行數。 但小程序中,并沒有給 JS 訪問文本行數或組件高度的接口。我們無法從視圖層獲知行數過多的信息,并告知邏輯層。 所以,我們只能退而求其次,采用字符數來作為文本過長的標準。至于多少字符算過長,可綜合容器寬度、字符(中文字符會占兩個英文字符寬度)、字體、字號,和設計師確認。 但顯然這種做法還有問題。比如,遇到每行字符數很少卻會顯示許多行的情況(例如回車過多),系統就不會進行文本過長的處理,違背我們折疊過長文本的初衷。 文本過長時,如何折疊? 一個簡單的思路是用行高算出一個固定的高度,只顯示前幾行,但該做法過于依賴樣式的實現、不利于維護。
在小程序中,我們可采用移動端頁面開發中一個 hack 技術:
接下來,只要結合
首先是兼容性。其在 Chrome、Safari、QQ 等 Webkit 系瀏覽器都很可靠。而微信小程序的 View 渲染引擎 WKWebView 和 X5 也都是從 Webkit 改過來的,兼容性有較好的保障。
另外,該屬性有個使用前提:需在文本容器開啟 Webkit 瀏覽器私有的 Flex 布局:
同時,該屬性對行數的計算是依據
基于第三點,在涉及到文本分段時,為了實現按指定的行數折疊,就不能把每段輸出到一個
雖然小程序沒有 總結
以上,總結下小程序下文本過長折疊的思路:文本過長由邏輯層判斷字符數確定,控制「全文」按鈕的展示與切換。過長時應用 |
秒度科技
新聞中心
2018-10-10
之前做 小程序 開發時,遇到要實現過長文本進行的折疊的效果(類型微信朋友圈的效果)。主要交互有三點: 讓文本過長時折疊、并顯示一個「全文」的點擊文本 當用戶點擊「全文」