1,首先来一个固定宽度,在一行显示,超出隐藏,显示省略号的样式

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

2,其实来一个可以设置让它显示多少行后再显示省略号,这只能用私有属性解决了

text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;/*重点,不能用block等其他*/
-webkit-line-clamp: 2;/*重点IE和火狐不支持*/
-webkit-box-orient: vertical;/*重点*/

因为 -webkit-line-clamp: 2  是webkit的私有属性,其他浏览器不可以用。所以在网上找了一下,有个插件还是很好用的,完美的实现了这个属性。

还可以配置很多属性,比如 是否动画展开,不一定要显示省略号,可以显示其他符号,是否启用 -webkit-line-clamp:  这个属性等等;

下载地址 https://github.com/josephschmitt/Clamp.js

首先引入

<script src="../clamp.js"></script>

//调用方法:$clamp(dom,options); dom是节点,options是配置项

用这个插件需要注意一下事项:

我在用这个插件的时候,IE和火狐下面形态各异,火狐在第二行还没到第二行的末尾处(甚至还有很宽的距离)就显示省略号了。IE有时候也出现。

查看了一下源码发现 这个和指定不指定line-height有关系,因为源码中会获取line-height获取高度 来判断显示省略号的;

 function getLineHeight(elem) {//计算高度
var lh = computeStyle(elem, 'line-height');
if (lh == 'normal') {//如果DOM 节点没有指定line-height 那么IE会输出默认的normal 火狐会输出22px lh = parseInt(computeStyle(elem, 'font-size')) * 1.2;
}
return parseInt(lh);
}

如果没有指定行高,IE下面computeStyle(elem, 'line-height');就会返回 nomal。火狐下面就会根据浏览器返回[22px]

再接着看源码

if (supportsNativeClamp && opt.useNativeClamp) {//如果支持webkit-line-clamp 直接用
sty.overflow = 'hidden';
sty.textOverflow = 'ellipsis';
sty.webkitBoxOrient = 'vertical';
sty.display = '-webkit-box';
//sty.wordWrap = 'break-word';
sty.webkitLineClamp = clampValue; if (isCSSValue) {
sty.height = opt.clamp + 'px';
}
}
else {
var height = getMaxHeight(clampValue);
if (height <= element.clientHeight) {
clampedText = truncate(getLastChild(element), height);
}
}

如果用户在样式中指定了line-height,IE和火狐下面 就会 height == element.clientHeight(一直等于),则就一直会走

clampedText = truncate(getLastChild(element), height); 这段代码。所以需要把 height <= element.clientHeight  的= 号去掉。(具体没去研究,看源码truncate函数即可,下次补上)

没有指定的话 IE就会根据 font-size*12 = 16*1.2 = 19.2

火狐则是一直是22px ,这就有很大差异了。导致

<script>
var header = document.getElementsByTagName('h1')[0],
$clamp(header, {clamp: 2}); //还可以配置如下 选项 。options包括:clamp——行数,useNativeClamp——是否使用-webkit-line-clamp属性,trucationChar——省略的符号(不限于省略号),truncationHTML——省略的内容(不限于符号),animate——是否实现动画折叠。
</script>

还有一个插件 也不叫好用,不过这个插件好像只能设置固定的宽高,超出宽高才会隐藏,不过也多了一些配置(比如,+号折叠,展开。控制多少个字符显示灯)

  jQuery.dotdotdot

