为了实现在段落尾部超出文字替换为省略号,自己写的插件,并作了简单的优化。

下面给出脚本演示页面及注释,在此之前介绍一下插件参数

1.lineNum:数字。限制段落的行数

2.english:布尔。英文模式字符偏小,需扩大筛选空间,实际源码中是通过此参数修改并覆盖OP_NUM;

3.OP_NUM: 数字。优化系数,一般不需要设置。默认1.3中文模式,1.3*2.5英文模式

演示效果

演示页面HTML代码

<!doctype html>
<html lang="cn">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>test jquery.ellipsis.js</title>
<link rel="stylesheet" href="css/main.css">
</head> <script src="js/jquery-2.1.0.js"></script>
<script src="js/jquery.ellipsis.js"></script> <body>
<div class="textBox">
<p>
2004年参演电视剧《与青春有关的日子》,开始在影视圈崭露头角[1] 。2005年拍摄古装剧《锦衣卫》。2007年主演赵宝刚导演的青春剧《奋斗》;[2] 同年,主演首部电影《走着瞧》。2008年主演滕华涛执导的电视剧《蜗居》,饰演80后城市青年小贝。[1] [3] 2009年,在电影《海洋天堂》中扮演自闭症患者王大福;同年参演抗战题材的电视剧《雪豹》[4] 。2011年,主演的电视剧《裸婚时代》在各大卫视播出;[5] 2011年-2012年连续2年获得北京大学生电影节[6-7] 最受大学生欢迎男演员奖。2012年,凭借电影《失恋33天》获得第31届大众电影百花奖最佳男主角奖;[8] 同年成立自己经营的北京君竹影视文化有限公司,并导演第一部影视作品《小爸爸》。2013年2月,主演的电影《西游·降魔篇》在全国上映。
</p>
</div>
<div class="textBox2">
<p>
2004年参演电视剧《与青春有关的日子》,开始在影视圈崭露头角[1] 。2005年拍摄古装剧《锦衣卫》。2007年主演赵宝刚导演的青春剧《奋斗》;[2] 同年,主演首部电影《走着瞧》。2008年主演滕华涛执导的电视剧《蜗居》,饰演80后城市青年小贝。[1] [3] 2009年,在电影《海洋天堂》中扮演自闭症患者王大福;同年参演抗战题材的电视剧《雪豹》[4] 。2011年,主演的电视剧《裸婚时代》在各大卫视播出;[5] 2011年-2012年连续2年获得北京大学生电影节[6-7] 最受大学生欢迎男演员奖。2012年,凭借电影《失恋33天》获得第31届大众电影百花奖最佳男主角奖;[8] 同年成立自己经营的北京君竹影视文化有限公司,并导演第一部影视作品《小爸爸》。2013年2月,主演的电影《西游·降魔篇》在全国上映。
</p>
</div>
<script type="text/javascript"> $('.textBox').ellipsis({
english: false,
lineNum: 4
});
$('.textBox2').ellipsis({
english: false,
lineNum: 5
});
</script>
</body>
</html>

css

body {
font: 12px/1.5 "Microsoft YaHei",SimSun,Tahoma, Helvetica, Arial, sans-serif;
}
.textBox p{
text-indent: 20px;
}
.textBox2 {
width: 200px;
}

注释源码

//段落省略号插件
;(function($){
$.fn.ellipsis = function(options){
//插件参数
options = $.extend({
//英文模式
english : false,
//优化系数
OP_NUM: 1.3,
//目标行数
lineNum : 3,
}, options);
$(this).each(function(index, element) {
//优化系数
var OP_NUM = options.OP_NUM;
//wrap
var $wrap = $(this);
//目标p
var $p = $('p',$wrap);
//行数
var lineNum = options.lineNum;
//最初整篇文章
var originAll = $p.text();
//字体大小
var pFontSize = parseInt($p.css('font-size'));
//行高
var pLineHeight = parseInt($p.css('line-height'));
// 过去宽度
var oldWidth = $p.width();
// 现在宽度
var nowWidth = oldWidth;
//根据行数设置wrap高度
var wrapHeight = lineNum * pLineHeight;
$wrap.height(wrapHeight);
// 英文模式,字符偏多,系数*2.5
OP_NUM = options.english ? 1.3*2.5 : 1.3;
//首次加载先进行一次粗略筛选
$p.text(originAll.slice(0,lineNum * nowWidth/pFontSize * OP_NUM));
//主功能
function render(){
nowWidth = $p.width();
//当页面放大时,粗略筛选
if(nowWidth > oldWidth){
$p.text(originAll.slice(0,lineNum * nowWidth/pFontSize * OP_NUM));
}
oldWidth = nowWidth;
//核心筛选
while ($p.outerHeight() > wrapHeight) {
$p.text($p.text().replace(/\s?(\w+|\W{1,3})(\.{6})?$/, "......"));
};
}
render();
// 窗口拉伸;
$(window).resize(function(){
//利用异步将页面渲染操作合在一起
setTimeout(render,0);
})
});
};
})(jQuery);

