【问题标题】:How do you style text that overflows?您如何设置溢出的文本样式?
【发布时间】:2016-08-06 08:23:48
【问题描述】:

我有一个动态填充的列格式的无序列表,每个<li> 通常只有一两个词,但偶尔会出现更长的列表项。为了保留我的专栏,我选择用省略号隐藏这些较长项目的多余文本:

li {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

但我仍然想让用户访问这些项目,所以我创建了一个悬停样式,如下所示:

li:hover {
  overflow: visible;
}

这会将文本显示在列之间的空间中,但在到达相邻的<li> 时会停止。我想优先考虑悬停的<li>,使其显示在其他对象上方并具有不透明的背景。玩弄z-index 并没有成功。

这是一个小提琴:https://jsfiddle.net/9p7qeon2/

【问题讨论】:

    标签: css overflow ellipsis css-multicolumn-layout


    【解决方案1】:

    您遇到的问题似乎是由于列的宽度固定造成的。示例:column-width: 200px 由于您在子项上使用悬停,您将无法使用纯 CSS 更改父项的宽度。您必须使用 jQuery 或 .addClass 到 UL(父)元素,然后使用类似:ul.active { column-width: 300px; },但这将对所有其他元素产生不良影响。

    您会发现以这种方式使用固定宽度会在不同的浏览器中出现很多问题,例如您的问题会因使用的浏览器而有所不同:

    • Firefox 将显示全文但不会显示背景颜色。
    • Chrome 和 MS Edge 将显示背景颜色但不显示全文...坦率地说这是正确的,因为容器仅限于 200px。我不相信浏览器支持 min-column-width 并且我的测试没有解决这个问题。

    您可以使用固定百分比的浮点数,该百分比将显示在较大的屏幕上,然后隐藏在较小的屏幕上。请参阅为您制作的JSFiddle,显然此代码需要调整以符合您的要求,但其方向正确。

    总结...问题是您将 200px 设置为宽度...要覆盖该宽度,您必须使用 min-widthposition: fixedposition: absolute。我现在能想到的就这些了。

    【讨论】:

    • 我认为column-width 没有width 严格。我看到一些参考资料说您可以将其视为min-width。根据 w3: 描述了最佳的列宽。实际的列宽可能更宽(以填充可用空间),也可能更窄(仅当可用空间小于指定的列宽时)。 w3.org/TR/css3-multicol/#column-width
    【解决方案2】:

    我这样做的方法是在 LI 中添加一个跨度,然后在悬停时将跨度变为 position:absolute。有了它,您可以控制全文的显示方式和样式。唯一的缺点是 LI 需要一个高度,以免由于跨度变得绝对而失去其高度。 Check out the fiddle

    【讨论】:

    • 这是个好主意。您的小提琴在 Firefox、Opera 和 IE 11 中运行良好,但 Chrome 会出现一些奇怪的闪烁并将其转储到内容的左下角。知道为什么吗?
    • 您运行的是哪个版本的 chrome?我正在运行 50.0.2661.75 m,但没有看到这个问题。但是如果我不得不猜测它必须在 li 元素本身中添加一个position:relative。这是唯一对我有意义的事情。因为我相信跨度对于身体来说是绝对的,而不是它的父 li。
    • 我跑的是49.0.2623.112 m,但我刚刚更新到50.0.2661.75 m,闪烁还在。我截取了屏幕截图,以便您可以看到我所看到的。 link我更新的小提琴(视频中显示的那个)在这里:link这个问题显然与浏览器正在执行的列计算有关。它想把绝对定位的跨度放在他们去的地方,如果它是一个单独的列的话。
    • ugg -- 抱歉,我不知道 sendvid.com 是一个垃圾视频网站:\ here's a better link to the video
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多