Div öğelerini nasıl doğru hizalayabilirim?


352

Html belgemin gövdesi 3 öğe, bir düğme, bir form ve bir tuvalden oluşuyor. Düğmenin ve formun sağa hizalanmasını ve tuvalin sola hizalanmasını istiyorum. Sorun, ilk iki öğeyi hizalamaya çalıştığımda, artık birbirlerini takip etmiyorlar ve bunun yerine yatay olarak yan yana mılar? arada boşluk yok.

#cTask {
  background-color: lightgreen;
}

#button {
  position: relative;
  float: right;
}

#addEventForm {
  position: relative;
  float: right;
  border: 2px solid #003B62;
  font-family: verdana;
  background-color: #B5CFE0;
  padding-left: 10px;
}
<!DOCTYPE html>
<html lang="en">
<head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
  <script type="text/javascript" src="timeline.js"></script>
  <link rel="stylesheet" href="master.css" type="text/css" media="screen" />
</head>

<body bgcolor="000" TEXT="FFFFFF">
  <div id="button">
    <button onclick="showForm()" type="button" id="cTask">
        Create Task
    </button>
  </div>
  <div id="addEventForm">
    <form>
      <p><label>Customer name: <input></label></p>
      <p><label>Telephone: <input type=tel></label></p>
      <p><label>E-mail address: <input type=email></label></p>
    </form>
  </div>
  <div>
    <canvas id="myBoard" width="1000" height="600">
      <p>Your browser doesn't support canvas.</p>
    </canvas>
  </div>
</body>
</html>

Yanıtlar:


338

Hem formu hem de düğmeyi içeren bir div oluşturabilir, ardından div öğesini sağa kaydırarak sağa kaydırabilirsiniz float: right;.


Şamandıra kullanacağımı hiç düşünmemiştim. Denedim margin-left: auto;ama beni şaşırtan işe yaramadı çünkü sağa hizalamaya çalıştığım öğe göreceli.
DFSFOT

463

yüzen Tamam, ama ie6 & 7 ile sorunlu.

margin-left:auto; margin-right:0;iç div'de kullanmayı tercih ederim .


6
@ShellNinja neden? biliyorum 0geçerli, ancak bu yüzden 0px ... biz bir şey öğrenmek bu yüzden tartışmak.
Mart'ta pstanton

29
Üniteyi terk etmek, tarayıcının bu iyileştirme performansını sağlamak için belirli hesaplamaları atlamasına izin verir. Sıfırsa, bir birimi temel alarak düzeni hesaplayan kaynakları neden harcarsınız? Birimden bağımsız olarak sıfır sıfırdır. Şimdiye kadar bu mantığın tarayıcılara yerleştirileceğini düşünebiliriz. bağlantı
ShellNinja

7
katılmıyorum ama performansı çok etkilediğinden şüpheliyim. Düzenle.
Mart'ta pstanton

24
Bunu çalıştıramadım, div hala hizalanmış. Bir keman veya bazı (daha fazla) html / css satırı sağlayabilir misiniz?
Griddo

21
display: block;
Öğenizin

203

Eski cevaplar. Bir güncelleme: flexbox kullanın, şimdi tüm tarayıcılarda hemen hemen çalışıyor.

<div style="display: flex; justify-content: flex-end">
  <div>I'm on the right</div>
</div>

Ve hatta daha da meraklı olabilirsiniz:

<div style="display: flex; justify-content: space-around">
  <div>Left</div>
  <div>Right</div>
</div>

Ve meraklısı:

<div style="display: flex; justify-content: space-around">
   <div>Left</div>
   <div>Middle</div>
  <div>Right</div>
</div>


4
işe yarıyor, ancak ekran istiflemek yerine
küçüldüklerinde

6
Tanımladığınız kesme noktasında esnek yönü satırdan sütuna değiştirmek için bir medya sorgusu eklemeniz gerekir. Bu örnekte yaslama içeriğinizi değiştirmek veya kaldırmak isteyeceksinizdir, aksi takdirde işler sol ve sağ yerine yukarı ve aşağı uzanır.
Michael Bushe

Bu benim için çalıştı. Önceki cevaplar olmadı. "Parlak" kullanma.
Roger

30

Bu soru için diğer cevaplar o kadar iyi değil çünkü float:rightbir ana div dışına çıkabilir (taşma: ebeveyn için gizli bazen yardımcı olabilir) ve margin-left: auto, margin-right: 0benim için karmaşık iç içe div'lerde (nedenini araştırmadım) işe yaramadı.

