У меня есть элемент контейнера, который может иметь переменное количество дочерних элементов, и я хочу масштабировать ширину этих дочерних элементов.
Я установил простой элемент:
https://plnkr.co/edit/ef0AGPsK7FJJyBqgWuMi?p=preview
В этом элементе вы можете уменьшить DOM, а элементы name
и number
будут использовать их многоточие, чтобы соответствовать содержимому в родительском элементе.Это нормально.
Но когда вы увеличиваете DOM, вы видите, что дочерние элементы распределены так, что они поровну разделены по родительскому элементу.это из-за flex: 1
.Но я бы хотел, чтобы элементы контейнера были максимальной шириной, необходимой для правильного отображения содержимого, а не для заполнения родительского элемента контейнера.
/* Styles go here */
.conversation-container {
display: flex;
width: calc(100% - 20px);
border: 1px solid black;
background-color: green;
padding: 10px;
}
.conversation-container .conversation-holder {
flex: 1;
background-color: yellow;
padding: 5px;
border: 1px solid white;
margin-right: 5px;
}
.conversation-container .conversation-holder .name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 50%;
display: inline-block;
}
.conversation-container .conversation-holder .number {
float: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 50%;
}
.conversation-container1 {
display: flex;
width: calc(100% - 20px);
border: 1px solid black;
background-color: green;
padding: 10px;
}
.conversation-container1 .conversation-holder {
background-color: yellow;
padding: 5px;
border: 1px solid white;
margin-right: 5px;
}
.conversation-container1 .conversation-holder .name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 50%;
display: inline-block;
}
.conversation-container1 .conversation-holder .number {
float: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 50%;
}
<h1>Scalable content using flex, example 1</h1>
<div class="conversation-container">
<div class="conversation-holder">
<span class="name">Namefrom Someone</span>
<span class="number">555666444213321</span>
</div>
<div class="conversation-holder">
<span class="name">Namefrom Someone</span>
<span class="number">555666444123123</span>
</div>
<div class="conversation-holder">
<span class="name">Namefrom Someone</span>
<span class="number">555666444123321</span>
</div>
</div>
<h1>Scalable content using flex, example 2</h1>
<div class="conversation-container1">
<div class="conversation-holder">
<span class="name">Namefrom Someone</span>
<span class="number">555666444213321</span>
</div>
<div class="conversation-holder">
<span class="name">Namefrom Someone</span>
<span class="number">555666444123123</span>
</div>
<div class="conversation-holder">
<span class="name">Namefrom Someone</span>
<span class="number">555666444123321</span>
</div>
</div>