Sağa hizalanmış bir düğme yerleştirme


225

Bu kodu bir düğmeyi sağa hizalamak için kullanıyorum.

<p align="right">
  <input type="button" value="Click Me" />
</p>

Ancak <p>etiketler biraz yer kaplar, bu yüzden <span>veya ile aynı şeyi yapmak ister <div>.


11
alignNitelik, kullanım CSS HTML 4.01 kullanımdan kaldırılmış ve HTML5'teki desteklenmeyen bir text-alignaynı etkiyi elde etmek yerine.
Brezilyalı Adam

Yanıtlar:


415

Hangi hizalama tekniğini kullandığınız, koşullarınıza bağlıdır, ancak temel olan float: right;:

<input type="button" value="Click Me" style="float: right;">

Muhtemelen şamandıralarınızı temizlemek isteyeceksiniz, ancak bu overflow:hidden, ana kapta veya kabın <div style="clear: both;"></div>alt kısmında açık bir şekilde yapılabilir .

Örneğin: http://jsfiddle.net/ambiguous/8UvVg/

Kayan öğeler normal belge akışından kaldırılır, böylece üst öğelerinin sınırlarını aşabilir ve üst öğenin yüksekliğini bozabilirler, clear:bothCSS bununla ilgilenir (olduğu gibi overflow:hidden). Kayan ve temizliğin nasıl davrandığını görmek için eklediğim JSFiddle örneğiyle oynayın ( overflow:hiddenilkini bırakmak istersiniz ).


35

Başka bir olasılık, sağa yönelik mutlak bir konumlandırma kullanmaktır:

<input type="button" value="Click Me" style="position: absolute; right: 0;">

İşte bir örnek: https://jsfiddle.net/a2Ld1xse/

Bu çözümün dezavantajları vardır, ancak çok yararlı olduğu kullanım durumları vardır.


Üst öğeye göre konum: eklerseniz, düzgün çalışır!
DHRUV GAJWA

23

Düğme yalnızca elementşurada bulunuyorsa block:

.border {
  border: 2px blue dashed;
}

.mr-0 {
  margin-right: 0;
}
.ml-auto {
  margin-left:auto;
}
.d-block {
  display:block;
}
<p class="border">
  <input type="button" class="d-block mr-0 ml-auto" value="The Button">
</p>

Üzerinde başka varsa :elementsblock

.border {
  border: 2px indigo dashed;
}

.d-table {
  display:table;
}

.d-table-cell {
  display:table-cell;
}

.w-100 {
  width: 100%;
}

.tar {
  text-align: right;
}
<div class="border d-table w-100">
  <p class="d-table-cell">The paragraph.....lorem ipsum...etc.</p>
  <div class="d-table-cell tar">
    <button >The Button</button>
  </div>
</div>

İle flex-box:

.flex-box {
  display:flex;
  justify-content:space-between;
  outline: 2px dashed blue;
}

.flex-box-2 {
  display:flex;
  justify-content: flex-end;
  outline: 2px deeppink dashed;
}
<h1>Button with Text</h1>
<div class="flex-box">
<p>Once upon a time in a ...</p>
<button>Read More...</button>
</div>

<h1>Only Button</h1>
<div class="flex-box-2">
  <button>The Button</button>
</div>

<h1>Multiple Buttons</h1>
<div class="flex-box-2">
  <button>Button 1</button>
  <button>Button 2</button>
</div>

İyi şanslar...


1
margin-left:autoHarika! En !importantkötüsü, gelecekte sorunlara neden olacaktır.
Tom Brito

Merhaba @ TomBrito, yanıtı güncelledim display: flex;. Her şeyi halleder.
Akash

1
bu cevap kredi aldığı kadar iyidir ... sadece kullanmayın! önemli
tpie

11

Bu çözüm, @ günther-jena tarafından belirtildiği gibi Bootstrap 3'e bağlıdır.

Deneyin <a class="btn text-right">Call to Action</a>. Bu şekilde, kayan öğeleri temizlemek için fazladan işaretlemeye veya kurallara ihtiyacınız yoktur.


1
üzgünüm düzeltme, yalnızca bağlantı etiketi için üst kapsayıcıya "sağ metin" koyduğunuzda çalışır.
Jonathan Laliberte

8

2019 yılında flex-box kullanarak modern bir yaklaşım

ile div etiketi

<div style="display:flex; justify-content:flex-end; width:100%; padding:0;">
    <input type="button" value="Click Me"/>
</div>

ile açıklık etiketi

<span style="display:flex; justify-content:flex-end; width:100%; padding:0;">
    <input type="button" value="Click Me"/>
</span>


5

Başka bir olasılık, sağa yönelik mutlak bir konumlandırma kullanmaktır. Bunu şu şekilde yapabilirsiniz:

style="position: absolute; right: 0;"

2
Elbette, ancak bir ebeveyn varsa div, bu sınırlarını kesinlikle göz ardı edecektir.
Hassan Baig

5

Her zaman bu kadar basit değildir ve bazen hizalama, Button öğesinin kendisinde değil, kapta tanımlanmalıdır!

Sizin durumunuz için çözüm

<div style="text-align:right; width:100%; padding:0;">
    <input type="button" value="Click Me"/>
</div>

width=100%Emin olmak için belirledim<div>Konteynerinin tam genişliğini alacağından .

Ayrıca padding:0boşluktan önce ve sonra kaçınmak için ekledim<p> .

Ben eğer söyleyebiliriz <div>bir FSF tanımlanır / Primefaces tablonun altbilgi, float:rightDüğme yüksekliği altbilgi yüksekliği daha yüksek olacak çünkü düzgün çalışmıyor!

Bu Primefaces durumunda kabul edilebilir tek çözüm text-align:rightkapta kullanmaktır .

Bu çözümle, sağda hizalamak için 6 Düğmeniz varsa, bu hizalamayı yalnızca kapta belirtmeniz gerekir :-)

<div style="text-align:right; width:100%; padding:0;">
    <input type="button" value="Click Me 1"/>
    <input type="button" value="Click Me 2"/>
    <input type="button" value="Click Me 3"/>
    <input type="button" value="Click Me 4"/>
    <input type="button" value="Click Me 5"/>
    <input type="button" value="Click Me 6"/>
</div>

3

Düğmeyi sayfa akışında tutmak için:

<input type="button" value="Click Me" style="margin-left: auto; display: block;" />

(bu stili bir .css dosyasına koyun, daha iyi bakım için bu html satır satırını kullanmayın)


0

Bu çözerdi.

<input type="button" value="Text Here..." style="float: right;">

Kodunuzda iyi şanslar!


3
Bu, en yüksek puan cevabının bir kopyasıdır
Günther Jena

0

Benim durumumda

<p align="right"/>

iyi çalıştı


1
Bu bir cevap değil align özelliği HTML
4.01'de

0
<div style = "display: flex; justify-content: flex-end">
    <button>Click me!</button>
</div>

Cevabınız için biraz daha bağlam yararlı olacaktır.
David Clarke
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.