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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM