我有一个使用flex的基本布局:
<div class="container">
<div class="left">LongTextWithNoBreaks...</div>
<div class="right">Short text</div>
</div>
左边的div是用flex-grow: 3
定义的,右边的div是flex-grow: 9
定义的。通常,右侧div的大小是左侧div的3倍。然而,当我在左边有一个很长的文本,没有空格时,它在chrome中工作得很好,但在FF(35.0.1)中不太好。
注意:我正在使用word-wrap: break-word;
,这样文本就会中断。
完整代码:
.container {
display: flex;
flex-flow: row wrap;
width: 100%;
word-wrap: break-word;
}
.left {
background: gray;
flex: 3 0 0;
}
.right {
color: #333;
background: green;
flex: 9 0 0;
}
<div class="container">
<div class="left">
supercalifragilisticexpialidocious supercalifragilisticexpialidocioussupercalifragilisticexpialidocioussupercalifragilisticexpialidocioussupercalifragilisticexpialidocious
</div>
<div class="right">
Hello, World!
</div>
</div>
EDIT:我本打算在代码段中使用word-wrap
,而改为使用word-break
。
注意:使用break-all
不是一个好的解决方案,因为它是按字符而不是按单词划分的。word-break
首先尝试按单词打断,必要时只在单词中间打断。
看起来FF中缺少的部分是将min-width: 0
添加到左侧元素。
.container {
display: flex;
flex-flow: row wrap;
width: 100%;
word-wrap: break-word;
}
.left {
background: gray;
flex: 3 0 0;
min-width: 0;
}
.right {
color: #333;
background: green;
flex: 9 0 0;
min-width: 0;
}
<div class="container">
<div class="left">
supercalifragilisticexpialidocious supercalifragilisticexpialidocioussupercalifragilisticexpialidocioussupercalifragilisticexpialidocioussupercalifragilisticexpialidocious
</div>
<div class="right">
Hello, World!
</div>
</div>