Текст оправдан, только если предложение естественным образом вызывает разрыв строки. Поэтому все, что вам нужно сделать, это, естественно, вызвать разрыв строки и скрыть то, что во второй строке:
CSS:
ul {
text-align: justify;
width: 400px;
margin: 0;
padding: 0;
height: 1.2em;
/* forces the height of the ul to one line */
overflow: hidden;
/* enforces the single line height */
list-style-type: none;
background-color: yellow;
}
ul li {
display: inline;
}
ul li.break {
margin-left: 100%;
/* use e.g. 1000px if your ul has no width */
}
HTML:
<ul>
<li><a href="/">The</a></li>
<li><a href="/">quick</a></li>
<li><a href="/">brown</a></li>
<li><a href="/">fox</a></li>
<li class="break"> </li>
</ul>
Элемент li.break должен находиться в той же строке, что и последний элемент меню, и должен содержать некоторый контент (в данном случае не пробел), в противном случае в некоторых браузерах, если он не находится на той же строке, увидеть небольшой дополнительный пробел в конце вашей строки, и если он не содержит содержимого, он игнорируется и строка не выравнивается.
Протестировано в IE7, IE8, IE9, Chrome, Firefox 4.