前端开发中关于文本溢出的处理

文本溢出是在网页中经常出现的情况,如果是要实现单行文本溢出用省略号代替的话,是非常容易实现的,代码如下:

overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap

示例:
这里写图片描述
但是,如果是要实现多行文本溢出时,溢出的文本用省略号代替呢?那也是非常简单的,代码如下(只有webkit内核才有作用):

overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;

移动端浏览器绝大部分是WebKit内核的,所以该方法适用于移动端。

  • text-overflow: ellipsis 以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本。
  • display: -webkit-box 将对象作为弹性伸缩盒子模型显示 。
  • -webkit-line-clamp 用来限制在一个块元素显示的文本的行数,这是一个不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。
  • -webkit-box-orient 设置或检索伸缩盒对象的子元素的排列方式 。

    示例:
    这里写图片描述
    同时,我们要注意的是,多行文本的溢出的处理方式的代码不能和white-space: nowrap;一起使用,否则省略号不会正常的显示出来。即下面这种代码是错误的

overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
white-space: nowrap;

错误示例:
这里写图片描述
除了用CSS的方式,我们也可以使用JS来实现文本溢出用省略号代替的功能,JS代码如下:

/**
 * 文本溢出用省略号代替
 * @param {string} num 允许的最大文字数目
 * @param {string} con 包含文字的元素节点Id
 */
function textHide(num, con) {
  var contain = document.getElementById(con);
  var maxSize = num;
  var txt = contain.innerHTML;
  if(txt.length > num) {
    txt = txt.substring(0,num-1)+"...";
    contain.innerHTML = txt;
  }else{
    console.log("error")
  }
}

用js去实现的话浏览器的兼容性也比较好,不存在浏览器的兼容性问题。
示例:
这里写图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值