国产一区在线视频_正在播放91_精品视频999_成人国产精品视频_wwwjizz欧美_亚洲欧美日韩精品

當前位置: 聯商論壇  -   -  貼子
  |  

主題:小程序也可以像朋友圈哪有折疊全文嗎?

可樂雞翅

積分:128  聯商幣:67
  |   只看他 樓主

小程序也可以像朋友圈哪有折疊全文嗎?之前做小程序開發時,遇到要實現過長文本進行的折疊的效果(類型微信朋友圈的效果)。主要交互有三點:

讓文本過長時折疊、并顯示一個「全文」的點擊文本

當用戶點擊「全文」則會展開被折疊的文本,并切換該按鈕為「收起」

對不過長的文本則正常顯示

本質上,要實現這個效果得解決兩個問題:

判斷文本是否過長

文本過長時,頁面樣式如何折疊

如何判斷文本是否過長?

所謂「文本過長」,就是文本占據屏幕的高度太大。之所以要判斷這個,是為了能告知邏輯層控制「全文」按鈕的展示與切換。如果沒這個交互,完全可忽略這個問題。成都微三云是專業成都小程序開發。

最直接的文本過長判斷標準,是文本行數超過某個值。在瀏覽器端,可通過 DOM 獲取容器高度和文本的行高,來計算文本顯示的行數。

但小程序中,并沒有給 JS 訪問文本行數或組件高度的接口。我們無法從視圖層獲知行數過多的信息,并告知邏輯層。

所以,我們只能退而求其次,采用字符數來作為文本過長的標準。至于多少字符算過長,可綜合容器寬度、字符(中文字符會占兩個英文字符寬度)、字體、字號,和設計師確認。

但顯然這種做法還有問題。比如,遇到每行字符數很少卻會顯示許多行的情況(例如回車過多),系統就不會進行文本過長的處理,違背我們折疊過長文本的初衷。

文本過長時,如何折疊?

一個簡單的思路是用行高算出一個固定的高度,只顯示前幾行,但該做法過于依賴樣式的實現、不利于維護。

在小程序中,我們可采用移動端頁面開發中一個 hack 技術:-webkit-line-clamp。這個 Webkit 內核私有的 CSS 屬性,用于設置留在容器中的文本行數,讓其余的文本處于「溢出」狀態。

接下來,只要結合 text-overflow: ellipsis; 和 overflow: hidden;,就能達到讓過長的文本只顯示前幾行的效果,即「折疊」效果。

-webkit-line-clamp 的使用,有幾個需要注意的點。

首先是兼容性。其在 Chrome、Safari、QQ 等 Webkit 系瀏覽器都很可靠。而微信小程序的 View 渲染引擎 WKWebView 和 X5 也都是從 Webkit 改過來的,兼容性有較好的保障。

另外,該屬性有個使用前提:需在文本容器開啟 Webkit 瀏覽器私有的 Flex 布局:display: webkit-box;,并將設置子元素的排列方式為 -webkit-box-orient: vertical;。

同時,該屬性對行數的計算是依據 inline 元素來的,只會計算 inline 元素的行數。

基于第三點,在涉及到文本分段時,為了實現按指定的行數折疊,就不能把每段輸出到一個 block 元素(比如 view 組件)中了。那要怎么分段呢?

雖然小程序沒有

這種東西,但好在其 text 組件支持轉義字符。我們可以把每段輸到一個 text 組件中,并在 text 組件結尾加上 \n 來實現分段。

總結

以上,總結下小程序下文本過長折疊的思路:文本過長由邏輯層判斷字符數確定,控制「全文」按鈕的展示與切換。過長時應用 -webkit-line-clamp 樣式折疊文本,再次展開文本只要撤銷該樣式。

回頂部

  快速回復 高級回復
用戶名:   密碼:   [注冊]
[Ctrl+Enter直接提交帖子]  



網站簡介 | 聯系我們 | 法律聲明

ICP證:浙B2-20070104

主站蜘蛛池模板: www.国产高清 | 欧美一级片在线观看 | 日韩精品一区在线 | 精品久久一区二区 | 久久久久91 | 亚洲成人日本 | 成人免费视频观看视频 | 国产成人在线视频 | 亚洲一级毛片 | 日韩快播电影网 | 亚洲午夜免费视频 | 午夜亚洲福利 | 91免费在线视频 | 精品久久久久久国产 | 国产精品一区二区免费 | 精品国产一区av | 亚洲国产视频一区 | 欧美日本一区 | 欧美韩日| 日韩在线中文字幕 | 天天干夜夜操 | 99久久99久久| 91视频8mav | 午夜免费电影 | 国产乱码精品一区二区三区忘忧草 | 日韩午夜激情 | 国产精品一区二区在线 | 亚洲国产精品久久久久婷婷老年 | 国产二区视频 | 色婷婷一区二区三区四区 | 精品av| 91在线高清观看 | 91精品欧美久久久久久动漫 | 国产高清精品一区二区三区 | 日韩精品在线观看免费 | 成人国产精品视频 | 国产精品久久一区 | 日韩毛片在线观看 | 自拍小电影 | 久久国产精品一区二区 | 性色av一区二区三区 |