voglio creare questo layout:Ogni articolo di avere la stessa larghezza come l'elemento più ampia
Quando un elemento non rientra nel contenitore, possiamo passare alla riga successiva:
Quando il contenitore è molto piccolo rispetto al punto più ampio, possiamo avvolgere il contenuto di multilinee
È molto semplice con Javascript, ecco l'esempio https://jsfiddle.net/oucxsep4/.
var choices = document.querySelectorAll('li');
var maxWidth = 0;
// read
for (i = 0; i < choices.length; ++i) {
maxWidth = Math.max(maxWidth, choices[i].offsetWidth)
};
// write
for (i = 0; i < choices.length; ++i) {
choices[i].style.width = maxWidth + "px";
};
ul{
margin: 0;
padding: 0;
list-style: none;
}
li{
background: red;
float: left;
margin: 5px;
}
<ul>
<li>first choice</li>
<li>choice</li>
<li>This is the wider choice</li>
<li>other choice</li>
</ul>
E 'possibile farlo senza usare Javascript, solo i CSS? Ho provato con flexbox
senza successo.
Flexbox non ha alcuna nozione di griglia. Gli oggetti con diverse linee di flex si comportano in modo indipendente, quindi non penso che tu possa ottenere questo risultato con la flexbox. – Oriol
È un duplicato che risponde alla tua domanda? https://stackoverflow.com/questions/42656183/how-to-set-flex-items-to-equal-width-according-to-the-item-with-the-longest-cont/42659167 –