Элементы CSS3 flex и grid должны решать эти проблемы, но стандартная поддержка остается ненадежной с 2013 года.
Возвращение в реальный мир.Я не думаю, что это возможно сделать чисто в CSS2.1 (IE8 +) без пиксельных взломов.Дело в том, что выравнивание текста контролируется родительским элементом, и так как два якоря имеют общий родительский элемент, они либо выравниваются по левому или правому краю.И justify не работает в последней строке.
Если вы можете немного пострадать от дополнительного HTML, есть два подхода:
1) Добавьте еще один встроенный, который гарантированно переносит строку,а затем попытайтесь скрыть пустую строку.Это позволяет использовать выравнивание текста на родительском элементе.
<p>
<a href="#" class="link">link</a>
<a href="#" class="link link-alt">link alt</a>
<span class="boom"></span>
</p>
<style type="text/css">
p {
padding: 20px;
background: #eee;
text-align: justify
}
.link {
display: inline-block;
padding: 10px;
background: #ddd;
}
.link-alt {
padding: 20px;
}
span {
display: inline-block;
height: 0;
width: 100%
}
</style>
Плюсы: работает с любым количеством встроенных блоков, а не только с двумя.Требуется лишь немного дополнительного HTML.
Минусы: требуется дополнительное усилие, чтобы скрыть последнюю (пустую) строку текста (установка встроенного блока внутри него на 0 высоту вам не поможет), и выпридется возиться с полями или что-то еще, чтобы это действительно работало.Дальнейшее обсуждение: Как * действительно * оправдать горизонтальное меню в HTML + CSS?
2) Добавьте еще один слой встроенных блоков поверх ваших якорных тегов и измените их размер до 50%.,Затем вы можете применить отдельное выравнивание текста, чтобы получить окончательный макет, который вы запросили.Важно, чтобы между двумя встроенными блоками размером до 50% не было разрешено пробелов, иначе вы обернетесь строкой.
<p>
<span class="left">
<a href="#" class="link">link</a>
</span><span class="right">
<a href="#" class="link link-alt">link alt</a>
</span>
</p>
<style type="text/css">
p {
padding: 20px;
background: #eee;
}
.link {
display: inline-block;
padding: 10px;
background: #ddd;
}
.link-alt {
padding: 20px;
}
span {
display: inline-block;
width: 50%
}
.left {
text-align: left
}
.right {
text-align: right
}
</style>
Плюсы: создает запрошенный вами макет без загрязнения модели внешнего блока.
Минусы: работает только для двух встроенных блоков (вы можете попытаться расширить его, но это быстро усложняется).Полагается на отсутствие лишних пробелов, которые могут поставить под угрозу вашу красиво отформатированную разметку.