Belirli elemanları olduğunu anladım text-align: rightelemanı ve ebeveyn hem olduğunda bu işleri varsayarak çalışır inlineveya inline-block.

Not: text-alignCSS özelliği, metin gibi satır içi içeriğin üst blok öğesinde nasıl hizalandığını açıklar. text-alignblok elemanlarının hizalamasını kontrol etmez, sadece satır içi içeriğini kontrol eder.

Bir örnek:

<div style="display: block; width: 80%; min-width: 400px; background-color: #caa;">
    <div style="display: block; width: 100%">
        I'm parent
    </div>
    <div style="display: inline-block; text-align: right; width: 100%">
        Caption for parent
    </div>
</div>

İşte bir JS Fiddle .



15

Üst div öğesinin sağ ucunda yan yana hizalanmasını istediğiniz birden fazla div varsa, üst div'de ayarlayın text-align: right;.


15

Sen kullanabilirsiniz flexboxile flex-growsağa son öğe itmek.

<div style="display: flex;">
  <div style="flex-grow: 1;">Left</div>
  <div>Right</div>
</div>

1
Şahsen bunun 2020 için doğru cevap olduğunu hissediyorum: P
Mike Kellogg

2

IE9 ve aşağısını desteklemeniz gerekmiyorsa, bunu çözmek için flexbox'ı kullanabilirsiniz: codepen

Ayrıca IE10 ve 11 ( flexbox desteği ) ile birkaç hata var , ancak bu örnekte mevcut değiller

Sen dikey hizalayabilirsiniz <button>ve <form>bir kap içinde sarılarak flex-direction: column. Elemanların kaynak sırası, yukarıdan aşağıya gösterildikleri sıra olacaktır, bu yüzden onları yeniden sıraladım.

Daha sonra, form ve düğme kabını bir kabın içine sararak tuvalle yatay olarak hizalayabilirsiniz flex-direction: row. Yine, öğelerin kaynak sırası soldan sağa gösterildikleri sıra olacaktır, bu yüzden onları yeniden sıraladım.

Ayrıca, bu , soruya bağlı koddan tüm positionve floatstil kurallarını kaldırmanızı gerektirir .

Aşağıda, yukarıda bağlanan kod alanında HTML'nin kırpılmış bir sürümü verilmiştir.

<div id="mainContainer">
  <div>
    <canvas></canvas>
  </div>
  <div id="formContainer">
    <div id="addEventForm"> 
      <form></form>
    </div>
    <div id="button">
      <button></button>
    </div>
  </div>
</div>

Ve işte ilgili CSS

#mainContainer {
  display: flex;
  flex-direction: row;
} 

#formContainer {
  display: flex;
  flex-direction: column;
}

1

Basit cevap burada:

<div style="text-align: right;">
    anything:
    <select id="locality-dropdown" name="locality" class="cls" style="width: 200px; height: 28px; overflow:auto;">
    </select>
</div>

0

İçeriğinizi sağa hizalamak ve tüm örneklerde çalıştığından emin olmak için içeriği uyumlu kapsayıcıya (benim durumumda navbar gerekli) sarmak için sadece solda dolgu:% 60 (örneğin) kullanabilirsiniz.


0

Önyükleme kullanıyorsanız, o zaman:

<div class="pull-right"></div>

Sanırım demek istedin <div class="text-right"></div>.
Alex Barker

1
anil yanlış değil, "pull-right" sınıfı "float: right;" (Bootstrap 3.4.1 ile test edilmiştir)
Fabian Horlacher

-13

Bu eski bir yazı olduğunu biliyorum ama sadece <div id=xyz align="right">doğru için kullanamadım .

Sadece sağa sola, ortaya koyabilir ve iki yana yaslayabilirsiniz.

Sitemde çalıştı :)


21
Lütfen sayfanızı biçimlendirmek için HTML özelliklerini kullanmayın. CSS bunun için yapıldı. Aslında, alignözellik artık kullanımdan kaldırılmıştır .
Hanna

4
... ve böylece böyle bir sorunun nedeni ve cevaplanması gerekliliği, çünkü eski yöntemler artık işe yaramıyor.
vapcguy

ohohoh, çok olumsuz))
Nessi
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.