text-overflow в сочетании с flexbox не работает [дубликат]
этот вопрос уже есть ответ здесь:
у меня есть контейнер шириной 300 пикселей с двумя изогнутыми дивами внутри.
Второй имеет ширину 100px, а другой должен занимать оставшееся пространство.
Когда я помещаю текст шире, чем оставшиеся 200px в первом div, он переполняется, и я могу использовать overflow: hidden
и text-overflow: ellipsis
добавить ...
когда текст переполняет.
Когда я ставлю h1
тег в первом div и добавить overflow
и text-overflow
должен создать тот же эффект.
И это (в Chrome), но в IE и Firefox div становится больше, и многоточие не работает.
Когда я удаляю дополнительный h1
layer и обновите css соответственно, описанное поведение работает так, как ожидалось.
или посмотрите на мой JSFiddle
body{
display: flex;
}
#container{
display: flex;
flex-basis: 300px;
overflow: hidden;
}
#content{
display: block;
height: 300px;
background-color: red;
flex-grow: 1;
flex-shrink: 1;
}
h1, h2{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
#menu{
display: flex;
flex-grow: 0;
height: 300px;
background-color: blue;
flex-shrink: 0;
}
<div id="container">
<div id="content">
<h1>HEADER1 HEADER1 HEADER1 HEADER1 HEADER1 HEADER1 HEADER1<h1>
</div>
<div id="menu">xcvcxcxvcvxcvzxczxczgd</div>
</div>
2 ответов
добавить это:
#content {
min-width: 0;
}
body{
display: flex;
}
#container{
display: flex;
flex-basis: 300px;
overflow: hidden;
}
#content{
display: block;
height: 300px;
background-color: red;
flex-grow: 1;
flex-shrink: 1;
min-width: 0;
}
h1, h2{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
#menu{
display: flex;
flex-grow: 0;
height: 300px;
background-color: blue;
flex-shrink: 0;
}
<div id="container">
<div id="content">
<h1>HEADER1 HEADER1 HEADER1 HEADER1 HEADER1 HEADER1 HEADER1</h1>
</div>
<div id="menu">xcvcxcxvcvxcvzxczxczgd</div>
</div>
вам это нужно, потому что модуль Flexbox изменил начальное значение min-width
:
4.5 подразумеваемый минимальный размер элементов Flex
чтобы обеспечить более разумный минимальный размер по умолчанию для гибкий график работы пунктов, эта спецификация вводит новый авто значение в качестве начального значение мин-ширина и мин-высота свойства, определенные в В CSS 2.1.
ваша проблема здесь с содержимым div, display: block; свойство, похоже, устраняет эффект отображения flex в IE, когда я изменил его на display: flex; он работал.
кажется также, что содержимое переполняется относительно тела, которое также отображается:flex из-за flex-basis: 300px; в контейнере, и элемент h1 относительно элемента #content не переполняется, поэтому многоточие не работает.
кажется, работа над firefox версии 29.0, обратите внимание, что поведение flex полностью suuported, начиная с firefox 28+,
Регистрация http://caniuse.com/#feat=flexbox дополнительная информация