Bootstrap: girişi düğmeyle hizala


299

Bootstrap'ta düğmeler ve girişler neden iyi hizalanmıyor?

Gibi basit bir şey denedim:

<input type="text"/><button class="btn">button</button>

Düğme, 5pxchrome / firefox'taki girişten yaklaşık olarak daha düşüktür.

resim açıklamasını buraya girin

Yanıtlar:


551

Twitter Önyükleme 4

Twitter Bootstrap 4'te girişler ve düğmeler input-group-prependve input-group-appendsınıfları kullanılarak hizalanabilir (bkz. Https://getbootstrap.com/docs/4.0/components/input-group/#button-addons )

Sol taraftaki grup düğmesi (başa dön)

<div class="input-group mb-3">
  <div class="input-group-prepend">
    <button class="btn btn-outline-secondary" type="button">Button</button>
  </div>
  <input type="text" class="form-control">
</div>

Sağ taraftaki grup düğmesi (ekleme)

<div class="input-group mb-3">
  <div class="input-group-append">
    <button class="btn btn-outline-secondary" type="button">Button</button>
  </div>
  <input type="text" class="form-control">
</div>

Twitter Önyükleme 3

@Abimelex, giriş ve düğmeleri ile cevap gösterildiği gibi kullanılarak hizalanabilir .input-groupsınıfları (bkz http://getbootstrap.com/components/#input-groups-buttons )

Sol taraftaki grup düğmesi

<div class="input-group">
  <span class="input-group-btn">
    <button class="btn btn-default" type="button">Go!</button>
  </span>
  <input type="text" class="form-control">
</div>

Sağ taraftaki grup düğmesi

<div class="input-group">
   <input type="text" class="form-control">
   <span class="input-group-btn">
        <button class="btn btn-default" type="button">Go!</button>
   </span>
</div>

Bu çözüm, cevabımı güncel tutmak için eklendi, ancak lütfen @abimelex tarafından verilen cevap üzerine oyunuzu yapıştırın .


Twitter Önyükleme 2

Bootstrap, bir .input-appendsarmalayıcı öğesi olarak çalışan ve bunu sizin için düzelten bir sınıf sunar :

<div class="input-append">
    <input name="search" id="search"/>
    <button class="btn">button</button>
</div>

Cevabında @OleksiyKhilkevich'in işaret ettiği gibi, hizalamanın inputve sınıfı buttonkullanarak ikinci bir yol var .form-horizontal:

<div class="form-horizontal">
    <input name="search" id="search"/>
    <button class="btn">button</button>
</div>

Farklılıklar

Bu iki sınıf arasındaki fark olmasıdır .input-appendyerleştirir buttonkarşı up input(onlar bağlı oldukları gibi bakmak böylece) nerede, eleman .form-horizontalaralarında bir boşluk yerleştirir.

-- Not --

inputVe buttonöğelerinin boşluk bırakmadan yan yana olmasına izin vermek için , sınıfta font-sizeolarak ayarlanmıştır (bu, öğeler arasındaki beyaz boşluğu kaldırır ). Varsayılan değerleri veya ölçümleri geçersiz kılmak istiyorsanız , öğenin yazı tipi boyutları üzerinde olumsuz bir etkisi olabilir .0.input-appendinline-blockinputem%


6
Cevabınız için teşekkürler, ama burada bir şeyler ters gidiyor gibi hissediyorum. Kesinlikle bootstrap bileşenlerinin form öğeleriyle dizilmesini isteyen ilk kişi değilim.
— pguardiario

@pguardiario - tamamen haklısın. Yanlış görünüyordu ve beynimi tokatladıktan sonra .input-appendsınıfı hatırladım .
— Kafam

1
Bunu yapmak için bir sarıcı sınıfına ihtiyacınız olacak garip görünüyor. Varsayılan olarak sıralanmamalılar mı?
— opsb

2
@opsb aynı miktarda dikey alan kaplarlarsa evet olurlardı. Ancak twitter önyüklemesindeki giriş alanlarında a vardır margin-bottom: 9pxancak düğmeler aynı dikey alanı kaplamamaktadır. Her iki öğe de middledikey bir hizalamaya sahip olduğundan, düğme farktan dolayı dengelenir. Kullanma .input-appendsarıcı bu kenar-alt değeri kaldırır.
— Kafam Ağrıyor

Doğru, sanırım varsayılan olarak aynı dikey yüksekliğe sahiplerse diğer form düzenlerini kıracaktı.
— opsb

187

düğmeyi doğrudan giriş alanına uygulamak için giriş grubu düğmesi özelliğini kullanabilirsiniz.

Önyükleme 3 ve 4

<div class="input-group">
  <input type="text" class="form-control">
  <span class="input-group-btn">
    <button class="btn btn-default" type="button">Go!</button>
  </span>
</div><!-- /input-group -->

Daha fazla örnek için BS4 Input-Group belgesine bakınız .

bs3 giriş grubu düğmesi için örnek


3
Diğerleri benim için çalışmadı, ancak bu, istediğim gibi çalıştı. Teşekkür ederim.
— Colandus

1
Benim için sınıfı ayırmak için ekstra bir span etiketi oluştururken işe yaramadı, ancak bu etiketi div etiketine eklediğimde işe yaradı:<div class="form-group input-group-btn">
— J0ANMM

Bu cevap BS4 için modası geçmiş, cevabıma bir göz atın.
— Alexander Kim

37

Sadece baş yukarı, bunun için özel bir CSS sınıfı var gibi görünüyor form-horizontal

input-append, yazı tipi boyutunu sıfıra düşüren başka bir yan etkiye sahiptir


1
+1 iyi nokta - Neden font-size: 0yeni bir şey kullandıklarını ve öğrendiklerini araştırmak zorunda kaldım :) Teşekkürler!
— Kafam

