Запрет на перенос текста между колонками

Когда текст разбивается на колонки, то браузер пытается равномерно распределить содержимое блока по указанному количеству колонок. Для сплошного текста это может быть приемлемо, но в списках это выглядит неопрятно.

Обычное распределение текста между колонками

Можно запретить переносить содержимое элемента списка в следующую колонку, если обернуть его в блок со следующими стилями:

display: inline-block;
vertical-align: top;
width: 100%; /* опционально */

Элементы списка не разбивается между колонками

Ключевым правилом тут является display: inline-block. Вертикальное выравнивание нужно, чтобы маркер списка располагался в правильном месте.

Выставлять ширину такой обёртке не обязательно, так как элемент списка в любом случае создаст блок.

Решение без дополнительного элемента

В комментариях были предложены ещё несколько решений этой задачи. Мне нравится вариант без обёртки.

  -webkit-column-break-inside: avoid;
            page-break-inside: avoid; /* Makes effect only in Firefox */
                 break-inside: avoid; /* IE10+, Opera 11.1—12.1 */