Я хотел бы убедиться, что между переключателем и началом его соседней метки никогда не будет разрыв строки. Тем не менее, я хочу, чтобы текст внутри метки был разрешен для переноса. Это возможно? Вы можете увидеть мои неудачные попытки, предоставив следующий HTML:
<html>
<head>
<style type="text/css">
.box {
border: solid gray 2px;
width: 200px;
margin: 5px;
}
.chopped {
overflow: hidden;
}
</style>
</head>
<body>
Коробки должны быть фиксированной ширины, поэтому длительный контент должен быть обернут, как показано в первом окне ниже. И если кто-то пытается опубликовать смехотворно длинную строку без каких-либо пробелов, нам нужно, чтобы она была усечена, а не выходила за край поля - проблема видна во втором поле:
<div class="box">
<input type="radio"/>
<label>This is a really long string with no spaces</label>
</div>
<div class="box">
<input type="radio"/>
<label>This_is_a_really_long_string_with_no_spaces</label>
</div>
<hr/>
Итак, я добавляю "overflow: hidden", и все немного лучше, но мне все еще не нравится, как второй блок имеет разрыв строки между радиокнопом и его меткой:
<div class="chopped box">
<input type="radio"/>
<label>This is a really long string with no spaces</label>
</div>
<div class="chopped box">
<input type="radio"/>
<label>This_is_a_really_long_string_with_no_spaces</label>
</div>
<hr/>
Если я добавляю <nobr> , радиокнопки находятся рядом с их метками, и поэтому неизменная строка теперь выглядит идеально. Однако это разбивает первую строку (ту, что содержит пробелы), поскольку она больше не обертывается:
<div class="chopped box">
<nobr>
<input type="radio"/>
<label>This is a really long string with no spaces</label>
</nobr>
</div>
<div class="chopped box">
<nobr>
<input type="radio"/>
<label>This_is_a_really_long_string_with_no_spaces</label>
</nobr>
</div>
</body>
</html>