jquery.ellipsis.js段落超出省略号插件的更多相关文章

  1. Jquery.validate.js表单验证插件的使用

    作为一个网站web开发人员,以前居然不知道还有表单验证这样好呀的插件,还在一行行写表单验证,真是后悔没能早点知道他们的存在. 最近公司不忙,自己学习一些东西的时候,发现了validation的一个实例 ...

  2. jQuery.validate.js表单验证插件

    jQuery.validate.js表单验证插件的使用 效果: 代码: <!DOCTYPE html> <html lang="en"> <head& ...

  3. jquery.nav.js定位导航滚动插件

    jQuery.nav.js插件代码: /* * jQuery One Page Nav Plugin * http://github.com/davist11/jQuery-One-Page-Nav ...

  4. 表单验证代码实例:jquery.validate.js表单验证插件

    jquery.validate.js是JQuery旗下的一个验证插件,借助JQuery的优势,我们可以迅速验证一些常见的输入,并且可以自己扩充自己的验证方法.使用前请先下载必要的JQuery插件:jq ...

  5. jquery.fullPage.js全屏滚动插件

    注:本文内容复制于http://www.51xuediannao.com/js/jquery/jquery.fullPage.html 和 http://www.360doc.com/content/ ...

  6. jquery.fullPage.js全屏滚动插件教程演示

    css部分(此处需要导入jquery.fullPage.css) <style> .section { text-align: center; font: 50px "Micro ...

  7. 插件:★★★ !!!图片懒加载 lazyload.js 、 jquery.scrollLoading.js

    插件:图片懒加载 jquery.lazyload.js 2016-3-31 插件说明:http://www.w3cways.com/1765.html (小插件,好用) 下载地址: https://r ...

  8. jquery.ellipsis根据宽度(不是字数)进行内容截断,支持多行内容

    jquery.ellipsis 自动计算内容宽度(不是字数)截断,并加上省略号,内容不受中英文或符号限制. 如果根据字数来计算的话,因为不同字符的宽度并不相同,比如l和W,特别是中英文,最终内容宽度会 ...

  9. jQuery.form.js jQuery ajax异步提交form

    jQuery.form.js是一个form插件,支持ajax表单提交和ajax文件上传. 官网下载地址:http://plugins.jquery.com/form/ API ajaxForm 增加所 ...

随机推荐

  1. VC6使用技巧

    1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}.方括号[].圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”.如果括号匹配正确,光标就跳到匹配的括号处,否则 ...

  2. 判图的连通性(dfs,并查集)

    一.无向图 欧拉回路:每个顶点度数都是偶数 欧拉路:所有点度数为偶数,或者只有2个点度数为奇数 当然判连通性 hdu 1878 欧拉回路 两种判连通的方法 dfs #include <iostr ...

  3. 两年前实习时的文档——Platform学习总结

    1  概述 驱动程序实际上是硬件与应用程序之间的中间层.在Linux操作系统中,设备驱动程序对各种不同的设备提供了一致的訪问接口,把设备映射成一个特殊的设备文件,用户程序能够像其它文件一样对设备文件进 ...

  4. JeeSite 企业信息化快速开发平台

    平台简介 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台. JeeSite本身是以Spring Framework为核心容器,Spri ...

  5. C#整理2——C#的输入输出及基本类型

    //输出 Console.WriteLine("摩西摩西"); Console.Write("hollo");不带回车的 注意: 1.注意大小写敏感.(快捷键操 ...

  6. 教你如何理解SQL

    1. SQL 是一种声明式语言 首先要把这个概念记在脑中:“声明”. SQL 语言是为计算机声明了一个你想从原始数据中获得什么样的结果的一个范例,而不是告诉计算机如何能够得到结果.这是不是很棒? (译 ...

  7. CSS样式做圆角

    我处理圆角的版本是由内置的绝对定位的四个div组成,每个div都有唯一的圆角图片作CSS Sprite操作.我们将会这样做:  是什么方式导致这项技术表现得这么了不起呢(What makes this ...

  8. maven简单工具命令

    (一)聚合项目的创建//创建父项目mvn archetype:create -DgroupId=com.ztesoft.resmaster -DartifactId=lifecycle<pack ...

  9. [string]Regular Expression Matching

    Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...

  10. Qt中实现菜单和工具栏功能

    Qt创建菜单和工具栏: 一.  temp.h文件的内容 1.定义类temp继承QMainWindow 2.添加Q_OBJECT , 构造函数 . 析构函数等内容 3.$重点内容 3.1定义QActio ...