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. Oracle 中的进制转换

    Oracle 中的进制转换 */--> Oracle 中的进制转换 Table of Contents 1. 进制名 2. 10进制与16进制互相转换 2.1. 10进制转换为16进制 2.2. ...

  2. 004-Spring boot 快速入门-项目搭建与启动、SpringBootApplication、启动图标

    一.官方地址 Spring:http://spring.io/ Spring Project:http://spring.io/projects Spring boot:https://project ...

  3. kubernetes架构(2)

    一.Kubernetes 架构: Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. Master 节点 Master 是 Ku ...

  4. nginx出现403 Forbidden解决方法

    由于开发需要,在本地环境中配置了LNMP环境,使用的是Centos 7.4 的源码安装,安装一切正常,但是由于默认网站文件夹比较奇葩,于是把网站文件用mv命令移动到了新的目录,并相应修改了配置文件,并 ...

  5. 阿里云Centos7挂载数据盘

    查看磁盘情况 fdisk -l fdisk /dev/vdb 根据提示,分别输入 n. p. . enter.enter.wq fdisk -l mkfs.ext3 /dev/vdb1 挂载磁盘,写入 ...

  6. Linux学习—redis安装配置及远程连接

    1.下载安装包并解压 进入文件夹/usr/local cd /usr/local 下载redis安装包: wget http://download.redis.io/releases/redis-.t ...

  7. 接口测试 dubbo 接口测试

    dubbo是阿里巴巴开源的一套rpc方案,以为理念很契合微服务,这几年很火,用户里面不凡京东,当当,去哪儿等大公司.rpc场景   dubbo架构   官网也提供了一个很简单实用的demo来演示dub ...

  8. 加入域之后,【Internet 时间】选项没有了

    这是加入域之前的截图,这时可以看见[Internet 时间]选项. 这是加入域之后的截图,这时就看不到[Internet 时间]选项了. 那这到底是为什么呢?别急,结合概念一看就明白啦. NTP全称网 ...

  9. Element ui 2.8版本中的table树不能默认全展开解决方法

    方案一:这个方案有问题 <el-table ref="tableTreeRef" :data="tableDate" ...... </el-tab ...

  10. boostrap table接收到后台返回的数据格式不一致的解决方法

    后台使用的分页插件是mybatis的PageHelper,返回数据格式如下: 而bootstrap table插件需要服务端返回的数据格式中含有"total"和"rows ...