2011-10-21 54 views
2

我需要將文本放在具有精確寬度的div框中。
有沒有一種方法(例如JavaScript)使文本在所有主流瀏覽器中看起來相同?
例如,如果文本不適合'div'框,請剝去一些字母。不同瀏覽器中文本的大小(寬度)

+3

總是有CSS溢出隱患。 – kojiro

+0

這不適合我。隱藏的溢出可以切割中間的字母。 – pi11

+0

@ pi11:如果文本不適合'div'框,請刪除一些字母? –

回答

0

首先,設置你的字體和大小與CSS。那麼你幾乎總是有相同的寬度。

然後你可以添加overflow:hidden;到你的div,所以它不會顯示任何結束的東西。

取決於你如何做這個,你可以使用填充和利潤不設置寬度,這樣它會永遠適合在div。雖然這可能不是你想要的。

+0

我設置了字體的面部和大小。但文字看FF和鉻(寬度)的差異。這裏是示例 - http://imghs.com/i/NeZvKsiBVRbf/ – pi11

+0

我可以問你的頁面佈局是什麼?有可能有更好的方法來支持不同的文本寬度。也許設置寬度超過需要並居中文本? – xthexder

+0

在我的案例中,文本來自用戶輸入。所以它們的大小總是不同的。我可以在輸出之前用python截斷字母,但是我需要用文本填充整個div框。我無法估計確切的字體寬度。 – pi11

1

只需添加以下屬性到CSS規則的DIV:

overflow:hidden; text-overflow:ellipsis; white-space:nowrap; 

你可以see this in action here (JSFiddle)

+0

不錯。不幸的是我的FF4不支持文本溢出:省略號; – pi11

+0

@ pi11 - 是的,這是一個衆所周知的FF問題(請參閱http://stackoverflow.com/questions/4927257/text-overflowellipsis-in-firefox-4-and-ff5)。據說FF7終於支持省略號了...... –

0

可以截斷與CSS或JavaScript的文本。這裏有一個簡單的jQuery插件,截斷我寫這允許「顯示更多」鏈接,如果文本被截斷的例子:

$.fn.trunc = function(_break_at) { 

    var _article = jQuery(this).text(); 
    var _leader = []; 
    var _trailer = []; 
    var _substr = _article.split(' '); 
    $(this).wrapInner('<div class="long"></div>'); 

    $.each(_substr, function(i, data) { 
     if (i < _break_at) { 
      _leader.push(data); 
     } 
    }); 

    if (_substr.length > _break_at) { 

     $('<div/>').addClass('short').html(_leader.join(' ')).prependTo(this); 
     $('<span/>').appendTo('.long').addClass('toggle').html(' &lt;&lt; Show less'); 
     $('<span/>').appendTo('.short').addClass('toggle').html('... Show more &gt;&gt;'); 

    } 
    $('.toggle').click(function() { 
     $('.short, .long').toggle('show'); 
    }); 
}; 

$(function() { 

    // This is how you use it 
    $('#article_body').trunc(2); 
}); 

http://jsfiddle.net/AlienWebguy/7ZamJ

+0

謝謝,但是如何估計每行文​​本的_break_at值呢?例如,此文本 - 「lllllll」和此文本 - 「WWWWWW」採用不同的寬度(如果使用的不是等寬字體)。 – pi11

相關問題