6

如果我给一个 element 的所有孩子white-space: nowrap,空白不会在它应该在 webkit 中的元素之间中断(和闪烁):

jsfiddle.net/VJyn2

.pairs {
    width: 180px;
    overflow: hidden;
}
.pairs > span {
    white-space: nowrap;
}
<div class="pairs">
    <span>
        <strong>bread:</strong>
        <em>crust</em>
    </span>
    <span>
        <strong>watermelon:</strong>
        <em>rind</em>
    </span>
    ...
</div>

CSS 的目的是将单词对保持在一起,但允许文本在<span>元素之间中断。这在 IE 和 FireFox 中按预期工作。

在 IE 和 FF 中按预期工作

但是,在基于 Webkit 的浏览器(safari、chrome、opera)中,不是将太长的跨度推送到下一行,而是将跨度截断。

文本在 webkit 中被剪辑

这是 webkit 中的一个错误(和闪烁),对吧?有解决方法吗?

4

4 回答 4

4

截至今天(Chrome v42),这个错误不再是一个问题。Chrome 已修复渲染错误,因此不再需要以下解决方法。

这里没什么好看的,离开。


有几种方法可以解决此错误。这里有三个选项:

CSS 技术

使用float: left. 除了使其正确包装外,这还将折叠跨度之间的空白,因此margin-right还要添加 a 。

.pairs > span {
    white-space: nowrap;
    float: left;
    margin-right: 0.5em;
}

jsfiddle.net/VJyn2/3

HTML技术

在每个 之间添加一个零宽度空格( U+200b) <span>

<div class="pairs">
    <span>
        <strong>bread:</strong>
        <em>crust</em>
    </span>
    &#x200b;
    <span>
        <strong>watermelon:</strong>
        <em>rind</em>
    </span>
    &#x200b;
    <span>
        <strong>banana:</strong>
        <em>peel</em>
    </span>
    ...
</div>

jsfiddle.net/VJyn2/2

更好的 HTML 技术

事实证明,要使其正常工作,只需将 span 元素放在 HTML 中的同一行:

<div class="pairs">
    <span><strong>bread:</strong> <em>crust</em></span>
    <span><strong>watermelon:</strong> <em>rind</em></span>
    <span><strong>banana:</strong> <em>peel</em></span>
    ...
</div>

jsfiddle.net/VJyn2/7

于 2014-01-18T00:28:16.243 回答
0
try this:

.pairs {
width: 180px;
overflow: hidden;
}
.pairs > span {
display:block;
}
于 2014-01-18T10:21:29.453 回答
0

添加display: inline-block;相邻的跨度元素应该有助于:

<span style='display: inline-block;'>
于 2015-05-11T21:25:56.737 回答
-1

只需删除空格属性并使用自动换行即可。

在其工作下方复制粘贴 css:

.pairs {
width: 180px;
overflow: hidden;
}

.pairs > span {
word-wrap:break-word;
}
于 2014-01-18T09:19:57.933 回答