文章出處

1.常規css方法——可以實現IE,Safari,chrome,opera瀏覽器下文字溢出省略號表示

這是一段測試文字,主要是用來測試文字溢出后是否會用…
.zxx_text_overflow_1{width:27em; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; overflow:hidden;}

 

2.使用ellipsis.xml文件使Firefox支持文字溢出后點點點省略號表示

這段代碼調用了跨文件夾路徑的ellipsis.xml文件,看Firef…

ps: 在Firefox下上面div內容顯示空白,此div內容是:“這段代碼添加了跨文件夾路徑的ellipsis.xml文件,看Firefox瀏覽器下是夠文字溢出省略號表示”。

.zxx_text_overflow_2{width:27em; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; -moz-binding:url('../xml/ellipsis.xml#ellipsis'); overflow:hidden;}

 

這段代碼調用了同文件夾路徑的ellipsis.xml文件,看Firef…

ps: 在Firefox下上面div文字溢出省略號顯示,此div內容是“這段代碼調用了同文件夾路徑的ellipsis.xml文件,看Firefox瀏覽器下是夠文字溢出省略號表示”。至此,幾乎所有主流瀏覽器都實現文字溢出省略號表示。

.zxx_text_overflow_3{width:27em; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; -moz-binding:url('ellipsis.xml#ellipsis'); overflow:hidden;}

 

這里有個小結論:這個使Firefox瀏覽器下文字溢出省略號表示的ellipsis.xml文件要在頁面的同一目錄下,或是下一級目錄下(我已測試),要是向上跨文件夾訪問或絕對路徑訪問則失效。原因不詳!

3.使用:after偽類和content實現文字溢出后省略號表示(嚴重不推薦!直接跳過)

憤慨:我實在忍不住了,我要臭罵一通。我很久之前就自己試過content實現后面的省略號表示,發現問題很多,遂想了其他方法。

今天我本想找以前一位兄弟使用圖片實現類似效果的方法,發現網上突然出現了標題“為兼容IE,FF文字溢出省略號顯示的文章”,其實就一篇,很多我很鄙視的教程網站都有(正好打上了熱門關鍵字啊)。

我原本試試介紹這個方法的,但是我實在做不下去了!這個方法根本不行,一點都不行!要是N年前,只有IE6和Firefox瀏覽器的時候,這個方法或許可以試試。現在根本不行,在現在看來,寫文章的人就是個大草包,要么是個史前時代過來的程序員,文章里面錯誤一大堆,用胡說八道形容一點都不為過,很多東西根本沒有經過驗證就那兒大放厥詞。1、說是兼容,其實反而大大破壞了兼容性,IE6和IE7下的表現就不一樣,一句IE“不支持max-width”就讓我想給作者扇個耳光,IE7不支持嗎,別告訴我你寫這文章時還沒有IE7瀏覽器。2、本來chrome瀏覽器,Safari還有opera可以實現文字溢出省略號顯示的,現在受限與:after和content,就會一處理不當,文字直接被截,就很丑了。3、多套用了一層標簽,css也多了好幾行,沒有必要,資源消耗高。4、當文字很短時后面也還跟著個省略號,沒有溢出為什么還要顯示省略號呢?

總之,結論就是這個方法一點點實用價值都沒有。所以嚴重不推薦!

4.我自己想出來的方法:margin負值定位法——兼容所有主流瀏覽器

這是一個比較短的文字。
這是一段比較長的文字,用來測試是否文字溢…

HTML部分: 
<div class="zxx_text_overflow_4"> <div class="text_con">這是一段比較長的文字,用來測試是否文字溢出時會用省略號顯示。</div> <div class="text_dotted"></div> </div>
CSS部分:
.zxx_text_overflow_4{width:24em; height:1.3em; overflow:hidden; zoom:1;}
.zxx_text_overflow_4 .text_con{float:left; height:1.3em; margin-right:3em; overflow:hidden;}
.zxx_text_overflow_4 .text_dotted{width:3em; height:1.31em; float:right; margin-top:-1.3em;}

 


簡要說明:此方法兼容IE6,IE7,IE8,Firefox,chrome,Safari,opera瀏覽器。沒有hack,沒有生僻的css樣式。文字短時,沒有省略號,文字溢出時就出現省略號。可以說是相當不錯的一個方法。原理也很簡單:當文字內容足夠長時就把隱藏在上面的省略號層給擠下來了。關鍵就是點點點所在div層的高度的絕對值要比其margin的絕對值大那么一點點。

5.jQuery限制字符字數的方法

我的文字個數較少,不要殺我!
你個殺千刀的,怎么寫了這么多的文字,我要被攔腰...
HTML部分: 
<div class="zxx_text_overflow_5">你個殺千刀的,怎么寫了這么多的文字,我要被攔腰截斷了啊,天啊!</div>

沒有css啦,只有js代碼: 
$(document).ready(function(){ //限制字符個數 
$(".zxx_text_overflow_5").each(function(){
var maxwidth=23;
if($(this).text().length>maxwidth){
$(this).text($(this).text().substring(0,maxwidth));
$(this).html($(this).html()+'...');
}
});
});

 

6.jQuery自動判斷寬度是否超出的方法

我的文字個數較少,不要殺我!
你個殺千刀的,怎么寫了這么多的文字,我要被攔腰截斷...
HTML部分: 
<div class="zxx_text_overflow_6">你個殺千刀的,怎么寫了這么多的文字,我要被攔腰截斷了啊,kitty救我!</div>

css部分: 
.zxx_text_overflow_6{width:400px;}

js部分: 
var wordLimit=function(){ 
  $(".zxx_text_overflow_6").each(function(){ 
    var copyThis = $(this.cloneNode(true)).hide().css({ 'position': 'absolute', 'width': 'auto', 'overflow': 'visible' }); 
    $(this).after(copyThis); 
    if(copyThis.width()>$(this).width()){ 
$(this).text($(this).text().substring(0,$(this).html().length-4));
$(this).html($(this).html()+'...');
copyThis.remove();
wordLimit();
}else{
copyThis.remove(); //清除復制 return;
}
});
}
wordLimit();

 


兩個jQuery方法都是自己寫的,不算太難。前者直接限定字符個數,后者通過寬度判斷,去掉最后一個字符,循環,直到文字內容寬度小于div的限制寬度。

 

原創文章,轉載請注明來自張鑫旭-鑫空間-鑫生活[http://www.zhangxinxu.com]
本文地址:http://www.zhangxinxu.com/wordpress/?p=230


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()