ऐसा करने का सही तरीका ब्रेक-इन सीएसएस संपत्ति के साथ है :
.x li {
break-inside: avoid-column;
}
दुर्भाग्य से, अक्टूबर 2019 तक, यह फ़ायरफ़ॉक्स में समर्थित नहीं है , लेकिन यह हर दूसरे प्रमुख ब्राउज़र द्वारा समर्थित है । क्रोम के साथ, मैं उपरोक्त कोड का उपयोग करने में सक्षम था, लेकिन मैं फ़ायरफ़ॉक्स ( बग 549114 देखें ) के लिए कुछ भी काम नहीं कर सका ।
यदि आप आवश्यक हो तो वर्कअराउंड फ़ायरफ़ॉक्स के लिए कर सकते हैं यदि आपकी गैर-ब्रेकिंग सामग्री को एक तालिका में लपेटना है, लेकिन यह वास्तव में बहुत ही भयानक समाधान है, अगर आप इसे टाल सकते हैं।
अपडेट करें
ऊपर उल्लिखित बग रिपोर्ट के अनुसार, फ़ायरफ़ॉक्स 20+ page-break-inside: avoidएक तत्व के अंदर कॉलम के टूटने से बचने के लिए एक तंत्र के रूप में समर्थन करता है, लेकिन नीचे दिया गया कोड स्निपेट प्रदर्शित करता है कि यह अभी भी सूचियों के साथ काम नहीं कर रहा है:
.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>
जैसा कि अन्य उल्लेख करते हैं, आप कर सकते हैं overflow: hiddenया display: inline-blockयह मूल प्रश्न में दिखाई गई गोलियों को हटा देता है। आपके लक्ष्य क्या हैं, इसके आधार पर आपका समाधान अलग-अलग होगा।
UPDATE 2 चूंकि फ़ायरफ़ॉक्स टूटने से रोकता है display:tableऔर display:inline-blockएक विश्वसनीय लेकिन गैर-शब्दार्थ समाधान प्रत्येक सूची आइटम को अपनी सूची में लपेटना और वहां शैली नियम लागू करना होगा:
.x {
-moz-column-count: 3;
-webkit-column-count: 3;
column-count: 3;
width: 30em;
}
.x ul {
margin: 0;
-webkit-column-break-inside: avoid; /* Chrome, Safari */
page-break-inside: avoid; /* Theoretically FF 20+ */
break-inside: avoid-column; /* 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>