我不知道为什么这个简单的 CSS 不起作用...
.app a { 高度:18px;宽度:140px;填充:0;溢出:隐藏;位置:相对;边距:0 5px 0 5px;文本对齐:居中;文字装饰:无;文本溢出:省略号;空白:nowrap;颜色:#000; }
应该在第四次“测试”前后中断
display: flex;
。
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
接受的答案很棒。但是,您仍然可以使用 %
宽度并达到 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%
转换为类似于 800px
的 1000px
宽度容器。因此,不要使用 width: [YOUR PERCENT]%
,而是使用 width: calc([YOUR PERCENT]%)
。
因此,如果您因为在尝试使省略号在 display: flex
容器内工作时遇到问题而遇到此问题,请尝试将 min-width: 0
添加到溢出其父容器的最外层容器,即使您已经为其设置了 overflow: hidden
并且看看这对你有用。
aj-foster 提供的有关此 codepen 的更多详细信息和工作示例。在我的情况下完全成功了。
display: flex
容器中的 position: sticky
元素的解决方案。
body
上将 display
设置为 grid
。为了解决这个问题,我必须在网格项目上设置 min-length: 0;
(在我的例子中是 body 的孩子)
我一直有这个问题,我想要一个可以轻松使用动态宽度的解决方案。解决方案使用 css 网格。这是代码的样子:
.parent { 显示:网格;网格模板列:自动 1fr; } .dynamic-width-child { 空白:nowrap;文本溢出:省略号;溢出:隐藏; } .fixed-width-child { white-space: nowrap; }
包括在省略号起作用的信息之后写的四行
.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
将不起作用。不知道为什么不。
我遇到了同样的问题,似乎上述解决方案都不适用于 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;
}
}
还要确保 IE10 及更低版本的 word-wrap
设置为 normal。
下面引用的标准将此属性的行为定义为依赖于“text-wrap”属性的设置。但是,wordWrap 设置在 Windows Internet Explorer 中始终有效,因为 Internet Explorer 不支持“text-wrap”属性。
因此,在我的例子中,word-wrap
设置为 break-word(继承还是默认?)导致 text-overflow
在 FF 和 Chrome 中工作,但在 IE 中不起作用。
anchor
,span
...标签默认为 内联元素,如果内联元素 width
属性不起作用。因此,您必须将元素转换为 inline-block
或 block level
元素
必须包含
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
不得包含
display: inline
应该包含
position: sticky
您只需添加一行 css:
.app a {
display: inline-block;
}
还请确保直接封闭元素具有固定宽度,并且您要应用省略号的跨度具有 display:block
只需添加包含该段落的 div
white-space: nowrap
width: 50px;
overflow: hidden;
text-overflow: ellipsis;
border: 1px solid #000000;
我必须在响应时制作一些长描述椭圆(只走一条车道),所以我的解决方案是让文本换行(而不是 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
将这些写在你的 CSS 规则中。
display: block; /* or in-line block according to your requirement */
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
您还可以在此选择器中添加 float:left;
:
#User_Apps_Content .DLD_App a
不定期副业成功案例分享
white-space: nowrap
实际上不是必需的。即使没有它,我们仍然可以看到椭圆。对于多行text-overflow
,请参阅 this SOwhite-space: nowrap
是必需的。width
。您需要做的就是设置一个white-space: nowrap;
并且它工作得很好。