Как выровнять этот промежуток справа от div?


152

У меня есть следующий HTML:

<div class="title">
    <span>Cumulative performance</span>
    <span>20/02/2011</span>
</div>

с этим CSS:

.title
{
    display: block;
    border-top: 4px solid #a7a59b;
    background-color: #f6e9d9;
    height: 22px;
    line-height: 22px;
    padding: 4px 6px;
    font-size: 14px;
    color: #000;
    margin-bottom: 13px;
    clear:both;
}

Если вы проверите это jsFiddle: http://jsfiddle.net/8JwhZ/

Вы можете видеть, что Имя и Дата склеены. Есть ли способ, чтобы я мог выровнять дату по правому краю? Я попробовал float: right;на втором, <span>но он испортил стиль, и выдвигает дату за пределы заключающего div


2
Вы можете изменить HTML?
Phrogz

3
Если вы хотите, чтобы что-то плавало относительно другого объекта, поплавок должен быть перед не всплывающим. Дата должна быть перед заголовком и плавающей справа.
Джош Ковач

Ответы:


246

Если вы можете изменить HTML: http://jsfiddle.net/8JwhZ/3/

<div class="title">
  <span class="name">Cumulative performance</span>
  <span class="date">20/02/2011</span>
</div>

.title .date { float:right }
.title .name { float:left }

CSS упрощен и правильно очищен: оба должны быть добавлены. Также скрипка содержит очень хрупкое решение: jsfiddle.net/8JwhZ/2090
Рисорд

9
Или , если вы хотите его рядный (я сделал)<span style="float: right">
Марк

52

Работа с поплавками немного грязная:

Это, как и многие другие «тривиальные» трюки макета, можно сделать с помощью flexbox.

   div.container {
     display: flex;
     justify-content: space-between;
   }

В 2017 году я думаю, что это предпочтительное решение (с плавающей точкой), если вам не нужно поддерживать устаревшие браузеры: https://caniuse.com/#feat=flexbox

Проверьте, как отличается использование float от flexbox («может включать несколько конкурирующих ответов»): https://jsfiddle.net/b244s19k/25/ . Если вам все еще нужно придерживаться float, я, конечно, рекомендую третью версию.


Это тот, который я решил использовать, имейте в виду, чтобы также установить float: left;и float: right;в промежутках, содержащих элементы, которые вы хотите разместить.
Побежал Лотем

1
Основная идея этого ответа заключается в том, что «float считаются вредными», и вы никогда не должны их использовать (хорошо, конечно, есть редкие исключения). Так вы можете уточнить, почему вы думаете, что это хорошая идея?
Рисорд

1
Я думал, что это floatбыло необходимо во внутренних элементах, потому что я думал, что это определено в примере скрипки для них, но для #testDнего не определено. Виноват!
Побежал Лоттем

25

Альтернативным решением для поплавков является использование абсолютного позиционирования:

.title {
  position: relative;
}

.title span:last-child {
  position: absolute;
  right: 6px;   /* must be equal to parent's right padding */
}

Смотрите также скрипку .


5

Вы можете сделать это без изменения HTML. http://jsfiddle.net/8JwhZ/1085/

<div class="title">
<span>Cumulative performance</span>
<span>20/02/2011</span>
</div>

.title span:nth-of-type(1) { float:right }
.title span:nth-of-type(2) { float:left }

4

Решение с использованием flexbox без justify-content: space-between.

<div class="title">
  <span>Cumulative performance</span>
  <span>20/02/2011</span>
</div>

.title {
  display: flex;
}

span:first-of-type {
  flex: 1;
}

Когда мы используем flex:1первое <span>, оно занимает все оставшееся пространство и перемещает второе <span>вправо. Скрипка с этим решением: https://jsfiddle.net/2k1vryn7/

Здесь https://jsfiddle.net/7wvx2uLp/3/ вы можете увидеть разницу между двумя подходами flexbox: flexbox with justify-content: space-betweenи flexbox with flex:1на первом <span>.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.