【问题标题】:CSS text ellipsis when using variable width divs使用可变宽度 div 时的 CSS 文本省略号
【发布时间】:2012-09-20 22:08:38
【问题描述】:

我想知道当父 div 和相邻 div 没有足够的空间时,是否有任何方法可以让浮动 div 中的文本获得省略号。例如:

<style>
.parent-div {
    width: 100%;
    border: 1px;
    padding: 4px;
}
.text-div {
    float: right;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;    
}
.icon-div {
    float: left;
}
</style>
<div class="parent-div">
  <div class="text-div">This is text I'd like to truncate when space doesn't permit</div>
  <div class="icon-div">X</div>
</div>

到目前为止,如果我打开浏览器窗口,父 div 将折叠,然后 text-div 中的空白将消失,但当没有更多空间时,省略号永远不会出现。

我唯一能想到的就是在窗口调整大小并在 text-div 上动态设置新的固定宽度时触发一个事件,但这只是感觉不雅,尤其是考虑到填充和其他相邻的工件我必须减去得到适当的宽度。

对这个有什么想法吗?

这是一个 jsFiddle 演示:http://jsfiddle.net/Blender/kXMz7/

【问题讨论】:

  • 如果您不关心支持旧版浏览器,您可以使用 flexbox 让这变得非常简单:jsfiddle.net/Blender/kXMz7/1
  • 完美的搅拌机!我积极不支持旧浏览器,所以效果很好。 :) 显然它放在桌子里时不起作用,但我可以解决这个问题。谢谢!如果您单独发布答案,我会将其标记为正确的。

标签: css html css-float ellipsis


【解决方案1】:

您可以使用 CSS3 的灵活框布局非常直观地做到这一点:

.parent-div {
    display: flex;
}

.text-div {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;    

    min-width: 0;
}

.icon-div {
    flex: 1;
}​

演示:http://jsfiddle.net/Blender/kXMz7/1/

【讨论】:

  • 完美运行!谢谢搅拌机!
  • +1 因为该解决方案完美运行。尽管请注意,灵活框布局仍处于候选推荐阶段,并未得到广泛支持。它将在带有供应商前缀的 chrome、firefox、safari 中工作。 Internet Explorer 仅在 IE10 中开始支持此功能。 caniuse.com/flexbox
  • 一直在寻找这个答案!谢谢:-)
  • 对我不起作用。我确实通过修改它让它与你的代码一起工作。我将用于文本的 div 的宽度设置为 0。
  • 谢谢。这复制了我在使用 flex 布局和省略号时遇到的类似问题。问题是这个 sn-p 在 iOS 上的 Safari 上不起作用(我正在尝试 iOS 11.4)。
【解决方案2】:

我的公司还不支持 CSS3,但我能够通过其他解决方案解决问题。通过将float 属性仅应用于图标 div 并将其放在 HTML 中的首位,另一个 div 将保持垂直对齐,同时在没有足够空间时也会截断。

示例: (右侧图标)http://jsfiddle.net/qftWN/,(左侧图标)http://jsfiddle.net/Nr2NN/

【讨论】:

  • 谢谢!这个巧妙的技巧很有效,为我省去了很多麻烦。 :)
  • 有趣的是,这确实要求浮动元素在截断的div之前出现在前面
猜你喜欢
  • 2015-02-03
  • 2013-08-05
  • 2015-03-11
  • 2014-02-06
  • 2021-06-20
  • 2017-11-22
  • 1970-01-01
  • 2013-12-31
相关资源
最近更新 更多