内容溢出处理:隐藏显示省略号,鼠标悬停提示全部内容

1.div中内容显示在一行,并将溢出的文字省略显示,鼠标悬停提示全部内容

 <div 
    title="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 
    style="width:100px; 
           height:20px; 
           text-overflow:ellipsis; 
           white-space:nowrap; 
           overflow:hidden;"
>
     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 </div>

备注:

(1)div的文字会以省略的形式显示,并不是单独的截取。单独设定text-overflow:ellipsis;是没有效果的,因为它仅仅是注解,标注溢出时以省略的形式显示。所以必须要有white-space:nowrap,让文字显示子一行,又需要用overflow:hidden来使溢出的内容隐藏(配合使用)。

(2)给div加上title属性,并将所有内容作为title属性的值,鼠标放在div上可以显示所有内容(类似tooltip)

    text-overflow:clip|ellipsis,默认值:clip;适用于:所有元素

  • clip:当前对象内文本溢出时不显示省略标记(...),而是将溢出部分裁剪。
  • ellipsis:当对象内文本一处时显示省略标记(...)。

2.div中内容显示在3行(或n行可调),并将溢出的文字省略显示

 <div 
    style="width:100px; 
           height:20px; 
           text-overflow:ellipsis; 
           display: -webkit-box;
          /* 限制在一个块元素显示的文本的行数(第几行裁剪) */
           -webkit-line-clamp: 3;
          /* 设置或检索伸缩盒对象的子元素的排列方式 */
           -webkit-box-orient: vertical;
           overflow:hidden;"
>
     啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
 </div>

多行文本内容英语单词无法实现(如下):

备注:

-webkit-line-clamp 其实是一个不规范属性,使用了WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端;-webkit-line-clamp 用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他的WebKit属性。

  • display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
  • -webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。
  • text-overflow: ellipsis; ,可以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本 。

3.element-ui内容超出部分显示省略号,鼠标悬停显示tooltip

方法一:在Table中可使用官方提供的属性show-overflow-tooltip。 

API:Element - The world's most popular Vue UI framework

使用时哪一行需要显示省略号,就给对应el-table-column设置show-overflow-tooltip属性。

方法二:使用Tooltip文字提示将要省略显示的内容包裹起来,并做省略显示处理。

API:Element - The world's most popular Vue UI framework

<el-tooltip class="item" effect="dark" content="这里写提示文字" placement="top-start">
      <el-button>显示内容</el-button>
</el-tooltip>

 tooltip默认是把折叠的内容显示为一行(除非特别特别长),那么当table中的文字非常的多时视觉体验就会较差。我们可以对tooltip进行样式修改(根据宽度自动换行):

<style>
.el-tooltip__popper {
  max-width: 60px;
}
</style>

注:

tips的class名为.el-tooltip__popper,写css样式时需要注意,如果在样式里面写scoped会造成原本的.el-tooltip__popper样式无效,但是去掉scoped又有可能影响到其他页面的样式,所以在当前组件再写一个<style></style>样式。

4.element-ui内容超出部分显示省略号,鼠标悬停显示popover弹出框

前面的方法有一个很大的弊端,即鼠标悬停显示的数据无法复制。使用Popover 弹出框组件,不仅在鼠标指向内容时,在悬浮框中将所有内容显示出来,鼠标还可以到悬浮框复制自己想要的内容。

API:Element - The world's most popular Vue UI framework

<!-- <el-table-column label="DeviceId" prop="deviceId" :show-overflow-tooltip='true'></el-table-column> -->
<el-table-column label="deviceId" prop="deviceId">
    <template slot-scope='scope'>
        <el-popover
            placement="top-start"
			width="400"
			trigger="hover">
			<span>{{scope.row.deviceId}}</span>
			<span slot="reference">{{scope.row.deviceId.substr(1,20) + '...'}}</span>
		</el-popover>
	</template>
</el-table-column>

 5.ant-design内容超出部分显示省略号,鼠标悬停显示

和elemnt-ui类似:

(1)在Table中可以设置 column.ellipsis 可以让单元格内容根据宽度自动省略:Ant Design Vue

(2)也可以使用tooltip包裹将要省略显示的内容:Ant Design Vue

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JS文本超出部分用省略号替代的需求经常在网页设计中出现。这样做可以有效地减少页面上冗长的文本显示,并给用户一个快速浏览的体验。一种常见的解决方案是使用CSS的文本溢出属性,结合JavaScript的悬停事件来实现。 首先,在CSS中定义文本溢出样式。使用`text-overflow:ellipsis;`属性可以让超出部分的文本显示省略号,同,设置`white-space: nowrap;`属性可以防止文本换行。 接下来,在HTML中声明需要添加省略号的文本元素,并添加一个自定义的class名称,例如`ellipsis-text`。 然后,在JavaScript中编写相关的处理逻辑。首先,获取所有带有class名称为`ellipsis-text`的元素。然后,对每个元素绑定悬停事件,当鼠标悬停在文本上,将元素的`title`属性设置为元素的全部文本内容,以显示完整的文本。当鼠标离开,将`title`属性重置为空,以显示省略号。 下面是一个简单的实现示例: HTML部分: ```html <div class="ellipsis-text">这是一个超出部分用省略号替代的示例文本。</div> ``` CSS部分: ```css .ellipsis-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } ``` JavaScript部分: ```javascript var elements = document.getElementsByClassName('ellipsis-text'); Array.prototype.forEach.call(elements, function(element) { element.addEventListener('mouseover', function() { element.title = element.innerText; }); element.addEventListener('mouseout', function() { element.title = ''; }); }); ``` 通过以上步骤,当鼠标悬停在文本上,会显示全部的文本内容鼠标离开,文本又会被替换为省略号,从而实现了需求的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值