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

當(dāng)前位置: 聯(lián)商論壇  -   -  貼子
  |  

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

可樂(lè)雞翅

積分:128  聯(lián)商幣:67
  |   只看他 樓主

小程序也可以像朋友圈哪有折疊全文嗎?之前做小程序開(kāi)發(fā)時(shí),遇到要實(shí)現(xiàn)過(guò)長(zhǎng)文本進(jìn)行的折疊的效果(類(lèi)型微信朋友圈的效果)。主要交互有三點(diǎn):

讓文本過(guò)長(zhǎng)時(shí)折疊、并顯示一個(gè)「全文」的點(diǎn)擊文本

當(dāng)用戶(hù)點(diǎn)擊「全文」則會(huì)展開(kāi)被折疊的文本,并切換該按鈕為「收起」

對(duì)不過(guò)長(zhǎng)的文本則正常顯示

本質(zhì)上,要實(shí)現(xiàn)這個(gè)效果得解決兩個(gè)問(wèn)題:

判斷文本是否過(guò)長(zhǎng)

文本過(guò)長(zhǎng)時(shí),頁(yè)面樣式如何折疊

如何判斷文本是否過(guò)長(zhǎng)?

所謂「文本過(guò)長(zhǎng)」,就是文本占據(jù)屏幕的高度太大。之所以要判斷這個(gè),是為了能告知邏輯層控制「全文」按鈕的展示與切換。如果沒(méi)這個(gè)交互,完全可忽略這個(gè)問(wèn)題。成都微三云是專(zhuān)業(yè)成都小程序開(kāi)發(fā)

最直接的文本過(guò)長(zhǎng)判斷標(biāo)準(zhǔn),是文本行數(shù)超過(guò)某個(gè)值。在瀏覽器端,可通過(guò) DOM 獲取容器高度和文本的行高,來(lái)計(jì)算文本顯示的行數(shù)。

但小程序中,并沒(méi)有給 JS 訪問(wèn)文本行數(shù)或組件高度的接口。我們無(wú)法從視圖層獲知行數(shù)過(guò)多的信息,并告知邏輯層。

所以,我們只能退而求其次,采用字符數(shù)來(lái)作為文本過(guò)長(zhǎng)的標(biāo)準(zhǔn)。至于多少字符算過(guò)長(zhǎng),可綜合容器寬度、字符(中文字符會(huì)占兩個(gè)英文字符寬度)、字體、字號(hào),和設(shè)計(jì)師確認(rèn)。

但顯然這種做法還有問(wèn)題。比如,遇到每行字符數(shù)很少卻會(huì)顯示許多行的情況(例如回車(chē)過(guò)多),系統(tǒng)就不會(huì)進(jìn)行文本過(guò)長(zhǎng)的處理,違背我們折疊過(guò)長(zhǎng)文本的初衷。

文本過(guò)長(zhǎng)時(shí),如何折疊?

一個(gè)簡(jiǎn)單的思路是用行高算出一個(gè)固定的高度,只顯示前幾行,但該做法過(guò)于依賴(lài)樣式的實(shí)現(xiàn)、不利于維護(hù)。

在小程序中,我們可采用移動(dòng)端頁(yè)面開(kāi)發(fā)中一個(gè) hack 技術(shù):-webkit-line-clamp。這個(gè) Webkit 內(nèi)核私有的 CSS 屬性,用于設(shè)置留在容器中的文本行數(shù),讓其余的文本處于「溢出」?fàn)顟B(tài)。

接下來(lái),只要結(jié)合 text-overflow: ellipsis; 和 overflow: hidden;,就能達(dá)到讓過(guò)長(zhǎng)的文本只顯示前幾行的效果,即「折疊」效果。

-webkit-line-clamp 的使用,有幾個(gè)需要注意的點(diǎn)。

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

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

同時(shí),該屬性對(duì)行數(shù)的計(jì)算是依據(jù) inline 元素來(lái)的,只會(huì)計(jì)算 inline 元素的行數(shù)。

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

雖然小程序沒(méi)有

這種東西,但好在其 text 組件支持轉(zhuǎn)義字符。我們可以把每段輸?shù)揭粋(gè) text 組件中,并在 text 組件結(jié)尾加上 \n 來(lái)實(shí)現(xiàn)分段。

總結(jié)

以上,總結(jié)下小程序下文本過(guò)長(zhǎng)折疊的思路:文本過(guò)長(zhǎng)由邏輯層判斷字符數(shù)確定,控制「全文」按鈕的展示與切換。過(guò)長(zhǎng)時(shí)應(yīng)用 -webkit-line-clamp 樣式折疊文本,再次展開(kāi)文本只要撤銷(xiāo)該樣式。

回頂部

  快速回復(fù) 高級(jí)回復(fù)
用戶(hù)名:   密碼:   [注冊(cè)]
[Ctrl+Enter直接提交帖子]  



網(wǎng)站簡(jiǎn)介 | 聯(lián)系我們 | 法律聲明

ICP證:浙B2-20070104

主站蜘蛛池模板: 国产成人 综合 亚洲 | av大片在线观看 | 亚洲xx在线 | 日韩av电影免费 | 欧美日韩视频在线第一区 | 日韩精品免费在线视频 | 福利91| a国产在线 | 国产精品日本一区二区在线播放 | 国产精品日韩欧美 | 成人免费视频网 | 国产成人片 | 一级全毛片 | 久久久久一区二区三区 | 精品96久久久久久中文字幕无 | 国产精品毛片一区二区三区 | 国产成人福利在线观看 | 精品不卡 | 亚洲aⅴ天堂av在线电影软件 | 欧美精品99 | 男人的天堂视频网站 | 黄色大片在线 | 日韩手机在线观看 | 99re在线观看 | 人人草人人 | 国产精品a一区二区三区网址 | 国产色在线 | 国产电影一区二区三区图片 | 国产成人午夜 | 欧美激情一区二区三区四区 | 日本一本在线 | 成人一区二区电影 | 日本黄a三级三级三级 | 中文字幕综合 | 欧美日本韩国一区二区 | 欧美成人精品在线观看 | 欧美日韩一区二区三区在线观看 | 国产成人综合在线观看 | 国产精品无码专区在线观看 | 亚洲成人免费在线观看 | 久久精品国产免费 |