使用隐式宽度和无空格换行防止元素拉伸

Prevent element stretching with implicit width and no whitespace wrap

我有一个 HTML 页面,里面有几个 div:

div#given                -- display: block
    div#one              -- display: table
        div#two          -- display: table-row
            div#three    -- display: block
                div#four -- display: block

#given 由第三方提供并具有明确的 width 设置,但该宽度可以通过 JavaScript.

更改

#one#two#three#four 都有隐式宽度。

#three 的样式表如下:

#three
{
    overflow-y: hidden;
}
#three:hover
{
    overflow-y: visible;
}

#four 包含大量文本并完全溢出 #three,但溢出会隐藏直到悬停 #three
现在到 #four 我想应用 text-overflow: ellipsis;,但这似乎只有在也设置了 white-space: nowrap; 时才有效。但是,这将 #three#four 都向左延伸了几千个像素,这绝对不是我想要的。
到目前为止,我还没有找到明确设置 #four 宽度的其他解决方案,这(可能,但非常)非常不切实际,因为 #given 的宽度不固定。

有没有非 JS 的方法可以做到这一点?

这是我在 fiddle 中遇到的问题:https://jsfiddle.net/zquL7sem/3/

我的目标是让红色边框内的区域以蓝线结束,并在文本结束处显示三个点,而不为 #three#four 设置明确的宽度。

非常感谢任何帮助。

如果您使用 display:table 属性元素,元素将根据内容需要进行扩展,例如真正的 table。 你可以用 table-layout:fixedwidth 来解决这个问题。 https://jsfiddle.net/zquL7sem/4/