本文做者:無雙,GitHub連接:https://github.com/wushuangzhao/blog/issues/2css
更多內容查看開發者社區/更多招聘信息html
開發者分享您在開發智能小程序中的經驗心得,咱們會經過智能小程序技術團隊的社區渠道把你的經驗分享給更多開發者朋友,投稿地址:smartprogramtech@baidu.com。git
目前在移動端開發的展現界面中,若是一段文本的數量過長,受限於屏幕的寬高等因素,有可能不能徹底顯示,爲了提升用戶的使用體驗,這個時候就須要咱們把溢出的文本顯示成省略號。web
接下來咱們來看一下對於下面這一段文本內容,咱們能夠如何實現行文本溢出的樣式吧:小程序
- 單行文本溢出
- 多行文本溢出:5行如下的內容全顯示;5行以上(含5行)只顯示5行,超出部分省略號展現;5行以上顯示展開按鈕。點擊展開, 顯示所有內容以及收起按鈕;點擊收起,摺疊內容並顯示展開按鈕。
悠悠竹林,萬頃翠色,幾多清幽和寧靜,天然沒有城市的喧囂和雜亂。如有雨徐徐飄落,在綠綠的枝葉上騰起嫋嫋輕煙,如霧,如雲,更似一幅水墨丹青,流芳沁馨,不知泊了誰的夢懷。更醉人的是那動聽的雨聲,疏疏落落,瀟然成音成曲。此時,雨爲纖指竹爲弦,清風流韻,細彈心語,聽雨的人,即是知音。ide
單行文本溢出
1.在js文件中,輸入文本內容:工具
Page({ data: { content:'人要拿得起,也要放得下。拿得起是生存,放得下是生活;拿得起是能力,放得下是智慧。有的人拿不起,也就無所謂放下;有的人拿得起,卻放不下。拿不起,就會一事無成;放不下,就會疲憊不堪。人生外在的一切最終絲毫也帶不走,晚放下不如早放下。放下無謂的負擔,才能一路自在。' } });
2.在css文件中使用text-overflow: ellipsis
設置行尾顯示尾省略號:測試
white-space: nowrap; /* 不換行 */ overflow: hidden; /* 超出隱藏 */ text-overflow: ellipsis; /* 超出部分顯示省略號 */
多行文本溢出
5 行如下的內容全顯示
1.在js文件中,輸入文本內容:flex
Page({ data: { content:'人要拿得起,也要放得下。拿得起是生存,放得下是生活;拿得起是能力,放得下是智慧。有的人拿不起,也就無所謂放下;有的人拿得起,卻放不下。拿不起,就會一事無成;放不下,就會疲憊不堪。人生外在的一切最終絲毫也帶不走,晚放下不如早放下。放下無謂的負擔,才能一路自在。' } });
2.在css文件中使用text-overflow: ellipsis
設置行尾顯示尾省略號,多行文本溢出:
display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; /* 指定顯示文本的行數 */ overflow: hidden; /* 超出隱藏 */
5行以上(含5行)只顯示5行,超出部分省略號展現
1.在js文件中,輸入文本內容:
Page({ data: { content:'人要拿得起,也要放得下。拿得起是生存,放得下是生活;拿得起是能力,放得下是智慧。有的人拿不起,也就無所謂放下;有的人拿得起,卻放不下。拿不起,就會一事無成;放不下,就會疲憊不堪。人生外在的一切最終絲毫也帶不走,晚放下不如早放下。放下無謂的負擔,才能一路自在。' } });
2.在css文件中使用text-overflow: ellipsis
設置行尾顯示尾省略號,多行文本溢出:
display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; /* 指定顯示文本的行數 */ overflow: hidden; /* 超出隱藏 */ text-overflow: ellipsis; /* 超出部分顯示省略號 */
5行以上顯示展開按鈕
點擊展開, 顯示所有內容以及收起按鈕;點擊收起,摺疊內容並顯示展開按鈕,更多詳細內容可在工具中導入代碼片斷查看:swanide://fragment/598981d541fda485a1715266effc213a1590053197948 。
1.在swan文件中輸入文本內容,並設置按鈕:
<view class="container"> <view class="title"> <text class="title_txt">hello,我是測試demo</text> </view> <view class="content {{isShow ? 'on' : ''}}"> 悠悠竹林,萬頃翠色,幾多清幽和寧靜,天然沒有城市的喧囂和雜亂。如有雨徐徐飄落,在綠綠的枝葉上騰起嫋嫋輕煙,如霧,如雲,更似一幅水墨丹青,流芳沁馨,不知泊了誰的夢懷。更醉人的是那動聽的雨聲,疏疏落落,瀟然成音成曲。此時,雨爲纖指竹爲弦,清風流韻,細彈心語,聽雨的人,即是知音。 </view> <block s-if="{{lineNum > 4}}"> <view class="btn" bindtap="open">{{isShow ? '收起' : '展開'}}</view> </block> </view>
2.在css文件中設置文本顯示行數:
.title { display: flex; flex-direction: row; justify-content: center; align-items: center; padding: 25rpx; } .title_txt { font-size: 34rpx; color: #2b2b2b; } .content { text-indent: 2em; height: auto; overflow: hidden; /* 超出隱藏 */ text-overflow: ellipsis; /* 超出部分顯示省略號 */ display: -webkit-box; -webkit-line-clamp: 5; /* 指定顯示文本的行數 */ -webkit-box-orient: vertical; line-height: 30px; /* 規定的行高 */ padding: 0 25rpx; font-size: 30rpx; color: #888; } .content.on { display: block; text-overflow: clip; overflow: visible; } .btn { text-align: center; color: #333; }
3.在 js文件中設置默認收起狀態:
/** * 默認收起狀態,isShow做爲控制顯隱的開關 * 點擊按鈕isShow的狀態值取反便可。 * 獲取行數的計算方式: * 行數 = 內容高度/ 行高 */ Page({ data: { isShow: false, lineNum: 5 }, open() { this.setData({ isShow: !this.data.isShow }); }, onShow() { const query = swan.createSelectorQuery(); query.select('.content').boundingClientRect(); query.exec(res => { const LineHeight = 30; // 行高 const LineNum = res[0].height / LineHeight; // 行數 if (LineNum < 5) { this.setData({ lineNum: LineNum }); } }); } });
總結
詳細內容可在<a href="swanide://fragment/628771f84d491c7eb1a38154a3d577ba1584942330228" title="開發者工具預覽效果" target="_self">開發者工具預覽效果</a>中查看。關於樣式顯示的更多小技巧,也歡迎你們在評論區多多交流呀~