You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS ng-repeat实现4行文本溢出省略后内联显示View More链接问题

实现方案

根因说明

你现在的问题核心是文本容器为独占一行的块级元素,后续链接元素自然会换行,同时原生多行省略的省略号是渲染在容器最右侧,没有预留链接的展示位置。调整方案如下:


1. 调整HTML嵌套结构

将View More链接放到文本容器内部,作为子元素存在:

<div class="comment-wrapper">
  <div class="comment1 aop-ellipssis four">
    {{item.description}}
    <span ng-if="c.isOverflown('comment1',$index)" ng-click="c.openLink(item.sys_id)" class="ag-link" >View More</span>
  </div>
</div>

2. 调整CSS样式

通过相对+绝对定位把链接固定在文本右下角,同时给文本预留出链接的展示宽度:

/* 外层容器继承你原来设置的固定宽度 */
.comment-wrapper {
  width: 你原本设置的文本固定宽度;
  position: relative;
}
.comment1.aop-ellipssis.four {
  position: relative;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.5; /* 建议固定行高方便计算高度 */
  /* 右侧预留链接宽度,避免文字被链接遮挡 */
  padding-right: 80px; 
  word-break: break-all;
}
/* View More链接样式 */
.ag-link {
  position: absolute;
  right: 0;
  bottom: 0;
  /* 背景色和页面背景保持一致,覆盖原生的省略号 */
  background: #fff; 
  padding-left: 4px;
  color: #1890ff;
  cursor: pointer;
}

如果页面背景不是纯色,可以用渐变遮罩优化展示效果:

.ag-link {
  background: linear-gradient(to left, #fff 70%, transparent);
  padding-left: 12px;
}

3. 可选:微调溢出判断逻辑

增加1px容错值,避免边界内容的判断误差:

function _isOverflown(elem,index){
    var element = angular.element('.'+elem)[index];
    return element.scrollHeight > element.clientHeight + 1;
}

兼容方案

如果需要兼容非webkit内核浏览器,可以替换为JS截断逻辑:判断溢出时,将文本截断到刚好4行的长度,手动拼接... View More字符串即可,也能实现完全一致的效果。


内容的提问来源于stack exchange,提问作者LeaF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:24:07