转 溢出隐藏

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

  1. overflow: hidden;
  2. text-overflow: ellipsis;
  3. 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;,可以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本 。
  1. overflow : hidden;
  2. text-overflow: ellipsis;
  3. display: -webkit-box;
  4. -webkit-line-clamp: 2;
  5. -webkit-box-orient: vertical;

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

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

跨浏览器兼容的方案

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

例如:

  1. p {
  2. position:relative;
  3. line-height:1.4em;
  4. /* 3 times the line-height to show 3 lines */
  5. height:4.2em;
  6. overflow:hidden;
  7. }
  8. p::after {
  9. content:"...";
  10. font-weight:bold;
  11. position:absolute;
  12. bottom:0;
  13. right:0;
  14. padding:0 20px 1px 45px;
  15. background:url(http://css88.b0.upaiyun.com/css88/2014/09/ellipsis_bg.png) repeat-y;
  16. }

看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});

DEMO:

2.jQuery插件-jQuery.dotdotdot

这个使用起来也很方便:

    1. $(document).ready(function() {
    2. $("#wrapper").dotdotdot({
    3. // configuration goes here
    4. });
    5. });
时间: 2024-08-01 06:46:10

转 溢出隐藏的相关文章

(有趣)chrome不同浏览器版本对display:flex和溢出隐藏显示省略符号的bug

项目中碰到一个十分有趣的情形: 布局要求是这样:右边创建新订单是固定宽度80px,左侧是自适应宽度,溢出隐藏.如下图. 这里布局不用说肯定使用display:flex的.左侧flex:1;右侧width:80px:. 本来在我的机器上是各种ok的,可是交给后端的兄弟们后发现在他的机器上左侧并没有flex:1; 总是以一个固定的宽度杵在那里,破坏掉布局,后来一查看,原来是后端的chrome是最新版本, 而我的这台机器是旧版本,两个版本的chrome对display:flex的解析竟然不一样. 解决

文字溢出隐藏,隐藏的问字用省略号表示

之前在写页面的时候用的都是单行文字溢出隐藏,今天遇到了多行文字溢出隐藏,溢出部分用省略号.我通过查阅一些资料整理了一下,拿出来与大家分享一下. 单行文本的溢出隐藏 对于单行文本溢出 隐藏,text-overflow: ellipsis 就能完美的解决,不过在使用他时,一定要结合  overflow: hidden和   white-space: nowrap;,我有时就忘记写了,导致效果出不来,还让我找了半天. 1 <!DOCTYPE html> 2 <html> 3 <he

css文本溢出隐藏显示省略号(单行+多行)

文本超出若干行就换行,这个功能几乎每个文本浏览网站都会用到,实现它的办法也有很多,今天简单的介绍一下实现它的方法.  一. 单行文本不换行,并将超出文本隐藏 .box-content{     overflow: hidden;//文本溢出隐藏     text-overflow: ellipsis;//文本溢出显示省略号     white-space: nowarp;//不换行 } 二. 在Webkit内核的浏览器中实现多行文本隐藏并显示省略号 在webkit内核中,可以利用-webkit-

移动端横向溢出隐藏解决方法

今天制作网站自适应中,遇到一个问题:如果使用定位居中法, 在电脑端设置溢出隐藏起作用, 而在移动端中,右边溢出却可以向右滑动. 具体代码如下: body { overflow-x:hidden; } .box { position:absolute; left:50%; width:500px; height:200px; background:red; margin-left:-250px; text-align:center; } 右边溢出部分在移动端设备中,可向右滑动.查找了相关资料,最后

解决一行文本溢出隐藏点击展开之后全部显示并自动换行

var ele=[$("#customize p"),$("#uploadques p"),$("#memberques p")]; var i=0; (function() { ele[i].click( function () { console.log(this); console.log($(this).height()); if ($(this).height() === 20) { $(this).find("i"

css talbe中td溢出隐藏 div溢出隐藏

td溢出隐藏 1 table{ 2 width:100px; 3 table-layout:fixed;/* 只有定义了表格的布局算法为fixed,下面td的定义才能起作用. */ 4 } 5 td{ 6 width:100%; 7 word-break:keep-all;/* 不换行 */ 8 white-space:nowrap;/* 不换行 */ 9 overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */ 10 text-overflow:ellipsis;/* 当对

文本溢出隐藏

/* 多行溢出隐藏 */ div{ width: 150px;(100%): height:100px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; 8 } /* 单行溢出隐藏 */ div{ width: 150px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } 原文

CSS多行溢出隐藏,webpack打包删除代码 -webkit-box-orient: vertical;

文本多行溢出隐藏显示省略号,本地显示正常,打包后线上代码丢失,-webkit-box-orient: vertical; /*! autoprefixer: off */ -webkit-box-orient:vertical; /*! autoprefixer: on */ 解决方式 1 :使用autoprefixer 跳过webpack的css打包. 解决方法 2 : 待补充 原文地址:https://www.cnblogs.com/lishengye/p/10990248.html

关于overflow:hidden的作用(溢出隐藏,清除浮动,解决外边塌陷等等)

1.overflow:hidden  溢出隐藏 给一个元素中设置overflow:hidden ,那么该元素的内容若超出了给定的宽度和高度属性,那么超出的部分将会被隐藏,不占位. 代码如下: 运行结果如下: 2. overflow:hidden 清除浮动 一般而言,父级元素不设置高度时,高度由随内容增加自适应高度.当父级元素内部的子元素全部都设置浮动float之后,子元素会脱离标准流,不占位,父级元素检测不到子元素的高度,父级元素高度为0.那么问题来了,如下: 运行结果如下: 如上,由于父级元素