2011-10-21 55 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

相关问题