То, что происходит, - это то, что элементы LI плавают, и, следовательно, выходят за пределы UL. Обычно вы решаете эту проблему, очищая свои элементы LI с помощью элемента, использующего свойство clear: left;
в CSS, когда вы хотите очистить плавающее.
Но так как это в неупорядоченном списке, вероятно, лучше использовать CSS-хак под названием "clearfix" на вашем UL-элементе, чтобы решить эту проблему. Таким образом, элемент UL будет следовать за элементами LI по высоте.
Пример: http://jsfiddle.net/mikaelbr/JkGRj/
Примечание. Существует множество версий хака для исправления ошибок. Выполните поиск в Google, чтобы найти некоторые из них, если вам интересно узнать, как они работают.