Jak wyrównać ten zakres na prawo od div?


151

Mam następujący HTML:

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

z tym 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;
}

Jeśli zaznaczysz ten jsFiddle: http://jsfiddle.net/8JwhZ/

widać, że nazwa i data są sklejone. Czy istnieje sposób, aby ustawić datę w prawo? Próbowałem float: right;na drugim, <span>ale psuje styl i wypycha datę poza otaczający element div


2
Czy jesteś w stanie zmodyfikować HTML?
Phrogz,

3
Jeśli chcesz, aby coś unosiło się w stosunku do innego obiektu, element pływający musi znajdować się przed elementem niepływającym. Data powinna znajdować się przed tytułem i pływać w prawo.
Josh Kovach,

Odpowiedzi:


246

Jeśli możesz zmodyfikować kod 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 jest uproszczony i odpowiednio czysty: oba powinny zostać dodane. Również skrzypce zawierają bardzo delikatne rozwiązanie: jsfiddle.net/8JwhZ/2090
Risord

9
Lub jeśli chcesz to w tekście (tak zrobiłem)<span style="float: right">
Mark

51

Praca z pływakami jest nieco skomplikowana:

To, podobnie jak wiele innych „trywialnych” sztuczek układu, można zrobić za pomocą flexbox.

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

Myślę, że w 2017 jest to preferowane rozwiązanie (ponad float), jeśli nie musisz obsługiwać starszych przeglądarek: https://caniuse.com/#feat=flexbox

Sprawdź, jak różne zastosowania float wypada w porównaniu z flexboxem („może zawierać konkurencyjne odpowiedzi”): https://jsfiddle.net/b244s19k/25/ . Jeśli nadal musisz trzymać się float, polecam oczywiście trzecią wersję.


To jest ten, którego zdecydowałem się użyć, pamiętaj również o ustawieniu float: left;i float: right;rozpiętościach zawierających elementy, które chcesz rozstawić .
Biegał z Lottem

1
Głównym przesłaniem tej odpowiedzi jest to, że „float są uważane za szkodliwe” i nigdy nie powinieneś ich używać (ok, jasne, że są pewne rzadkie wyjątki). Czy możesz więc wyjaśnić, dlaczego uważasz, że to dobry pomysł?
Risord

1
Pomyślałem, że jest floatto wymagane w elementach wewnętrznych, ponieważ myślałem, że jest to zdefiniowane w przykładzie dla nich na skrzypcach, ale #testDnie jest zdefiniowane. Mój błąd!
Biegał z Lottem

25

Alternatywnym rozwiązaniem dla pływaków jest użycie pozycjonowania bezwzględnego:

.title {
  position: relative;
}

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

Zobacz także skrzypce .


5

Możesz to zrobić bez modyfikowania pliku 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

Rozwiązanie wykorzystujące flexbox bez 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;
}

Kiedy używamy flex:1pierwszego <span>, zajmuje on całą pozostałą przestrzeń i przesuwa drugi <span>w prawo. The Fiddle z tym rozwiązaniem: https://jsfiddle.net/2k1vryn7/

Tutaj https://jsfiddle.net/7wvx2uLp/3/ możesz zobaczyć różnicę między dwoma podejściami flexbox: flexbox z justify-content: space-betweeni flexbox z flex:1pierwszym <span>.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.