亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript超過容器后顯示省略號效果的方法(兼容一行或者多行)

2019-11-20 09:29:30
字體:
來源:轉載
供稿:網友

javascript超過容器后顯示省略號效果

在實際的項目中,由于文字內容的長度不確定性和頁面布局的固定性,難免會出現文字內容超過div(或其他標簽,下同)區域的情況,此時比較好的做法就是當文字超過限定的div寬度后自動以省略號(…)顯示,這樣,按照習慣,人們都會知道這兒有文字被省略了。css中有個屬性叫做text-overflow:ellipsis;比如使用css可以這樣寫:

{width:27em; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; overflow:hidden;}僅在Firefox火狐瀏覽器下無法實現文字溢出省略號表示,其文字直接從中間咔掉了,我這邊不講用css怎么樣來實現這樣的,具體的css實現可以自己百度去,我這邊最主要的是講怎么樣用JS來實現,怎么樣通過JS寫一個簡單的組件,我直接調用JS的初始化方法就可以實現掉!比如如下效果:

后面的點點點 來提示用戶有更多的內容未顯示完成這樣的效果!

先廢話少說!首先來看看我做的demo效果,就能明白到底是個什么樣的效果!

想看效果,請點擊我!ok?

一: 先來看看組件的配置項:如下:

targetCls

null,    目標要截取的容器 必填項 默認為null

limitLineNumber 1,     要顯示的行數 默認為1行

type '...',      超過了容器長度 顯示的type 默認為省略號

lineHeight  18,       dom節點的行高 默認行高為18

isShowTitle true ,      title 是否需要title來顯示所有的內容 默認為true

isCharLimit false     根據字符的長度來限制 超過顯示省略號

maxLength 20        默認長度為20 超過字符20后 顯示省略號

二:分析

1.  首先來講講此組件:支持2種方式來截取字符串,第一:根據字符的長度來截取,超過后顯示省略號,比如我這樣調用:

new MultiEllipsis({
"targetCls" : '.text8',
"isCharLimit":true,
"maxLength": 18

  });

這樣初始化的意思是說,isCharLimit為true是指用字符的個數來截取,最大的長度maxLength為18,這樣初始化,因為代碼里面會首先判斷如果isCharLimit為true的話,就直接按照字符的個數來截取,比如如下代碼:

2. 第二種是根據多少行數及高度來截取的,比如默認配置項的行高是18,如果我想顯示2行,那也就是說高度h = 18*2, 假如容器的高度是100,那么截取的方法是:

使用 (100 - type的長度 - 1)  是否大于 18×2,如果大于的話,繼續截取,否則的不截取,且顯示省略號效果!如下代碼:

缺點:但是使用行高截取的話,如果數據比較少的話,是可以的,但是如果數據很多的話,比如高度為500像素或者更多的話,那么相對來說會影響性能的,因為他們每次都要計算n次(n為循環調用函數多的意思)。

JS所有的代碼如下:

復制代碼

