ChatGPT解决这个技术问题 Extra ChatGPT

CSS 文本溢出:省略号;不工作?

我不知道为什么这个简单的 CSS 不起作用...

.app a { 高度:18px;宽度:140px;填充:0;溢出:隐藏;位置:相对;边距:0 5px 0 5px;文本对齐:居中;文字装饰:无;文本溢出:省略号;空白:nowrap;颜色:#000; }

应该在第四次“测试”前后中断

FF only - 如果应用了 filter,将不会呈现省略号。 bug opened
就我而言,从元素中删除 display: flex 有帮助
我需要添加 display: flex;

T
Trilarion

text-overflow:ellipsis; 仅在满足以下条件时才有效:

元素的宽度必须以 px(像素)为单位进行限制。 %(百分比)的宽度不起作用。

该元素必须具有溢出:隐藏和空白:nowrap 集。

您在此处遇到问题的原因是您的 a 元素的 width 不受限制。您确实有一个 width 设置,但由于元素设置为 display:inline(即默认值),它忽略它,并且没有其他任何东西限制它的宽度。

您可以通过执行以下操作之一来解决此问题:

将元素设置为 display:inline-block 或 display:block (可能是前者,但取决于您的布局需要)。

将其容器元素之一设置为 display:block 并为该元素提供固定宽度或最大宽度。

将元素设置为 float:left 或 float:right (可能是前者,但同样,就省略号而言,两者都应该具有相同的效果)。

我建议display:inline-block,因为这将对您的布局产生最小的附带影响;就布局而言,它的工作方式与当前使用的 display:inline 非常相似,但您也可以随意尝试其他点;我试图提供尽可能多的信息来帮助你理解这些东西是如何相互作用的;理解 CSS 的很大一部分是理解各种样式如何协同工作。

这是包含您的代码的片段,添加了 display:inline-block,以显示您有多接近。

.app a { 高度:18px;宽度:140px;填充:0;溢出:隐藏;位置:相对;显示:内联块;边距:0 5px 0 5px;文本对齐:居中;文字装饰:无;文本溢出:省略号;空白:nowrap;颜色:#000; }

有用的参考资料:

https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow

https://developer.mozilla.org/en-US/docs/Web/CSS/white-space


如果由于响应式设计而无法使用设置宽度怎么办?
请注意, max-width 也有效。这对我很有帮助,因为我有一个图标,无论其跨度的宽度如何,它都必须紧贴文本的末尾。 (否则,如果文本没有占据跨度的全宽,图标将向右浮动)
注意:white-space: nowrap 实际上不是必需的。即使没有它,我们仍然可以看到椭圆。对于多行 text-overflow,请参阅 this SO
不确定这是否是最近的更改,但在 Chrome 50(测试版)中,您不必将宽度设置为 px 值——“100%”也可以。 white-space: nowrap 是必需的。
根本不需要设置固定的 width。您需要做的就是设置一个 white-space: nowrap; 并且它工作得很好。
S
Supreme Dolphin

接受的答案很棒。但是,您仍然可以使用 % 宽度并达到 text-overflow: ellipsis。解决方案很简单:

display: inline-block; /* for inline elements e.g. span, strong, em etc */
text-overflow: ellipsis;
width: calc(80%); /* The trick is here! */

似乎每当您使用 calc 时,最终值都会以绝对像素呈现,从而将 80% 转换为类似于 800px1000px 宽度容器。因此,不要使用 width: [YOUR PERCENT]%,而是使用 width: calc([YOUR PERCENT]%)


H
Herick

因此,如果您因为在尝试使省略号在 display: flex 容器内工作时遇到问题而遇到此问题,请尝试将 min-width: 0 添加到溢出其父容器的最外层容器,即使您已经为其设置了 overflow: hidden 并且看看这对你有用。

aj-foster 提供的有关此 codepen 的更多详细信息和工作示例。在我的情况下完全成功了。


很棒的解决方案 - 它也是此处发布的唯一适用于 display: flex 容器中的 position: sticky 元素的解决方案。
我在 Firefox 上遇到了这个问题,Chrome 还可以。我在 body 上将 display 设置为 grid。为了解决这个问题,我必须在网格项目上设置 min-length: 0;(在我的例子中是 body 的孩子)
有关“为什么这是必要的”的深入解释,我建议阅读 the following answer on another question
M
Mr. Polywhirl

我一直有这个问题,我想要一个可以轻松使用动态宽度的解决方案。解决方案使用 css 网格。这是代码的样子:

.parent { 显示:网格;网格模板列:自动 1fr; } .dynamic-width-child { 空白:nowrap;文本溢出:省略号;溢出:隐藏; } .fixed-width-child { white-space: nowrap; }

iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii asdfhlhlafh;lshd;flhsd;lhfaaaaaaaaaaaaaaaaaaa
为什么?-Zed< /div>


@ChristopherStrydom 我认为这现在应该是公认的答案。
很遗憾,您必须向下滚动这么远才能找到古老问题的现代解决方案。
找这个很久了。
接受的答案是这样的。
J
John

包括在省略号起作用的信息之后写的四行

.app a
{
 color: #fff;
 font: bold 15px/18px Arial;
 height: 18px;
 margin: 0 5px 0 5px;
 padding: 0;
 position: relative;
 text-align: center;
 text-decoration: none;
 width: 140px;

 /* 
 Note: The Below 4 Lines are necessary for ellipsis to work.
 */

 display: block;/* Change it as per your requirement. */
 overflow: hidden;
 text-overflow: ellipsis;
 white-space: nowrap;
}

对于表格单元格,display: block; 将打破它,因此您需要使用 max-width: 100px;。请注意,width起作用。不知道为什么不。
a
alextanhongpin

我遇到了同样的问题,似乎上述解决方案都不适用于 Safari。对于非 safari 浏览器,这很好用:

display: block; /* or in-line block according to your requirement */
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;

对于 Safari,这是适合我的。请注意,用于检查浏览器是否为 Safari 的媒体查询可能会随着时间的推移而改变,因此如果它不适合您,请修改媒体查询。使用 line-clamp 属性,也可以在网络中有多个带有省略号的行,请参阅 here

// Media-query for Safari-only browser.
@media not all and (min-resolution: 0.001dpcm) {
  @media {
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    display: -webkit-box;
    white-space: normal;
  }
}

B
Bhojendra Rauniyar

display: block;display: inline-block; 添加到您的 #User_Apps_Content .DLD_App a

demo


我刚刚检查过,它正在切断:/
T
Tim Vermaelen

还要确保 IE10 及更低版本的 word-wrap 设置为 normal

下面引用的标准将此属性的行为定义为依赖于“text-wrap”属性的设置。但是,wordWrap 设置在 Windows Internet Explorer 中始终有效,因为 Internet Explorer 不支持“text-wrap”属性。

因此,在我的例子中,word-wrap 设置为 break-word(继承还是默认?)导致 text-overflow 在 FF 和 Chrome 中工作,但在 IE 中不起作用。

ms info on word-wrap property


T
Tushar

anchor,span...标签默认为 内联元素,如果内联元素 width 属性不起作用。因此,您必须将元素转换为 inline-blockblock level 元素


P
Penny Liu

bootstrap 4 中,您可以添加一个 .text-truncate 类来截断带有省略号的文本。

快棕色狐狸跳过懒狗。


N
NVRM

必须包含

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

不得包含

display: inline

应该包含

position: sticky

S
Sanjib Debnath

您只需添加一行 css:

.app a {
   display: inline-block;
}

B
Bidisha Das

还请确保直接封闭元素具有固定宽度,并且您要应用省略号的跨度具有 display:block


J
Jeremy Caney

只需添加包含该段落的 div

white-space: nowrap 
width: 50px; 
overflow: hidden;
text-overflow: ellipsis; 
border: 1px solid #000000;

T
T04435

我必须在响应时制作一些长描述椭圆(只走一条车道),所以我的解决方案是让文本换行(而不是 white-space: nowrap),而不是固定宽度,我添加了固定高度:

跨度{显示:内联块;线高:1rem;高度:1rem;溢出:隐藏; // 可选线宽度:75%;背景:绿色; // 空白:正常;默认 } Lorem ipsum dolor sit amet, consectetur adipisicing elit。 Commodi quia quod reprehenderit saepe 坐。 Animi deleniti distinctio dolorum iste molestias reiciendis saepe。 Ea eius ex, ipsam iusto laudantium natus obcaecati quas rem repellat temporibus!别名 atque deserunt dignissimos dolor earum、eligendi eveniet exercitationem natus non、odit sint sat tempore voluptate。 Commodi culpa ex facere id minima nihil nulla omnis praesentium quasi quia quibusdam recusandae repellat sequi ullam, voluptates。 Aliquam commodi debitis delectus magnam nulla,omnis sequi sint unde voluptas voluptatum。 Adipisci aliquam deserunt dolor enim facilis libero,maxime Molestias,nemo neque non nostrum placeat reprehenderit,rerum ullam vel? A atque autem consectetur cum, doloremque doloribus fugiat hic id iste nemo nesciunt officia quaerat quibusdam quidem quisquam similique sit tempora vel。澳大利亚的Accusamus aspernatur


M
Manoj Selvin

将这些写在你的 CSS 规则中。

display: block; /* or in-line block according to your requirement */
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;

你也可以看看这个,jsfiddle.net/ManiAnand/5v6pfy9w
如果可以指定宽度不会使我的答案错误。您刚刚在我的答案中添加了显示块,我写了一个片段,而不是整个代码,所以可以添加其他内容但与问题无关!您能否具体说明我的答案不正确?
需要指定宽度以及显示。如果宽度为百分比或未指定且未设置为硬单位,则溢出将不受约束且不起作用。请参阅已接受的答案。
宽度已由操作设置。我给了片段以添加他的代码
J
Jeremy Caney

您还可以在此选择器中添加 float:left;

#User_Apps_Content .DLD_App a