vue实现文字超出3行时,后面显示省略号和更多

<template>
<ul>
    <li v-for=(item,index) in schoolselegantList :key="index">
       <div class="dp-text-ellipsis-wrapper">
           <div class="text" :style="textStyleObject" ref="text">
               <label class="btn" @click="gotoIntro">更多</label>
               {{item.title}}
           </div>
        </div>   
    </li>
</ul>
</template>
<script>
export default {
 return {
      lineClamp: 3,
schoolselegantList: [
        {
          imageurl: '../../../../public/top/image/group_icon.png',
          schoolNmae: '深圳高级中学',
          children: [
            {
              num: 20,
              name1: '直播'
            }, {
              num: 20,
              name1: '专题课程'
            }, {
              num: 20,
              name1: '微课'
            }, {
              num: 20,
              name1: '文档'
            }
          ],
          title: '在钱塘开茶铺的赵盼儿(刘亦菲 饰)惊闻未婚夫、新科探花欧阳旭(徐海乔 饰)要另娶当朝高官之女,不甘命运的她誓要上京讨个公道。在途中她遇到了出自权门但生性正直的皇城司指挥顾千帆(陈晓 饰),并卷入江南一场大案,两人不打不相识从而结缘。赵盼儿凭借智慧解救了被骗婚而惨遭虐待的“江南第一琵琶高手”宋引章(林允 饰)与被苛刻家人逼得离家出走的豪爽厨娘孙三娘(柳岩 饰),三位姐妹从此结伴同行,终抵汴京,见识世间繁华。'
        }
      ],
    },
     computed: {
        textStyleObject () {
          return {
            'max-height': `${2 * this.lineClamp}em `
        }
    }
    }  
}
</script>
<style>
.dp-text-ellipsis-wrapper {
	display: flex;
	margin: 6px 0 20px 0;
	overflow: hidden;
	font-size: 14px;
	line-height: 20px;
}
.text {
	position: relative;
	overflow: hidden;
	line-height: 2.1;
	line-height: 30px;
	text-align: justify;
	text-overflow: ellipsis;
	word-break: break-all;
  }
  .text::before {
	float: right;
	height: calc(100% - 20px);
	content: '';
  }
  .btn {
	position: relative;
	float: right;
	clear: both;
	margin-left: 10px;
	font-size: 14px;
	padding: 0 8px;
	color: #206ef7;
	line-height: 20px;
	border-radius: 4px;
	cursor: pointer;
	z-index: 10;
  }

  .btn::before {
	position: absolute;
	left: 1px;
	color: #333;
	transform: translateX(-100%);
	content: '...';
  }
</style>

实现效果如下

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vue实现文本超出字数显示省略号,可以使用 CSS 的 `text-overflow: ellipsis` 属性。具体步骤如下: 1. 在 CSS 中设置需要显示省略号的元素的样式: ```css .text-ellipsis { white-space: nowrap; /* 不换 */ overflow: hidden; /* 超出部分隐藏 */ text-overflow: ellipsis; /* 显示省略号 */ } ``` 2. 在 Vue 模板中使用 `v-bind:class` 绑定样式类,并设置 `title` 属性为完整文本: ```html <p v-bind:class="{ 'text-ellipsis': isOverflow }" title="完整文本">{{ text }}</p> ``` 其中,`isOverflow` 是一个计算属性,用于判断文本是否超出,`text` 是需要显示的文本。 3. 在计算属性中计算文本是否超出: ```javascript computed: { isOverflow() { const el = this.$el.querySelector('.text-ellipsis'); return el ? el.offsetWidth < el.scrollWidth : false; } } ``` 使用 `querySelector` 获取元素,然后判断元素的实际宽度是否大于容器的宽度,如果大于就返回 `true`,否则返回 `false`。如果获取不到元素,就返回 `false`。 完整代码示例: ```html <template> <div> <p v-bind:class="{ 'text-ellipsis': isOverflow }" title="完整文本">{{ text }}</p> </div> </template> <script> export default { data() { return { text: '这是一段很长很长很长的文本,超过了容器宽度' }; }, computed: { isOverflow() { const el = this.$el.querySelector('.text-ellipsis'); return el ? el.offsetWidth < el.scrollWidth : false; } } }; </script> <style> .text-ellipsis { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100px; border: 1px solid #ccc; } </style> ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值