/* * 基于JS的MultiEllipsis * @author tugenhua */ function MultiEllipsis(options) {   var self = this;   self.options = $.extend({},defaults,options || {});   self._init(); } $.extend(MultiEllipsis.prototype,{    // 頁面初始化   _init: function(){     var self = this,       cfg = self.options;     if(cfg.targetCls == null || $(cfg.targetCls + "")[0] === undefined) {       if(window.console) {         console.log("targetCls不為空!");       }       return;     }     if(cfg.isShowTitle) {       // 獲取元素的文本 添加title屬性       var title = self.getText();       $(cfg.targetCls ).attr({"title":title});     }     // 如果是按照字符來限制的話 那么就不按照高度來比較 直接返回     if(cfg.isCharLimit) {       self._charCompare();       return;     }     self._compareHeight(cfg.lineHeight * cfg.limitLineNumber);   },   /*    * 按照字符的長度來比較 來顯示文本    * @method _charCompare {private}    * @return 返回新的字符串到容器里面    */   _charCompare: function(){     var self = this,       cfg = self.options;     var text = self.getText();     if(text.length > cfg.maxLength) {       var curText = text.substring(0,cfg.maxLength);       $($(cfg.targetCls + "")[0]).html(curText + cfg.type);     }   },   /*    * 獲取目標元素的text    * 如果有屬性 data-text 有值的話 那么先獲取這個值 否則的話 直接去html內容    * @method getText {public}    */   getText: function(){     var self = this,       cfg = self.options;     return $.trim($($(cfg.targetCls + "")[0]).html());   },   /*    * 設置dom元素文本    * @method setText {public}    */   setText: function(text){     var self = this,       cfg = self.options;     $($(cfg.targetCls + "")[0]).html(text);   },   /*    * 通過配置項的 行數 * 一行的行高 是否大于或者等于當前的高度    * @method _compareHeight {private}    */   _compareHeight: function(maxLineHeight) {     var self = this;     var curHeight = self._getTargetHeight();     if(curHeight > maxLineHeight) {       self._deleteText(self.getText());     }   },   /*    * 截取文本    * @method _deleteText {private}    * @return 返回被截取的文本    */   _deleteText: function(text){     var self = this,       cfg = self.options,       typeLen = cfg.type.length;     var curText = text.substring(0,text.length - typeLen - 1);     curText += cfg.type;     // 設置元素的文本     self.setText(curText);     // 繼續調用函數進行比較     self._compareHeight(cfg.lineHeight * cfg.limitLineNumber);   },   /*    * 返回當前dom的高度    */   _getTargetHeight: function(){     var self = this,       cfg = self.options;     return $($(cfg.targetCls + "")[0]).height();   } }); var defaults = {   'targetCls'        :   null,         // 目標要截取的容器   'limitLineNumber'     :   1,           // 限制的行數 通過 行數 * 一行的行高 >= 容器的高度   'type'          :   '...',         // 超過了長度 顯示的type 默認為省略號   'lineHeight'       :   18,         // dom節點的行高   'isShowTitle'       :    true,        // title是否顯示所有的內容 默認為true   'isCharLimit'       :   false,        // 根據字符的長度來限制 超過顯示省略號   'maxLength'        :   20          // 默認為20 }; 

以上這篇javascript超過容器后顯示省略號效果的方法(兼容一行或者多行)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
高清一区二区三区四区五区| 国产精品人成电影在线观看| 亚洲第一区在线观看| 日韩中文有码在线视频| 日韩高清av在线| 北条麻妃一区二区三区中文字幕| 日韩日本欧美亚洲| 精品视频久久久| 国产专区精品视频| 欧美大学生性色视频| 亚洲伦理中文字幕| 91国在线精品国内播放| 欧美色另类天堂2015| 日韩免费观看av| 95av在线视频| 成人性生交大片免费看视频直播| 97在线视频国产| 97视频在线观看视频免费视频| 色噜噜狠狠狠综合曰曰曰88av| 欧美日韩激情视频| 成人免费观看49www在线观看| 日韩电影免费观看在线| 成人精品视频99在线观看免费| 96sao精品视频在线观看| 国产成人一区二区三区| 国产精品福利在线观看| 日韩综合视频在线观看| 亚洲无限av看| 精品亚洲一区二区三区在线观看| 7777精品久久久久久| 日韩精品极品在线观看播放免费视频| 免费不卡欧美自拍视频| 福利一区视频在线观看| 日韩欧美在线免费观看| 欧美成人激情视频| 69**夜色精品国产69乱| 久久久综合免费视频| 亚洲欧美一区二区精品久久久| 中文字幕日韩欧美精品在线观看| 国产乱人伦真实精品视频| 午夜精品三级视频福利| 麻豆国产va免费精品高清在线| 成人女保姆的销魂服务| 久久亚洲电影天堂| 国产一区av在线| 精品国产一区久久久| www.午夜精品| 国产在线999| 欧美日韩国产一中文字不卡| 欧美日韩国产中字| 日韩av中文字幕在线播放| 一区二区三区视频免费在线观看| 日韩免费看的电影电视剧大全| 欧美多人乱p欧美4p久久| 日韩电影中文 亚洲精品乱码| 欧美一乱一性一交一视频| 国产精品丝袜一区二区三区| 色偷偷噜噜噜亚洲男人的天堂| 97精品一区二区三区| 久久高清视频免费| 另类少妇人与禽zozz0性伦| 精品久久中文字幕久久av| 欧美日韩国产一区二区| 黑人巨大精品欧美一区二区一视频| 日韩中文在线视频| 日韩一区二区三区国产| 在线播放日韩精品| 亚洲乱码av中文一区二区| 一区二区三区视频在线| 久久久久久久一区二区| 亚洲午夜女主播在线直播| 成人在线激情视频| 日韩精品一区二区视频| 日韩网站免费观看高清| 日韩av在线免费看| 国产亚洲精品久久久久久牛牛| 亚洲a级在线观看| 在线视频一区二区| 久久手机免费视频| 国产精品久久久久久久电影| www.国产一区| 欧美日韩午夜剧场| 国产精品96久久久久久又黄又硬| 一区二区三区国产在线观看| 国产视频亚洲视频| 狠狠躁夜夜躁人人爽天天天天97| 亚洲一区二区三区成人在线视频精品| 国产精品一区二区三区毛片淫片| 国产成人福利网站| 欧美在线xxx| 久久久久久久久久久av| 亚洲欧美中文字幕在线一区| 欧美一级bbbbb性bbbb喷潮片| 在线播放国产一区中文字幕剧情欧美| 国产精品成人一区二区三区吃奶| 亚洲欧美一区二区精品久久久| 欧美性xxxxx极品娇小| 91欧美精品成人综合在线观看| 91视频免费网站| 欧美激情在线观看| 久久偷看各类女兵18女厕嘘嘘| 日韩亚洲欧美成人| 日韩视频在线一区| 亚洲另类图片色| 国产亚洲欧美另类中文| 欧美老女人在线视频| 亚洲视频专区在线| 2019亚洲男人天堂| 亚洲精品欧美极品| 亚洲欧美一区二区三区四区| 久久深夜福利免费观看| 最近2019免费中文字幕视频三| 亚洲三级黄色在线观看| 久久国产一区二区三区| 日韩亚洲一区二区| 色爱av美腿丝袜综合粉嫩av| 亚洲一级片在线看| 国产精品久久中文| 亚洲精品国精品久久99热一| 国产精品v日韩精品| 亚洲精品久久久久久下一站| 国产精品手机播放| 欧美性极品xxxx娇小| 亚洲精品一区二区三区不| 成人性教育视频在线观看| 国产精品久久久久77777| 国产精品羞羞答答| 欧美午夜宅男影院在线观看| 久久精品国产96久久久香蕉| 亚洲色图50p| 亚洲字幕一区二区| 欧美电影在线观看完整版| 成人h片在线播放免费网站| 亚洲免费视频一区二区| 欧美成人一二三| 国产99久久精品一区二区| 78m国产成人精品视频| 97人人爽人人喊人人模波多| 久久亚洲精品视频| 成人av.网址在线网站| 日韩av在线精品| 日韩av黄色在线观看| 欧美性少妇18aaaa视频| 亚洲成人aaa| 成人激情视频小说免费下载| 精品少妇一区二区30p| 亚洲第一在线视频| 国产精品亚洲欧美导航| 精品女厕一区二区三区| 日韩免费在线观看视频| 国产精品久久久| 一级做a爰片久久毛片美女图片| 欧美国产日韩一区二区在线观看| 国产美女精品免费电影| 91精品久久久久久综合乱菊| 一区二区三区回区在观看免费视频| 91精品久久久久久久久久久久久久| 亚洲欧美日韩中文视频| 国产精品久久久精品| 一区二区三区四区视频| 久久五月天综合| 亚洲自拍偷拍区| 中文字幕亚洲精品| 91精品国产综合久久久久久蜜臀|