CSS文本溢出显示省略号

项目中经常有这种须要咱们对溢出文本进行"..."显示的操做,单行多行的状况都有(具体几行得看设计师心情了),这篇随笔是我我的对这种状况解决办法的概括,欢迎各路英雄指教。javascript

单行

语法css

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

示例html

文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号java

多行

1.直接用css属性设置(只有-webkit内核才有做用)git

语法github

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

移动端浏览器绝大部分是WebKit内核的,因此该方法适用于移动端;web

  • -webkit-line-clamp 用来限制在一个块元素显示的文本的行数,这是一个不规范的属性(unsupported WebKit property),它没有出如今 CSS 规范草案中。浏览器

  • display: -webkit-box 将对象做为弹性伸缩盒子模型显示 。markdown

  • -webkit-box-orient 设置或检索伸缩盒对象的子元素的排列方式 。ide

  • text-overflow: ellipsis 以用来多行文本的状况下,用省略号“…”隐藏超出范围的文本。

示例

文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略

 

2.利用伪类

语法

<div id="con"> <span id="txt">文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略</span> <span class="t"></span> </div> <style> #txt{ display: inline-block; height: 40px; width: 250px; line-height: 20px; overflow: hidden; font-size: 16px; } .t:after{ display: inline; content: "..."; font-size: 16px; } </style>

示例

文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略

3.利用绝对定位和padding;(跨浏览器解决方案)
看到上例是否是以为“哇,终于能够跨浏览器使用了”,但你这样想的时候有没有考虑过IE的感觉?IE6/7是没有伪类的,还不赶快跪下对IE叫声“大哥”,虽然IE6已经退出市场,可是IE7仍是须要兼容的,因此呢,我本身又想到了如下的办法,我这边测试了下感受还行。

上代码

<p id="con2">文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略<span class="t2">...</span> </p> <style> #con2{ position: relative; height: 40px; width: 250px; line-height: 20px; overflow: hidden; padding-right: 12px; } .t2{ position: absolute; right: 0; bottom: 0; } </style>

这个方法的原理是:首先在包含文字的元素里,嵌入一个<span>...</span>,而后包含文字的元素右侧留出...的位置(padding-right),最后利用绝对定位将...定位至右侧的padding-right区域
示例

文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略...

4.其余
利用js插件来实现该功能,这里有俩款插件推荐,这篇主要介绍的是css方法,因此它们使用方法就不废话了。

问题
感谢村长指出了第二种和第三种都没有考虑到内容不足俩行的状况,这种状况下,个人上面说到的第二种和第三种方法,“...”依旧会存在,并不会隐藏。暂时尚未想出利用css来实现不到俩行隐藏的办法,sorry。因此若是存在不到俩行的状况尽可能仍是不要用了吧,可使用js。这个就先放在这儿,何时想到办法再来修改

function mitulineHide(num,con){ var contain = document.getElementById(con); console.log(con); var maxSize = num; var txt = contain.innerHTML; if(txt.length>num){ console.log('1') txt = txt.substring(0,num-1)+"..." contain.innerHTML = txt; }else{ console.log("error") } };

该函数传入俩个参数:容许的最大文字数目包含文字的元素节点Id

若是以为本文不错的话,帮忙点击下面的推荐哦
>>>>点击阅读原文

若是以为本文不错的话,帮忙点击下面的推荐哦,文章未经说明,均为原创,转载请注明出处,谢谢!
相关文章
相关标签/搜索