Bu açıklığı div'in sağına nasıl hizalayabilirim?


152

Aşağıdaki HTML var:

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

bu CSS ile:

.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;
}

Bu js'i kontrol edersenizFiddle: http://jsfiddle.net/8JwhZ/

Adın ve Tarihin birbirine yapıştığını görebilirsiniz. Tarihi sağa hizalamak için bir yol alabilir miyim? Ben float: right;ikinci denedim <span>ama tarzı vida ve tarihi ek div dışında iter


2
HTML'yi değiştirebiliyor musunuz?
Phrogz

3
Bir şeyin başka bir nesneye göre yüzmesini istiyorsanız, şamandıranın şamandıradan önce olması gerekir. Tarih başlıktan önce ve sağa doğru olmalıdır.
Josh Kovach

Yanıtlar:


246

HTML'yi değiştirebiliyorsanız: 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 basitleştirilmiş ve düzgün bir şekilde temizlenmiştir: her ikisi de eklenmelidir. Ayrıca keman çok kırılgan bir çözüm içeriyor: jsfiddle.net/8JwhZ/2090
Risord

9
Veya satır içi istiyorsanız (ben yaptım)<span style="float: right">
Mark

52

Şamandıralarla çalışmak biraz dağınık:

Bu, diğer birçok 'önemsiz' düzen hilesi flexbox ile yapılabilir.

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

2017'de, eski tarayıcıları desteklemeniz gerekmiyorsa, bunun tercih edilen bir çözüm (float üzerinden) olduğunu düşünüyorum: https://caniuse.com/#feat=flexbox

Farklı şamandıra kullanımlarının flexbox ile nasıl karşılaştırıldığını kontrol edin ("bazı rakip cevaplar içerebilir"): https://jsfiddle.net/b244s19k/25/ . Eğer hala şamandıra ile sopa gerekiyorsa tabii ki üçüncü sürümünü tavsiye.


Bu, kullanmayı tercih ettiğim, yerleştirmek istediğiniz öğeleri içeren açıklıkları da ayarlamayı float: left;ve unutmayın float: right;.
Lottem

1
Bu cevabın temel mesajı "şamandıra zararlı olarak kabul edilir" ve bunları asla kullanmamalısınız (tamam bazı nadir istisnalar olduğundan emin olun). Peki bunun neden iyi bir fikir olduğunu düşündüğünüzü açıklayabilir misiniz?
Risord

1
floatİç elemanlarda gerekli olduğunu düşündüm , çünkü onlar için keman örneğinde tanımlandığını düşündüm, ancak #testDtanımlanmadı. Benim hatam!
Lottem

25

Şamandıralar için alternatif bir çözüm mutlak konumlandırma kullanmaktır:

.title {
  position: relative;
}

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

Ayrıca bkz keman .


5

Html üzerinde değişiklik yapmadan bunu yapabilirsiniz. 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 olmadan çözüm 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:1Birincisinde kullandığımızda , <span>kalan tüm alanı kaplar ve ikincisini <span>sağa taşır . Bu çözüm ile Fiddle: https://jsfiddle.net/2k1vryn7/

Burada https://jsfiddle.net/7wvx2uLp/3/ iki flexbox yaklaşımı arasındaki farkı görebilirsiniz: flexbox with justify-content: space-betweenve flexbox with flex:1first <span>.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.