css强制换行显示省略号之显示两行后显示省略号的更多相关文章

  1. AngularJS 表单提交后显示验证信息与失焦后显示验证信息

    虽然说AngularJS的实时表单验证非常有用,非常高效方便,但是当用户还没有完成输入时便弹出一个错误提示,这种体验是非常糟糕的. 正常的表单验证逻辑应该是在用户提交表单后或完成当前字段中的输入后,再 ...

  2. css文本超出部分省略号&CSS强制换行总结

    word-break:break-all单词截断自动换行 word-break:break-all 例如div宽200px,它的内容就会到200px自动换行,如果该行末端有个英文单词很长(congra ...

  3. CSS 强制换行和禁止换行学习

    强制换行       1.word-break: break-all;       只对英文起作用,以字母作为换行依据.       2.word-wrap: break-word;   只对英文起作 ...

  4. css强制换行和超出隐藏实现

        一.强制换行1 word-break: break-all; 只对英文起作用,以字母作为换行依据. 2 word-wrap: break-word; 只对英文起作用,以单词作为换行依据. 3 ...

  5. CSS强制换行和禁止换行代码

    一.强制换行      1.word-break: break-all;       只对英文起作用,以字母作为换行依据.      2.word-wrap: break-word;   只对英文起作 ...

  6. css强制换行和超出部分隐藏实现

    一.强制换行 1 word-break: break-all; 只对英文起作用,以字母作为换行依据. 2 word-wrap: break-word; 只对英文起作用,以单词作为换行依据. 3 whi ...

  7. CSS 强制换行和禁止换行强制换行 和禁止换行样式

    强制换行 1.word-break: break-all;       只对英文起作用,以字母作为换行依据. 2.word-wrap: break-word;   只对英文起作用,以单词作为换行依据. ...

  8. CSS - 强制换行和禁止换行强制换行 和禁止换行样

    强制换行 word-break: break-all;       只对英文起作用,以字母作为换行依据. word-wrap: break-word;   只对英文起作用,以单词作为换行依据. whi ...

  9. 解决html表格中内容超出不强制换行和超出宽度自动隐藏并显示省略号

    在表格布局中经常会遇到因为表格内容长短的变化导致布局混乱的情况,这个时候我们可能会有为了布局稳定把单元格宽度写死的情况:但是我们设置了宽度却发现超出了宽度之后会自动变大,用css定义元素的overfl ...

随机推荐

  1. java 注解方式 写入数据到Excel文件中

    之前有写过一点关于java实现写Excel文件的方法,但是现在看来,那种方式用起来不是太舒服,还很麻烦.所以最近又参考其他,就写了一个新版,用起来不要太爽. 代码不需要解释,惯例直接贴下来: publ ...

  2. Google Protocol Buffers 快速入门(带生成C#源码的方法)

    Google Protocol Buffers是google出品的一个协议生成工具,特点就是跨平台,效率高,速度快,对我们自己的程序定义和使用私有协议很有帮助. Protocol Buffers入门: ...

  3. Mac运行React Native安卓项目报错解决

    传送门参考: 下面的这个链接很详细了,一步一步就好.... https://github.com/NARUTOyuyang/React-Native 然而在运行react-native run-and ...

  4. 【Linux】配置SSH免密登录

    环境说明 假设我们有三台机器分别为bigdata111,bigdata112,bigdata113,三台机器均为centos 7系统. 配置SSH免密登录 (1)利用Xshell的发送键输入到所有会话 ...

  5. mybatis 传递多个查询参数

    方法1:顺序传参法 public User selectUser(String name, int deptId); <select id="selectUser" resu ...

  6. Cocos2d-x_初探_第一次配置与HelloWorld

    此前多久,忘了,反正就是打通关泡泡龙以后.YY君向我推荐了这个(如题).一查资料,诶.还挺有意思的,那我就去下一个玩玩吧. 资料下载清单: 1.Android-ndk 2.Android-sdk 3. ...

  7. 《JAVA语言》课问题汇总

    一.阅读相应教材,或者使用互联网搜索引擎,弄清楚反码.补码跟原码这几个概念,然后编写示例程序,对正数.负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示 ...

  8. NumSharp的数组切片功能

    NumSharp的数组切片功能 原文地址:https://medium.com/scisharp/slicing-in-numsharp-e56c46826630 翻译初稿(英文水平有限,请多包涵): ...

  9. AD域环境取消密码复杂度和密码使用期限

    本地组策略功能中设置密码永不过期的时候发现功能置灰了,不能设置: 这是因为创建域后默认本地组策略功能会被转移到域组策略管理里面,所以我们可以去组策略管理器里去更改组策略,因为一般本地策略的优先级别最低 ...

  10. (模板)hdoj5977 Garden of Eden(点分治)

    题目链接:https://vjudge.net/problem/HDU-5977 题意:给一颗树,每个结点上有一个权值a[i],a[i]<=10,求有多少条路径满足这条路径上所有权值的结点都出现 ...