评论 展开|收起

场景:展开收起

方案一:文本超出省略

方案:在div 中添加一个span 然后给div设置超出三行省略,这时候就可以获取到文本高度和div高度了

优点:很好的行数限制,低于某个行数全部显示;且对换行空格也有效

缺点:像评论列表这种内容不固定带标签,文字的,手机上会发现判断有误,需要进一步优化。后我想到一个折中办法是把判断字符串长度的判断也加上可以弥补一下

适用场景:纯文本

在这里插入图片描述

<template>
  <div class="text-box">
    <div :class="['txt', { 'over-hidden': !unfold }]" ref="textBox">
      <span ref="spanBox">{
  {content}}</span>
       <div v-if="ifOver" @click="unfold = !unfold" class="btn"
       		:class="[unfold ? 'btn-open' : 'btn-close']">{
  {unfold ? '收起' : '展开'}}</div>
    </div>
  </div>
</template>
<script>
export default {
     
  name: "text-box",
  data() {
     
    return {
     
      ifOver: false, // 文本是否超出三行,默认否
      unfold: false // 文本是否是展开状态 默认为收起
    };
  },
  props: {
     
    content: {
     
      type: String,
      default: ""
    }
  },
  mounted() {
     
    // 判断是否显示展开收起按钮
    this.ifOver = this.$refs.spanBox.offsetHeight > this.$refs.textBox.offsetHeight
  }
};
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值