С помощью более современных методов, таких как CSS Grid или Flexbox, это может быть достигнуто. Но мое решение будет с необработанным CSS, чтобы держать на уровне, аналогичном коду OP.
Обе метки должны иметь display: inline-block
, чтобы оба элемента обрабатывались как блочные элементы и оставались на одной строке. Вам также нужно установить width
, чтобы дать им контейнер для работы при настройке размещения текста. Для этого примера мы сделаем width: 50%
.
Примечание: inline-block
элементы, которые занимают полный width: 100%
, приведут к тому, что метки будут находиться в отдельных строках , если вы не измените html, чтобы удалить пробел между элементы. Подробнее об этом поведении здесь и личном CodeSandbox исправления этой ошибки.
Вы заметите, что я также удалил margin-left
и margin-right
из расчета ширины и вместо этого использовал padding
, чтобы получить одинаковое расстояние слева и справа.
HTML:
<body>
<div>
<!-- Remove whitespace between labels to not exceed width: 100% -->
<label>Left side label</label><label>right side label</label>
</div>
</body>
CSS:
div {
color: #ffffff;
background-color: #3f3f3f;
padding: 0 5px;
}
label {
display: inline-block;
width: 50%;
}
label:nth-of-type(1) {
text-align: left; /* Not necessary, but you can explicitly set the behavior you want. */
}
label:nth-of-type(2) {
text-align: right;
}
Codepen