js实现表格中最多显示两行,超出使用省略号

1.PC端

 //HTML:
 {
                        field: 'Description', align: 'left', title: '描述', width: 239, templet: function (d) {
                            return '<span class="description">' + d.Description + '</span>'
                        }
                    }
             // 标题两行超出部分加省略号start
            var description = $('.description');
            var defaultTip = $('.defaultTip');
            twoLineDisplay(description);

//js:
            // 最多显示两行,超出显示...
       	 function twoLineDisplay(elems) {
            var titleObj = elems;
            for (var i = 0, len = titleObj.length; i < len; i++) {
                var arrTitle = titleObj[i].innerHTML.split('');

                var flag = false;
                while (titleObj[i].scrollHeight > titleObj[i].offsetHeight) {
                    titleObj[i].innerHTML = arrTitle.join('');
                    arrTitle.pop();
                    flag = true;
                }

                if (flag) {
                    arrTitle.pop();
                    arrTitle.pop();
                    titleObj[i].innerHTML = arrTitle.join('');
                    titleObj[i].innerHTML += '...';
                }
            }
        }
//css
.defaultTip,.description{
    white-space:pre-wrap ;
    display: block;
    text-overflow: ellipsis;
    overflow: hidden;
    width: 100%;
    max-height: 42px;
    line-height: 21px;
    word-break: break-all;
    word-wrap: break-word;
}

上面的代码会因为不同符号或者函数在编码中占据不同的字节,使得省略号不能靠近右侧边缘。
修改:

		// 最多显示两行,超出显示...
        function twoLineDisplay(elems) {
            var titleObj = elems;
            for (var i = 0, len = titleObj.length; i < len; i++) {
            	//titleObj[i]为某个单元格DOM元素
                var arrTitle = titleObj[i].innerHTML.split('');

                var flag = false;
                while (titleObj[i].scrollHeight > titleObj[i].offsetHeight) { 
                    if (!flag) {
                        arrTitle.splice(arrTitle.join('').length, 0, '.', '.', '.')
                        flag = true;
                    } else {
                        arrTitle.splice(arrTitle.join('').length - 1 - 3, 1);
                        titleObj[i].innerHTML = arrTitle.join('')
                    }

                }
            }
        }

样式的设置:

.layui-form td{
    &:nth-child(1){
        .layui-table-cell{
            max-height: 56px;
        }
        .layui-table-cell, .layui-table-tool-panel li {
            overflow: visible;
            text-overflow: clip;
            white-space: normal;
            height: auto;
            word-wrap: break-word;
            word-break: break-all;
        }
    }
}

2.移动端

在移动端最多展示两行:

.text-line-comm {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  /* 可以把 块容器 中的内容限制为指定的行数2. */
  -webkit-line-clamp: 2;
  /* 从顶部向底部垂直布置子元素 */
  -webkit-box-orient: vertical;
}

在css中会过滤掉-webkit-box-orient: vertical;解决方案:可以设置内联样式来添加:

<p class="book-summary text-line-comm gray" :style="{'webkitBoxOrient': 'vertical'}">{{ book.shortIntro }}</p>

float浮动跟position:absolute区别:
float浮动跟position:absolute一样拥有脱离文档流的功能,
但是float虽然脱离了文档流但是仍然会占据位置,其他的文本会按照顺序继续排列

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值