中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

javascript超過容器后顯示省略號效果的方法(兼容一行或者多行)
來源:易賢網 閱讀:1208 次 日期:2016-07-27 15:50:38
溫馨提示:易賢網小編為您整理了“javascript超過容器后顯示省略號效果的方法(兼容一行或者多行)”,方便廣大網友查閱!

下面小編就為大家帶來一篇javascript超過容器后顯示省略號效果的方法(兼容一行或者多行)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。

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超過容器后顯示省略號效果的方法(兼容一行或者多行)就是小編分享給大家的全部內容了,希望能給大家一個參考

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲成色777777女色窝| 怡红院精品视频在线观看极品| 一区二区三区免费看| 9人人澡人人爽人人精品| 一本久久综合亚洲鲁鲁| 欧美永久精品| 美女主播精品视频一二三四| 欧美精品成人| 国内成人精品视频| a91a精品视频在线观看| 欧美影院成人| 欧美成人dvd在线视频| 国产欧美成人| 正在播放亚洲| 欧美日本国产视频| 亚洲精品国产系列| 久热精品视频在线观看| 国产一区二区0| 午夜国产一区| 国产精品国产馆在线真实露脸| 亚洲电影激情视频网站| 欧美一区二区三区免费观看| 国产精品jizz在线观看美国| 亚洲精品一区在线| 欧美剧在线观看| 亚洲免费观看高清在线观看| 久久影视精品| 亚洲第一免费播放区| 久久久久久久网| 在线免费观看日本一区| 久久综合色影院| 亚洲成色777777女色窝| 欧美成人精品在线| 亚洲成色最大综合在线| 蜜桃久久精品一区二区| 一区二区视频免费在线观看| 午夜精品区一区二区三| 国产精品呻吟| 久久久精品五月天| 国内精品国产成人| 久久精品99| 国内免费精品永久在线视频| 久久青青草原一区二区| 在线观看欧美黄色| 欧美激情一区二区三区不卡| 亚洲国产另类精品专区 | 亚洲欧美日韩一区| 欧美精品一区二区三区在线播放 | 在线日本成人| 欧美不卡视频一区| 9久re热视频在线精品| 国产精品视频xxxx| 久久久亚洲国产天美传媒修理工| 在线观看亚洲视频| 欧美日韩在线播放一区二区| 亚洲欧美日韩精品综合在线观看| 国产精品男女猛烈高潮激情 | 国产日韩欧美在线视频观看| 久久精品国产欧美亚洲人人爽| 在线观看精品| 国产精品激情| 老司机一区二区| 在线亚洲精品| 狠狠色伊人亚洲综合成人| 欧美韩国日本一区| 欧美性事在线| 欧美在线一二三四区| 亚洲国产影院| 欧美特黄一级| 免费一区二区三区| 亚洲视频精选| 1024精品一区二区三区| 欧美人与禽猛交乱配| 亚洲尤物视频在线| 亚洲国产天堂久久综合| 国产精品综合| 欧美国产第二页| 欧美一区二区三区视频免费播放| 国产一区二区三区免费不卡| 国产自产精品| 国产精品久久久久影院色老大| 久久精品亚洲国产奇米99| 日韩视频一区| 极品日韩久久| 国产三级欧美三级日产三级99| 欧美日韩成人精品| 久久黄色小说| 亚洲欧美激情诱惑| 最近看过的日韩成人| 国产在线不卡| 欧美日韩视频在线第一区| 欧美一区二区三区四区在线观看地址 | 欧美一区二区国产| 亚洲先锋成人| 亚洲精品网站在线播放gif| 亚洲高清电影| 精品av久久707| 国产亚洲精品高潮| 国产精品久久久一区二区三区| 欧美久久电影| 欧美精品一区二区久久婷婷| 欧美一级淫片播放口| 亚洲在线第一页| 一区二区三区黄色| 一区二区三区www| 国产精品毛片va一区二区三区| 欧美日韩国产影片| 欧美日韩成人综合| 欧美日韩亚洲综合| 欧美日韩日韩| 国产精品magnet| 国产亚洲精品自拍| 在线成人小视频| 亚洲精品小视频| 亚洲性av在线| 久久久精品国产99久久精品芒果| 欧美一区二区三区播放老司机| 亚洲欧美在线免费观看| 久久av在线看| 欧美91视频| 国产精品红桃| 狠狠色丁香久久婷婷综合_中| 亚洲国产另类久久精品| 一本色道88久久加勒比精品| 亚洲一区二区三区精品在线| 欧美在线一区二区三区| 巨乳诱惑日韩免费av| 欧美日韩国产一区精品一区| 国产精品乱人伦一区二区| 韩国女主播一区二区三区| 亚洲人成网站精品片在线观看| 一本色道久久综合亚洲精品不卡| 亚洲综合视频网| 免费视频亚洲| 国产精品videosex极品| 国产一区二区三区在线免费观看 | 国产日韩精品一区二区三区在线 | 国产精品久久久久久模特| 国产亚洲成年网址在线观看| 国产一区激情| 日韩天堂在线观看| 欧美在线免费视屏| 欧美精品日韩| 国产香蕉97碰碰久久人人| 亚洲国产精彩中文乱码av在线播放| 99国产一区| 久久精品夜色噜噜亚洲a∨| 欧美日韩成人一区| 国产亚洲一二三区| 99re6这里只有精品| 久久久久免费观看| 国产精品久久久久久久久久三级| 国产欧美一区二区精品仙草咪| 亚洲福利一区| 午夜久久福利| 国产精品区一区二区三区| 亚洲国产日韩一区二区| 欧美亚洲日本网站| 欧美三级视频在线播放| 亚洲国产成人porn| 欧美亚洲系列| 国产精品亚洲一区二区三区在线| 亚洲欧洲精品天堂一级| 久久麻豆一区二区| 国产免费成人av| 国产精品99久久久久久久久久久久| 久久久久国色av免费看影院| 国产精品成人一区二区| 最新中文字幕亚洲| 久久午夜电影网| 国产欧美日韩| 亚洲欧美日韩国产| 欧美色道久久88综合亚洲精品| 一区免费观看视频| 免费成人黄色| 激情欧美亚洲| 久久久www成人免费毛片麻豆 | 99在线精品观看| 欧美sm视频| 一区国产精品| 老司机免费视频一区二区三区| 国内久久视频| 欧美成人午夜视频| 亚洲免费观看高清在线观看| 欧美精品一卡| 亚洲综合三区| 韩国一区电影| 你懂的视频一区二区| 日韩午夜免费视频| 国产精品海角社区在线观看| 亚洲尤物精选| 国内精品久久久久伊人av| 欧美专区在线观看| 亚洲电影第三页| 久久九九免费视频| 亚洲国产专区| 欧美四级剧情无删版影片| 亚洲一区免费视频| 国产一区二区三区四区在线观看| 久久久久成人精品免费播放动漫|