30

Use .form-inline = Bu, kompakt bir düzen için etiketleri ve satır içi blok kontrollerini sola hizalar

Örnek: http://jsfiddle.net/hSuy4/292/

<div class="form-inline">
<input type="text">
<input type="button" class="btn" value="submit">
</div>

.form-horizontal = Etiketleri sağa hizalayın ve 2 sütun form düzeni için daha iyi olan kontrollerle aynı satırda görünmelerini sağlamak için sola kaydırın .

(e.g. 
Label 1: [textbox]
Label 2: [textbox]
     : [button]
)

Örnekler: http://twitter.github.io/bootstrap/base-css.html#forms


2
Bunun form-inlineBootstrap 3 için çalıştığını onaylayabilirim . Teşekkürler.
— austin

Fantastik! Sorun yaratan bir form için tam ihtiyacım olan şey!
— its_notjack

: .Form-inline sadece görünüm genişliğinde en az 768px içinde çalışır görünüyor w3schools.com/bootstrap/bootstrap_forms.asp
— anemaria20

16

Her şeyden önce denedim ve paylaşmak istediğim birkaç değişiklikle bitirdim. İşte benim için çalışan kod (ekli ekran görüntüsünü bulun):

<div class="input-group">
    <input type="text" class="form-control" placeholder="Search text">
    <span class="input-group-btn" style="width:0;">
        <button class="btn btn-default" type="button">Go!</button>
    </span>
</div>

resim açıklamasını buraya girin

Eğer çalıştığını görmek istiyorsanız, editörünüzde aşağıdaki kodu kullanın:

<html>
    <head>
        <link type='text/css' rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css' />
    </head>
    <body>
        <div class="container body-content">
            <div class="form-horizontal">
              <div class="input-group">
                  <input type="text" class="form-control" placeholder="Search text">
                  <span class="input-group-btn" style="width:0;">
                      <button class="btn btn-default" type="button">Go!</button>
                  </span>
              </div>
            </div>
        </div>
    </body>
</html>

Bu yardımcı olur umarım.


Bu hangi Bootstrap sürümü? Hangi problemi kullanmıyorsunuz style="width:0;"?
— Karl Adler

Width: 0 kullanmazsanız, bu sayfanın tam genişliğini alır.
— Abhimanyu

Bootstrap yolu <div class="col-md-4">Gerek yok gibi bir col öğesi ile sarmak içinwidth: 0
— Karl Adler

Ben giriş kontrolleri ekranın tam genişliğini almak istemiyorum çünkü ayarla
— Abhimanyu

6

Ben de aynı sorunla mücadele ediyordum. Kullandığım bootstrap sınıfları benim için çalışmıyor. Aşağıdaki gibi bir geçici çözüm buldum:

<form action='...' method='POST' class='form-group'>
  <div class="form-horizontal">
    <input type="text" name="..." 
        class="form-control" 
        placeholder="Search People..."
        style="width:280px;max-width:280px;display:inline-block"/>

    <button type="submit" 
        class="btn btn-primary" 
        style="margin-left:-8px;margin-top:-2px;min-height:36px;">
      <i class="glyphicon glyphicon-search"></i>
     </button>
  </div>
</form>

Temel olarak, "form-control" sınıfının display özelliğini geçersiz kıldım ve boyutu ve konumu düzeltmek için diğer stil özelliklerini kullandım.

Sonuç şudur:

resim açıklamasını buraya girin



4
<form class="form-inline">
  <div class="form-group">
    <label class="sr-only" for="exampleInputEmail3">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail3" placeholder="Email">
  </div>
  <button type="submit" class="btn btn-default">Sign in</button>
</form>

3

Yukarıdaki tüm kodları denedim ve hiçbiri sorunlarımı düzeltti. İşte benim için işe yarayan. Girdi-grup-addon kullandım.

<div class = "input-group">
  <span class = "input-group-addon">Go</span>
  <input type = "text" class = "form-control" placeholder="you are the man!">
</div>

1

Benzer bir kodunuz yoksa, sadece form-inline, bootstrap için garip bir davranış fark etmediyseniz, doğrudan ilgili değil

Açılış etiketi tablonun altındaysa (bu durumda) bir masaüstü projesi olduğu için bunun için satır ve hücreler kullanmadım:

<table class="form-inline"> 
<form> 
<tr>

Form öğeleri yığınlanır.

Değiştirin ve uygun şekilde hizalayın.

<form>
<table class="form-inline">
<tr>

Safari 10.0.2 ve en son Chrome herhangi bir değişiklik yapmadı. Belki düzenim yanlıştı ama çok affedici değil.


1

Bir giriş şamandırasını sol olarak alın. Ardından düğmeyi alın ve doğru şekilde yüzün. Birden fazla mesafeye gittiğinizde sınıfı düzeltebilirsiniz.

<input style="width:65%;float:left"class="btn btn-primary" type="text" name="name"> 
<div style="width:8%;float:left">&nbsp;</div>
<button class="btn btn-default" type="button">Go!</button>
<div class="clearfix" style="margin-bottom:10px"> </div>

-1
style="padding-top: 8px"

Div'inizi satırınızda yukarı veya aşağı kaydırmak için bunu kullanın. Eserler benim için harikalar yaratıyor.

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.