我创建了一个问题here
的JSFiddle这适用于Firefox v33和v33.1,但是在34-35中失败了。这适用于Chrome和IE11。它可能是Firefox中的一个错误,但我不确定。基本上我的HTML看起来像这样:
.container {
position: absolute;
width: 150px;
}
.innercontainer {
position: relative;
padding-right: 25px;
margin-bottom: 10px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.outerwrapper {
display: block;
height: 24px;
text-align: center;
font-size: 10px;
line-height: 24px;
margin-bottom: 5px;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
box-orient: horizontal;
-webkit-box-orient: horizontal;
flex-direction: normal;
-ms-flex-direction: normal;
-moz-flex-direction: normal;
-webkit-flex-direction: normal;
}
.wrapper {
flex: 1;
-ms-flex: 1 0 auto;
-moz-flex: 1;
-webkit-flex: 1;
-webkit-box-flex: 1;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
box-orient: horizontal;
-webkit-box-orient: horizontal;
flex-direction: normal;
-ms-flex-direction: normal;
-moz-flex-direction: normal;
-webkit-flex-direction: normal;
background-color: grey;
}
.wrapper span {
display: block;
flex: 1;
-ms-flex: 1;
-moz-flex: 1;
-webkit-flex: 1;
-webkit-box-flex: 1;
text-align: left;
font-size: 10px;
padding: 0 5px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
color: #FFFFFF;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}

<div class="container">
<div class="innercontainer">
<section class="outerwrapper">
<div class="wrapper">
<span>
super long string in here super long string
in here super long string in here
</span>
</div>
</section>
</div>
</div>
&#13;
为被定罪的CSS道歉;它是在一个更大的Web应用程序中,它必须是这样的。
在Chrome中,您可以获得超长字符串...&#34;,在Firefox中只显示整个字符串。
答案 0 :(得分:7)
比其他解决方案更有效(和更直接) - 只需将min-width
设置为0。
.wrapper {
min-width:0;
}
(这比overflow:hidden
更好,因为设置overflow
会使浏览器在引擎盖下创建一个可滚动区域,这会产生内存成本。)
请参阅my answer on this other question了解更多关于为什么在Firefox 34中需要这样做的原因。(它来自Flexbox规范的变更,到目前为止只在Firefox中发布。)
.container {
position: absolute;
width: 150px;
}
.innercontainer {
position: relative;
padding-right: 25px;
margin-bottom: 10px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.outerwrapper {
display: block;
height: 24px;
text-align: center;
font-size: 10px;
line-height: 24px;
margin-bottom: 5px;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
box-orient: horizontal;
-webkit-box-orient: horizontal;
flex-direction: normal;
-ms-flex-direction: normal;
-moz-flex-direction: normal;
-webkit-flex-direction: normal;
}
.wrapper {
flex: 1;
-ms-flex: 1 0 auto;
-moz-flex: 1;
-webkit-flex: 1;
-webkit-box-flex: 1;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
box-orient: horizontal;
-webkit-box-orient: horizontal;
flex-direction: normal;
-ms-flex-direction: normal;
-moz-flex-direction: normal;
-webkit-flex-direction: normal;
background-color: grey;
min-width:0;
}
.wrapper span {
display: block;
flex: 1;
-ms-flex: 1;
-moz-flex: 1;
-webkit-flex: 1;
-webkit-box-flex: 1;
text-align: left;
font-size: 10px;
padding: 0 5px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
color: #FFFFFF;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
&#13;
<div class="container">
<div class="innercontainer">
<section class="outerwrapper">
<div class="wrapper">
<span>
super long string in here super long string
in here super long string in here
</span>
</div>
</section>
</div>
</div>
&#13;
答案 1 :(得分:4)
问题在于Flexible Box Layout引入了Implied Minimum Size of Flex Items:
为flex项提供更合理的默认最小大小,这个 规范引入了新的
auto
值作为初始值 中定义的min-width
和min-height
属性的 CSS 2.1。
auto
值计算为0
,但
在flex item上overflow
main
axis {{3}}上的{{3>},在弹性项目的主轴最小尺寸上指定
属性
在您的情况下,主轴是水平轴。因此,如果您将visible
设置为除overflow-x
之外的任何内容,visible
将计算为min-width
,这是0
引入之前的初始值。
例如,
auto
.wrapper {
overflow: hidden;
}
&#13;
.container {
position: absolute;
width: 150px;
}
.innercontainer {
position: relative;
padding-right: 25px;
margin-bottom: 10px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.outerwrapper {
display: block;
height: 24px;
text-align: center;
font-size: 10px;
line-height: 24px;
margin-bottom: 5px;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
box-orient: horizontal;
-webkit-box-orient: horizontal;
flex-direction: normal;
-ms-flex-direction: normal;
-moz-flex-direction: normal;
-webkit-flex-direction: normal;
}
.wrapper {
flex: 1;
-ms-flex: 1 0 auto;
-moz-flex: 1;
-webkit-flex: 1;
-webkit-box-flex: 1;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
box-orient: horizontal;
-webkit-box-orient: horizontal;
flex-direction: normal;
-ms-flex-direction: normal;
-moz-flex-direction: normal;
-webkit-flex-direction: normal;
background-color: grey;
overflow: hidden;
}
.wrapper span {
display: block;
flex: 1;
-ms-flex: 1;
-moz-flex: 1;
-webkit-flex: 1;
-webkit-box-flex: 1;
text-align: left;
font-size: 10px;
padding: 0 5px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
color: #FFFFFF;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
&#13;