uniapp的描述的展开与收缩,超过三行有省略号才显示

html代码:

<view class="desc_box">
    <view id="desc" class="desc" :class="open ? 'open' : 'three'">
        {{ data.desc }}
    </view>
    <view class="expand theme-color" @click="unfold" v-if="unfoldShow">
        {{ open ? '收起' : '展开' }}
        <i class="iconfont icon-xiala" :class="open ? 'up' : ''"></i>
    </view>
</view>

js代码:

data的部分:

// 是否打开
open: true,
// 是否展开
unfoldShow: false

methods的部分:

/**
 * 展开收起
 */
unfold() {
    this.open = !this.open;
},
/**
 * 判断是否超过三行
 */
checkTextLines() {
    // 获取 <div> 标签的节点信息
    let query = uni.createSelectorQuery().in(this);
    query.select('.desc_box').boundingClientRect(data => {
        // 获取文本内容的高度
        let height = data.height - 70;
        console.log("data", data);
        console.log("height", height);
        // 行高为28px
        let lineHeight = 28;
        // 计算文本行数
        let lines = Math.ceil(height / lineHeight);
        // 判断文本行数是否达到了3行
        if (lines > 3) {
            console.log("文本达到了3行以上");
            this.unfoldShow = true;
            this.open = false;
        } else {
            console.log("文本3行或3行以下");
            this.unfoldShow = false;
            this.open = true;
        }
    }).exec();
}

在获取完数据的地方调用this.checkTextLines();

css部分:

.desc_box {
		width: 686rpx;
		background: linear-gradient(180deg, rgba(255,255,255,0.42) 0%, rgba(255,255,255,0.51) 100%);
		box-shadow: inset 0rpx 2rpx 6rpx 0rpx rgba(255,255,255,0.5), inset 0rpx -2rpx 6rpx 0rpx rgba(255,255,255,0.5);
		border-radius: 8rpx;
		backdrop-filter: blur(12px);
		margin-top: 24rpx;
		padding: 24rpx 20rpx;
		box-sizing: border-box;
		display: flex;
		flex-direction: column;
		align-items: flex-end;

    .desc {
        width: 100%;
        margin-top: 16rpx;
        color: #666666;
        line-height: 40rpx;
        white-space: pre-line;
    }

    .expand {
        display: flex;
        font-size: 24rpx;
        height: 34rpx;
        line-height: 34rpx;

        i {
            font-size: 24rpx;
            margin-left: 4rpx;
        }

        .up {
            transform: rotate(180deg);
        }
    }
}


.one {
	white-space:nowrap;
	overflow:hidden;
	text-overflow:ellipsis;
}

.two {
	overflow:hidden;
	text-overflow:ellipsis;
	display:-webkit-box;
	-webkit-box-orient:vertical;
	-webkit-line-clamp:2; 
}

.three{
	overflow:hidden;
	text-overflow:ellipsis;
	display:-webkit-box;
	-webkit-box-orient:vertical;
	-webkit-line-clamp:3; 
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值