当前位置: 首页 > 知识库问答 >
问题:

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

周阳波
2023-03-14

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

null

.app a {
  height: 18px;
  width: 140px;
  padding: 0;
  overflow: hidden;
  position: relative;
  margin: 0 5px 0 5px;
  text-align: center;
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #000;
}
<div class="app">
  <a href="">Test Test Test Test Test Test</a>
</div>

null

应该在第4次“测试”前后切断

共有2个答案

应向晨
2023-03-14

公认的答案是令人敬畏的。但是,您仍然可以使用%width并获得text-overflow:ellipsis。解决方法很简单:

display: inline-block; /* for em, a, span, etc (inline by default) */
text-overflow: ellipsis;
width: calc (80%); /* The trick is here! */

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

荆树
2023-03-14

text-overflow:省略号;仅在以下条件为真时有效:

  • 元素的宽度必须以px(像素)为单位进行约束。%中的宽度(百分比)无效。
  • 元素必须设置overflow:hiddenwhite-space:nowrap

这里出现问题的原因是a元素的width没有受到约束。您确实有width设置,但由于元素被设置为display:inline(即默认值),因此它忽略了它,也没有其他东西限制它的宽度。

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

  • 将元素设置为display:inline-blockdisplay:block(可能是前者,但取决于您的布局需要)。
  • 将其容器元素之一设置为display:block并为该元素提供固定的widthmax-width
  • 将元素设置为float:leftfloat:right(可能是前者,但同样,就省略号而言,两者的效果相同)。

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

下面是代码的一个片段,添加了display:inline-block,以显示您的距离有多近。

null

.app a {
  height: 18px;
  width: 140px;
  padding: 0;
  overflow: hidden;
  position: relative;
  display: inline-block;
  margin: 0 5px 0 5px;
  text-align: center;
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #000;
}
<div class="app">
  <a href="">Test Test Test Test Test Test</a>
</div>
 类似资料:
  • 问题内容: 我不知道为什么这个简单的CSS无法正常工作… 应该切断第四次“测试” 问题答案: 仅在满足以下条件时起作用: 元素的宽度必须限制为(像素)。宽度(百分比)无效。 元素必须具有并设置。 您在这里遇到问题的原因是因为您的元素的不受限制。您确实有一个设置,但是因为该元素设置为(即默认值),所以它忽略了它,并且也没有其他任何约束其宽度的方法。 您可以通过执行以下任一操作来解决此问题: 将元素设

  • 问题内容: 我有一条路径列表(由于缺少更好的词,也许面包屑痕迹可以更好地描述它们)。有些值太长而无法在其父项中显示,因此我正在使用。问题在于重要信息在右侧,因此我希望省略号出现在左侧。像这样的ASCII艺术: 请注意,第一行足够短,因此仍保持左对齐,而其他两行又太长,因此省略号出现在左侧。 我更喜欢仅CSS的解决方案,但是如果无法避免,JS很好。如果该解决方案仅适用于Firefox和Chrome,

  • 问题内容: 我在页面上有一个块元素集合。它们都设置了CSS规则的空白,溢出,文本溢出,以便修剪掉溢出的文本并使用省略号。 但是,并非所有元素都会溢出。 无论如何,我可以使用JavaScript来检测哪些元素正在溢出吗? 谢谢。 补充:我正在使用的示例HTML结构。 SPAN元素始终适合单元格,它们应用了省略号规则。我想检测何时将省略号应用于SPAN的文本内容。 问题答案: 很久以前,我需要这样做,

  • 问题内容: 这是我尝试过的: 本质上,当窗口变小时,我希望跨度以省略号缩小。我做错什么了? 问题答案: 您需要具有CSS ,(或)和。

  • 我正在寻找一种在文本中添加省略号的方法,当它超过一定数量的行。我不想使用一个插件,我从另一个答案中找到了一个纯JS代码。但是,省略号“……”应用于每一个元素,即使它没有通过数字的限制。 HTML: CSS: !!我添加了两倍于行高的高度,以使超过两行的文本溢出。如果我想要三条线,我放三倍的线高。 JS: 使用“之前”和“之后”的示例进行编辑: 前:Lorem ipsum dolor sit ame

  • 我无法让工作,我希望有人能发现我找不到的错误。这是我的代码: HTML: CSS: JSFIDLE(JSIDLE):http://jsfiddle.net/59m5e6ex/ 我找到了这个,但据我所知,我的满足了所有要求。