当前位置: 首页 > news >正文

多行文本溢出显示省略号(…)全攻略

http://www.css88.com/archives/5206

 

大家应该都知道用text-overflow:ellipsis属性来实现单行文本的溢出显示省略号(…)。当然部分浏览器还需要加宽度width属性。

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

 

但是这个属性并不支持多行文本溢出显示省略号,这里根据应用场景介绍几个方法来实现这样的效果。

WebKit浏览器或移动端的页面

在WebKit浏览器或移动端(绝大部分是WebKit内核的浏览器)的页面实现比较简单,可以直接使用WebKit的CSS扩展属性(WebKit是私有属性)-webkit-line-clamp ;注意:这是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。

-webkit-line-clamp用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他的WebKit属性。
常见结合属性:

  1. display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
  2. -webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。
  3. text-overflow: ellipsis;,可以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本 。
overflow : hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;

 

这个属性比较合适WebKit浏览器或移动端(绝大部分是WebKit内核的)浏览器。

具体例子可以查看http://www.css88.com/webkit/-webkit-line-clamp/

跨浏览器兼容的方案

比较靠谱简单的做法就是设置相对定位的容器高度,用包含省略号(…)的元素模拟实现;

例如:

p {
position:relative;
line-height:1.4em;
/* 3 times the line-height to show 3 lines */
height:4.2em;
overflow:hidden;
}
p::after {
content:"...";
font-weight:bold;
position:absolute;
bottom:0;
right:0;
padding:0 20px 1px 45px;
background:url(http://css88.b0.upaiyun.com/css88/2014/09/ellipsis_bg.png) repeat-y;
}

 

看demo:
这里注意几点:

  1. height高度真好是line-height的3倍;
  2. 结束的省略好用了半透明的png做了减淡的效果,或者设置背景颜色;
  3. IE6-7不显示content内容,所以要兼容IE6-7可以是在内容中加入一个标签,比如用<span class="line-clamp">...</span>去模拟;
  4. 要支持IE8,需要将::after替换成:after

JavaScript 方案

用js也可以根据上面的思路去模拟,实现也很简单,推荐几个做类似工作的成熟小工具:

1.Clamp.js

下载及文档地址:https://github.com/josephschmitt/Clamp.js
使用也非常简单:

  1. var module = document.getElementById("clamp-this-module");
  2. $clamp(module, {clamp: 3});

 

2.jQuery插件-jQuery.dotdotdot

这个使用起来也很方便:

    1. $(document).ready(function() {
    2. $("#wrapper").dotdotdot({
    3. // configuration goes here
    4. });
    5. });

转载于:https://www.cnblogs.com/wanliyuan/p/4514647.html

相关文章:

  • MySQL 最基本的SQL语法/语句
  • 微软职位内部推荐-Senior Software Engineer_Azure
  • 使用 layoutopt 进行布局优化
  • 神经
  • REST,http,服务器开发
  • [WebKit] JavaScriptCore解析--基础篇 (一)JSC与WebCore
  • testbench的文件读写
  • JavaScript获取table中某一列的值的方法
  • 设计模式C++实现(14)——职责链模式
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • Ubuntu 14.04.02 安装深度音乐影音
  • vim中文帮助文档安装
  • 【oracle服务】
  • java操作protobuf
  • 搭建windows server 2008 r2 FTP 后 开启防火墙无法访问的解决办法
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • [译]CSS 居中(Center)方法大合集
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 0基础学习移动端适配
  • github从入门到放弃(1)
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • SQLServer之创建数据库快照
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 从重复到重用
  • 分布式任务队列Celery
  • 浮现式设计
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 浏览器缓存机制分析
  • 模型微调
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 详解移动APP与web APP的区别
  • ​MySQL主从复制一致性检测
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #大学#套接字
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (1)(1.13) SiK无线电高级配置(五)
  • (175)FPGA门控时钟技术
  • (NSDate) 时间 (time )比较
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (windows2012共享文件夹和防火墙设置
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (算法二)滑动窗口
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • /deep/和 >>>以及 ::v-deep 三者的区别