CSS:你能防止溢出:隐藏截断最后一行文字吗?

时间:2010-07-10 20:57:09

标签: css overflow hidden

当使用CSS overflow:hidden时,我经常发现最后一行文本被部分截断。有没有办法防止这种情况,以便任何部分线条不显示。几乎像一个垂直的自动换行。

8 个答案:

答案 0 :(得分:12)

您可以使用包装器div和多列css:

.wrapper {
    -webkit-column-width: 150px; //You can't use 100%
    column-width: 150px;
    height: 100%;
}

解决方案示例: http://jsfiddle.net/4Fpq2/9/

更新2017-09-21

在Firefox中,此解决方案仍可正常运行,但在Chrome中已损坏。最近Chrome开始按小部件打破列,如果设置高度,也会停止打破内容。 在这个http://jsfiddle.net/4Fpq2/446/示例中,我将hight更改为max-height并显示奇怪的Chrome行为。 如果您有想法,请写下评论。

更新2019-03-25

基本上,它甚至可以用于Chrome,但你应该至少有两行。对于具有一定量可见文本的块,这种方法仍然可以正常工作。

http://jsfiddle.net/ncmo9yge/

答案 1 :(得分:5)

一旦你理解了column-width的工作方式,@ stalkerg的回答就很有意义。

column-width将内容拆分为列,因此文本的最后一行不适合,它将移动到下一列。现在的诀窍是使列宽与容器一样宽。容器有溢出:隐藏,因此第二列不会显示。

.box {
    width: 200px;
}
.container {
    -webkit-column-width: 200vw;
    -moz-column-width:    200vw;
    column-width:         200vw;
    height:               100%;
}

答案 2 :(得分:2)

此解决方案对我有用:https://stackoverflow.com/a/17413577/2540428 基本上用适当的填充创建一个包装器div,并将内容放在主div中,在那里编辑它的高度并隐藏溢出。有关详细信息,请参阅链接。

答案 3 :(得分:1)

对我有用:

.wrapper_container{
    width: 300px;
    height: 200px;
    overflow: hidden;
}

.wrapper{
    -webkit-column-width: 300px;
    column-width: 300px;
    height: 100%;
}

答案 4 :(得分:0)

Rob是正确的。我正在创建一个最大高度为11em的div,最后一行溢出文本只有一半。 white-space:nowrap只是消除了最后一行。

我试过

white-space: nowrap;

Gaby也是正确的,这也会导致问题。

我想出的最好的方法是摆弄线高和div高度,直到最少的线被切断

答案 5 :(得分:0)

只需添加列宽属性并设置容器的宽度,它就可以工作。

答案 6 :(得分:0)

只需使用边框而不是填充。

答案 7 :(得分:-1)

存在两个css3属性。 1)断言& 2)word-arap

不要忘记这些是css3的新属性。因此旧版浏览器不支持此类属性。

.class-name {word-break: break-all;}
.class-name {word-wrap: break-word;}