為了實現在段落尾部超出文字替換為省略號,自己寫的插件,並作了簡單的優化。
下面給出腳本演示頁面及注釋,在此之前介紹一下插件參數
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);