尽管您的问题不是很清楚(没有标记),但您的表单元素(label
s 和input
s )似乎没有包装在各自的容器中并且是独立的。
您仅防止在label
s 上中断,因此input
s 不受该规则的约束。这就是您面临该问题的原因。
最好的解决方案是将您的label-input
集合包装在它们自己的包含div
s 中并应用于break-inside: avoid
这些div
s。
示例:
* { box-sizing: border-box; }
form { -webkit-column-count: 2; -moz-column-count: 2; column-count: 2; }
form > div { -webkit-column-break-inside: avoid; page-break-inside: avoid; break-inside: avoid-column; }
form label, form input { display: inline-block; margin: 4px 0px; }
form input[type=text] { width: 50%; }
<form>
<div>
<input id="chk1" type="checkbox" /><label for="chk1">Mobile</label>
</div>
<div>
<input id="chk2" type="checkbox" /><label for="chk2">Animated</label>
</div>
<div>
<label for="txt1">Input 1:</label><input id="txt1" type="text" />
</div>
<div>
<label for="txt2">Input 2:</label><input id="txt2" type="text" />
</div>
<div>
<label for="txt3">Input 3:</label><input id="txt3" type="text" />
</div>
<div>
<label for="txt4">Input 4:</label><input id="txt4" type="text" />
</div>
<div>
<label for="txt5">Input 5:</label><input id="txt5" type="text" />
</div>
<div>
<label for="txt6">Input 6:</label><input id="txt6" type="text" />
</div>
</form>
小提琴看看调整大小的效果:http: //jsfiddle.net/abhitalks/jd7v0n8e/
注意:上例中的最后一条样式规则是为了防止input
s 在可用空间小于其默认宽度时溢出。
编辑:
(在 Op 的评论之后)
现在您已经提供了标记,这种安排也应该有效。只要您确定所有input
s 都正确包裹在这些label
s 中。
看到这个片段:
* { box-sizing: border-box; }
form{
-webkit-column-count: 2;
column-count: 2;
}
label {
display: block; margin: 2px;
-webkit-column-break-inside: avoid;
page-break-inside: avoid;
break-inside: avoid-column;
}
input {
border: 1px solid green;
width: 50%;
}
<form>
<label>This: <input type="text" /></label>
<label>This is long: <input type="text" /></label>
<label>This: <input type="text" /></label>
<label>This: <input type="text" /></label>
<label>This is much longer than before: <input type="text" /></label>
<label>This: <input type="text" /></label>
<label>This: <input type="text" /></label>
<label>This: <input type="text" /></label>
</form>
还有这个小提琴:http: //jsfiddle.net/abhitalks/38wjpu28/3/
除了您在问题中显示的内容之外,您的标记中似乎还必须发生其他事情。
注意 2:我建议使用包装div
并将label
andinput
分开。如果您稍后需要更改布局,这将允许您更好地控制。(例如,当您需要放在label
上面input
而不是并排时)