截取长文本,显示省略号(多行)

其实也是前些日子做移动端的页面接到这么个需求,本来以为这没法实现,同事跟

我说-webkit-line-clamp属性可以,就去查了查,果然

Pc端基本不会有这种需求,因为这个方法兼容性太差,浏览器份额不是webkit

占大头(特别是天朝),看前缀就知道只支持webkit内核,他属于webkit内部属性,

和-webkit-text-size-adjust:none(这个Pc端已经不在支持,移动端还可以使用)

类似,但是移动端不一样,现在移动端基本是ios和Android的天下,这个属性还是

很有用的,只需针对WP和Firefox os加上一个max-height 就能防止文本溢出,

但不会出现省略号,如果不需要支持上述两个max-height都不需要。

说这么多还是来个栗子http://jsbin.com/vefeb/1/

<p>我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行我要实现多行文本换行</p>
p {
    overflow : hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

-webkit-line-clamp需配上overflow : hidden  text-overflow: ellipsis和伸缩合

模型当中的两个属性display: -webkit-box  -webkit-box-orient: vertical;

如果你是三行溢出显示省略号,那-webkit-line-clamp: 3 依次类推,四行就是

4、五行就是5。。。

当然你要所有浏览器实现都表现一致,那还得依赖js,利用高度的比较加上正则的

替换来实现,实例链接http://jsbin.com/vefeb/4/

$(".text").each(function(i){
    var divH = $(this).height(),
     $p = $("p", $(this)).eq(0);
    while ($p.outerHeight() > divH) {
        $p.text($p.text().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."));
    };
});
时间: 2024-10-19 15:46:12

截取长文本,显示省略号(多行)的相关文章

css 溢出文本显示省略号

这个标题其实已经是一个老生常谈的问题了.很多时候,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没有这么宽,这时候最正常的做法就是 让超出宽度的部分文字用省略号(…)来表示.通常做法是网站后台程序截取一定的字符然后输出到前台显示或者前台用javascript截取一定的字符,但 是通过控制字数来截取的话还是存在一个大问题的,因为中文和英文的字符宽度问题,这个字数不好控制,而且通用性较差.那么有没有更好的方法呢,比如直接用 CSS来解决的,当然是有的. text-overflow是一个

css text-overflow溢出文本显示省略号

<div style="width: 100px; overflow: hidden; text-overflow:ellipsis"> <nobr>当对象内文本溢出时显示省略标记</nobr></div> 语法: text-overflow : clip | ellipsis 参数: clip : 不显示省略标记(...),而是简单的裁切 (clip这个参数是不常用的!) ellipsis : 当对象内文本溢出时显示省略标记(...)

css截断长文本显示

截断长文本显示处理,以前是通过后台的截取,但这种方法容易丢失数据,不利于SEO. 而通过前端css的截断,则灵活多变,可统一运用与整个网站. 这项技术主要运用了text-overflow属性,这个虽是css3的属性,但是在各大浏览器却兼容 非常好,ie6系列全部兼容. .e{ display:inline-block;width: 40px;white-space: nowrap;text-overflow: ellipsis;overflow: hidden; } .e:hover{ curs

新公司入职第一天遇到的 关于 CSS 单行溢出文本显示省略号...的问题

上班第一天 前端岗位,因为公司这个项目是标准开发 所以没法用框架在打架页面,好吧 我手写 各种div 各种css样式 好不忧伤,好吧 不废话了 进入正题. 想在导航栏中的 客户信息 功能点 实现溢出用‘...’来代替, 我一想 这简单啊 只要给div加上text-overflow:ellipsis;属性就好了呗, 结果 怎么调也不行,你说把我压抑的啊 经过一阵查终于找到原因出在哪里里 原来text-overflow:ellipsis;的属性 得需要另外两个属性的配合才能实现 这俩分别是 over

关于溢出、单行文本显示省略号

 溢出属性:   (重要) overflow :visible/hidden/scroll/auto/inherit  值                                    描述 visible                              默认值.内容不会被修剪,会呈现在元素框之外. hidden                             内容会被修剪,并且其余内容是不可见的. scroll                            

超出文本显示省略号

对于大多数刚入门的程序员,都是不是太注重代码的细节,也就是写出来的代码不是太完善.有些我们设置的标签能放下6个字,后期我们又要加多几个字,又不能改变标签的宽度,又要保持外观样式的美观性,那我们怎么办的?下面我就给大家介绍一种超出文本显示用省略号代替的一种方法. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>省略号&

利用css将过长文本用省略号表示

目前在做一个学校的项目,其中有一个页面是展示所有的课程列表.在没有上数据之前,我测试了一下没什么问题,如下图: 因为是做成响应式的,然后数据上了之后,先拿的马克思学院的课程上的,结果就变成了这样: 简直蒙蔽,为什么会有这么长的课程名字,没办法改吧. css: text-overflow:ellipsis; //超出部分显示省略号 white-space:nowrap; //不换行 overflow:hidden;//隐藏超出部分 改完之后效果如下:

使用 text-overflow: ellipsis溢出文本显示省略号时碰到的小问题

本人刚刚实习,第一次写东西,希望大家多多鼓励. 项目中需要实现标题超过一定长度以省略号的形式显示,不是什么难的问题.可是我不想用js实现,就百度了发现text-overflow: ellipsis;(其实很久就有了,不过之前都不知道)这个样式可以实现这种效果,而且所有主流浏览器都支持 text-overflow 属性. 于是就用了如下代码 .ellipsis{ width:300px; white-space: nowrap; word-break: break-all; overflow: h

CSS 溢出文本显示省略号的方法(兼容 IE、FF、Chrome)

text-overflow: ellipsis:该属性用于定义文本溢出的显示方式 css代码: .textEllipsis { overflow: hidden !important; white-space: nowrap !important; text-overflow: ellipsis !important; word-break: normal !important;} Chrome浏览器下显示效果及页面布局: IE浏览器下显示效果: