文字溢出:省略号不起作用


263

这是我尝试过的(请参阅此处):

body {
    overflow: hidden;
}

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
}

本质上,当窗口变小时,我希望跨度以省略号缩小。我做错什么了?



当我认为它无法正常工作时,我遇到的问题是我没有将宽度设置得足够长(10像素)。所以我剪掉省略号,do!
Rod

Answers:


458

您需要具有CSS overflowwidth(或max-widthdisplaywhite-space

http://jsfiddle.net/HerrSerker/kaJ3L/1/

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
    width: 100px;
    display: block;
    overflow: hidden
}

附录 如果要概述进行线夹的技术(多线溢流椭圆),请查看以下CSS-Tricks页面:https : //css-tricks.com/line-clampin/

附录2(2019年5月)
如此链接所述,Firefox 68将支持-webkit-line-clamp(!)


12
空白属性是我所缺少的。谢谢。
nebulousGirl

65
糟糕的是您需要该white-space: nowrap;物业。现在,您只能使一行文本以...结尾,而不是块文本。
斯文·范·佐伦

3
如今,所有主要的浏览器都支持省略号:caniuse.com/#feat=text-overflow
kazy 2014年

1
单独的CSS不支持@basZero多行省略号。您必须采取其他措施
yunzen '16

1
您需要指定宽度以绑定容器,需要设置overflow:hidden,以便浏览器将隐藏运行文本,然后设置text-overflow:省略号以指示浏览器如何特别处理文本溢出隐藏。
Michael Angstadt

46

确保您有一个块元素,最大大小,并将溢出设置为隐藏。(在IE9和FF 7中测试)

http://jsfiddle.net/uh9zD/

div {
    border: solid 2px blue;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 50px;
}

5
对于任何有空格的东西,似乎通常也需要white-space:nowrap属性。
Kzqai 2012年

上面的评论完全相同。
nebulousGirl

@nebulousGirl:实际上,Kzqai的评论早于HerrSerker的评论中的发布。
lepe

IE中存在古怪之处-IE 不会包装第二个单词 (已在IE 11中进行测试)。可以在任何其他浏览器上正常运行(包括旧的Opera 12)。
Nux 2015年

1
@Nux在MS Edge浏览器中也无法正常工作
yunzen

21

对于Chrome中的多行,请使用:

display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; // max nb lines to show
-webkit-box-orient: vertical;

灵感来自youtube ;-)


这是一个非常有趣的解决方案。它使用-webkit-*属性,但所有主要浏览器均支持。更多信息可以在这里找到:css-tricks.com/almanac/properties/l/line-clamp
dkniffin

5

我在chrome下出现省略号问题。启用空白:nowrap似乎可以解决此问题。

max-width: 95px;
max-height: 20px;
overflow: hidden;
display: inline-block;
text-overflow: ellipsis;
border: solid 1px black;
font-size: 12pt;
text-align: right;
white-space: nowrap;

4
word-wrap: break-word;

这,只有这为我做了一份工作

<pre> </pre> 

标签

其他所有事情都没有做省略号...


3

对于任何可能偶然发现此问题的人来说,都是要小心...我的h2正在继承

text-rendering: optimizelegibility; 
//Changed to text-rendering: none; for fix

这不允许省略号。显然这是很挑剔的吧?


2

在您喜欢的位置添加以下代码

p{
   display: block; /* Fallback for non-webkit */
   display: -webkit-box;
   max-width: 400px;
   margin: 0 auto;
   -webkit-line-clamp: 2;
   -webkit-box-orient: vertical;
   overflow: hidden;
   text-overflow: ellipsis;
 }

2

多行

在chrome中,如果需要在多行上使用省略号,则可以应用此CSS。

您还可以在CSS中添加宽度以指定一定宽度的元素:

.multi-line-ellipsis {
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}
<p class="multi-line-ellipsis">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>


1

您可以通过在CSS中添加以下内容来尝试使用省略号:

.truncate {
  width: 250px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

但似乎这段代码仅适用于单行修剪。可以在以下网站中找到更多剪裁文本和显示省略号的方法:http : //blog.sanuker.com/?p=631


0

在CSS中添加以下行以使省略号起作用

 p {
     display: block; // change it as per your requirement
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
   }

0

对于我们中不希望使用固定宽度的用户,也可以使用display: inline-grid。因此,只需添加所需的属性display

span {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    display: inline-grid;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.