Оба ответа не полные.
1) display: table-cell
свойства задать нужно ячейкам(для ul не нужно задавать display: table)
li {
display: table-cell;
width: 1%;
}
При этом будет глючить при адаптиве в Safari некоторых версий(
подробнее)
2) text-align: justify;
свойство работает только если есть как минимум 2 строки. Значит нужно сымитировать 2-ую строчку при помощи псевдоэлемента. Из-за этого появится ненужный отступ снизу. Убрать можно либо установив для меню высоту, либо line-height: 0; (font-size: 0 очень глючный, его ставить не советую). Потом line-height нужно будет явно задать для li.
Задать высоту - наилучший вариант, т.к. в варианте с line-height, если нужна поддержка Opera 10-11, то в них надо еще и font-size 0.5px задавать. И все равно 1px отступ снизу останется. А с высотой проблем нет.
код:
ul {
text-align: justify;
text-justify: distribute-all-lines; /* IE */
height: 40px; /* (либо line-height: 0;) */
}
ul: after {
display: inline-block;
width: 100%;
height: 0;
}
li {
display: inline-block;
vertical-align: top; /* (если задали line-height: 0 для ul, то тут нужно перезадать line-height)*/
}