文字溢位時,如何顯示為省略號

百度小程式技術發表於2020-06-16
本文作者:無雙,GitHub連結:https://github.com/wushuangzh...

更多內容檢視開發者社群/更多招聘資訊

本文介紹在百度智慧小程式開發中,如何將溢位的文字顯示為省略號。歡迎開發者分享您在開發智慧小程式中的經驗心得,我們會通過智慧小程式技術團隊的社群渠道把你的經驗分享給更多開發者朋友,投稿地址:smartprogramtech@baidu.com。

目前在移動端開發的展示介面中,如果一段文字的數量過長,受限於螢幕的寬高等因素,有可能不能完全顯示,為了提高使用者的使用體驗,這個時候就需要我們把溢位的文字顯示成省略號。

接下來我們來看一下對於下面這一段文字內容,我們可以如何實現行文字溢位的樣式吧:

  1. 單行文字溢位
  2. 多行文字溢位:5行以下的內容全顯示;5行以上(含5行)只顯示5行,超出部分省略號展示;5行以上顯示展開按鈕。點選展開, 顯示全部內容以及收起按鈕;點選收起,摺疊內容並顯示展開按鈕。
悠悠竹林,萬頃翠色,幾多清幽和寧靜,自然沒有城市的喧囂和雜亂。若有雨徐徐飄落,在綠綠的枝葉上騰起嫋嫋輕煙,如霧,如雲,更似一幅水墨丹青,流芳沁馨,不知泊了誰的夢懷。更醉人的是那動聽的雨聲,疏疏落落,瀟然成音成曲。此時,雨為纖指竹為弦,清風流韻,細彈心語,聽雨的人,便是知音。

單行文字溢位

1.在js檔案中,輸入文字內容:

    Page({
        data: {
            content:'人要拿得起,也要放得下。拿得起是生存,放得下是生活;拿得起是能力,放得下是智慧。有的人拿不起,也就無所謂放下;有的人拿得起,卻放不下。拿不起,就會一事無成;放不下,就會疲憊不堪。人生外在的一切最終絲毫也帶不走,晚放下不如早放下。放下無謂的負擔,才能一路自在。'
        }
    });

2.在css檔案中使用text-overflow: ellipsis設定行尾顯示尾省略號:

    white-space: nowrap; /* 不換行 */
    overflow: hidden; /* 超出隱藏 */
    text-overflow: ellipsis; /* 超出部分顯示省略號 */

圖片

多行文字溢位

5 行以下的內容全顯示

1.在js檔案中,輸入文字內容:

    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
                });
            }
        });
    }
});

圖片

總結

詳細內容可在開發者工具預覽效果中檢視。關於樣式顯示的更多小技巧,也歡迎大家在評論區多多交流呀~

最後,感謝各位開發者積極投身百度小程式的開發當中,在開發過程中有任何問題都可以在社群與官方或其他開發者進行互動,也可將您的意見傳送郵件至smartprogramtech@baidu.com,期待您的參與!

相關文章