Der korrekte Weg, dies zu tun, ist mit der break-inside
CSS-Eigenschaft :
.x li {
break-inside: avoid-column;
}
Leider erst ab Oktober 2021, dies wird in Firefox immer noch nicht unterstützt sondern er wird von jedem anderen wichtigen Browser unterstützt . Mit Chrome konnte ich den obigen Code verwenden, aber für Firefox konnte ich nichts erreichen ( Siehe Fehler 549114 ).
Die Abhilfe, die Sie für Firefox tun können, wenn nötig ist, um Ihre nicht-umbrechenden Inhalt in einer Tabelle zu umhüllen, aber das ist eine wirklich, wirklich schreckliche Lösung, wenn Sie es vermeiden können.
UPDATE
Laut dem oben erwähnten Fehlerbericht unterstützt Firefox 20+ page-break-inside: avoid
als Mechanismus zur Vermeidung von Spaltenumbrüchen innerhalb eines Elements, aber der nachstehende Codeausschnitt zeigt, dass dies bei Listen immer noch nicht funktioniert:
.x {
column-count: 3;
width: 30em;
}
.x ul {
margin: 0;
}
.x li {
-webkit-column-break-inside: avoid;
-moz-column-break-inside:avoid;
-moz-page-break-inside:avoid;
page-break-inside: avoid;
break-inside: avoid-column;
}
<div class='x'>
<ul>
<li>Number one, one, one, one, one</li>
<li>Number two, two, two, two, two, two, two, two, two, two, two, two</li>
<li>Number three</li>
</ul>
</div>
Wie bereits von anderen erwähnt, können Sie Folgendes tun overflow: hidden
o display: inline-block
aber dadurch werden die in der ursprünglichen Frage genannten Kugeln entfernt. Ihre Lösung wird von Ihren Zielen abhängen.
UPDATE 2 Da Firefox das Brechen auf display:table
y display:inline-block
Eine zuverlässige, aber nicht semantische Lösung wäre, jedes Listenelement in eine eigene Liste zu packen und die Stilregel dort anzuwenden:
.x {
-moz-column-count: 3;
-webkit-column-count: 3;
column-count: 3;
width: 30em;
}
.x ul {
margin: 0;
page-break-inside: avoid; /* Theoretically FF 20+ */
break-inside: avoid-column; /* Chrome, Safari, IE 11 */
display:table; /* Actually FF 20+ */
}
<div class='x'>
<ul>
<li>Number one, one, one, one, one</li>
</ul>
<ul>
<li>Number two, two, two, two, two, two, two, two, two, two, two, two</li>
</ul>
<ul>
<li>Number three</li>
</ul>
</div>