jquery.ellipsis.js段落超出省略号插件

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

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

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);
时间: 2024-10-12 19:58:41

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

jquery.fullPage.js全屏滚动插件

效果演示 网站   http://www.51xuediannao.com/demo.php 插件下载  http://www.51xuediannao.com/js/jquery/jquery.fullPage.html jquery.fullPage.js是一个全屏滚动插件,本文提供jquery.fullPage实例教程演示 看啥都不如看演示来的直观,走起! 基本滚动 http://www.51xuediannao.com/js/jquery/jquery.fullPage/index2.h

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

作为一个网站web开发人员,以前居然不知道还有表单验证这样好呀的插件,还在一行行写表单验证,真是后悔没能早点知道他们的存在. 最近公司不忙,自己学习一些东西的时候,发现了validation的一个实例讲解应用.it's perfect. 首先记录一些使用过程中,爱犯的错误: 1>忘记给表单form添加id属性 2>input这些表单标签必须id属性和name属性名字一样.例如:<input type="text" id="name" name=&q

jQuery.validate.js表单验证插件

jQuery.validate.js表单验证插件的使用 效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-e

兼容IE8以下浏览器input表单属性placeholder不能智能提示功能,以及使用jquery.validate.js表单验证插件的问题处理

当前很多表单提示使用了表单属性placeholder,可这属性不兼容IE8以下的浏览器,我自己写了一个兼容处理js // 兼容IE8以下浏览器input不能智能提示功能 if(navigator.appName == "Microsoft Internet Explorer" && (navigator.appVersion.match(/7./i)=="7." || navigator.appVersion.match(/8./i)=="

当同时使用bootstrap-datepicker.js和jquery.validate.js这两款插件,至少要选择两次时间,才能验证成功的问题

当用 bootstrap-datepicker.js 这个插件选择时间,再用jquery.validate.js进行验证,当时间不为空时则验证通过.可能由于在时间插件弹出来时,input框的值发生改变,这时候就进行了验证,所以每次进行验证的都是bootstrap-datepicker.js选中日期的前一个值,比如:默认日期为空,当第一次选中日期,假设该日期为(2019-2-22),那么本次验证的值则为空,所以验证不通过:当再次选中时间,假设这次选中时间为(2019-2-23),才有前一个值为(2

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

jQuery.form.js是一个form插件,支持ajax表单提交和ajax文件上传. 官网下载地址:http://plugins.jquery.com/form/ API ajaxForm 增加所有需要的事件监听器,为ajax提交表单做准备.ajaxForm并不能提交表单.在document的ready函数中,使用ajaxForm来为ajax提交表单进行准备. 接受0个或1个参数.参数可以是一个回调函数,也可以是一个Options对象. $("#formid").ajaxForm(

jQuery.form.js使用

jQuery.form.js是一个form插件,支持ajax表单提交和ajax文件上传. 下载地址 百度云:http://pan.baidu.com/s/1eQoYE46 360云:http://yunpan.cn/Qi7B5wdiewUMP  访问密码 06b6 微云:http://url.cn/QMQ79w 1 <!DOCTYPE html> 2 3 <html> 4 <head> 5 <meta name="viewport" conte

jq的“钉”插件--jquery.pin.js

一大早浏览博客园时,看到小鹿同学写了一个jquery.pin.js的使用总结,觉得在日常编码过程中用得上,就随着他的总结看了一下,并自己写了个demo.  常见的,一般浏览网页时右侧有个“回到顶部”的字眼或图片,鼠标往下滑动时,这个“回到顶部”一直在浏览器的同一位置,好像钉在那块一样.往常,碰到这个需求时,我都是用: position: fixed; 代码来实现.看过小鹿同学的博客之后,结合jquery.pin.js的作用,想到确实有那种将某个页面元素钉在某段文本旁边的需求,所以也学习了一下.下

【转载】jquery 滚动条插件jquery.slimscroll.js

转载http://www.w3cways.com/1910.html jquery.slimscroll.js插件是一个支持把内容放在一个盒子里面,固定一个高度,超出的则使用滚动. jquery.slimscroll.js不仅可以定义高度.宽度,还可以定义位置.滚动条大小.尺寸.颜色以及众多参数自定义,非常不错,推荐大家使用. 官网地址:https://github.com/kujian/jQuery-slimScroll CND:http://cdn.bootcss.com/jQuery-sl