Twitter bootstrap yatay bir form içinde satır içi Form?


200

Ev yapımı sınıfları olmayan twitter bootstrap'ta böyle bir form tasarlamanın (lütfen aşağıdaki bağlantıya bakın) en iyi yolu nedir?

Aşağıdaki örnek gibi bir form-yatay içine bir iç form-satır içi ayarlamak mümkün müdür:

UI hedefinin ekran görüntüsü

Yanıtlar:


317

<form>Etiketleri iç içe yerleştirmeyin , bu işe yaramaz. Sadece Bootstrap sınıflarını kullanın.

Önyükleme 3

<form class="form-horizontal" role="form">
    <div class="form-group">
      <label for="inputType" class="col-md-2 control-label">Type</label>
      <div class="col-md-3">
          <input type="text" class="form-control" id="inputType" placeholder="Type">
      </div>
    </div>
    <div class="form-group">
        <span class="col-md-2 control-label">Metadata</span>
        <div class="col-md-6">
            <div class="form-group row">
                <label for="inputKey" class="col-md-1 control-label">Key</label>
                <div class="col-md-2">
                    <input type="text" class="form-control" id="inputKey" placeholder="Key">
                </div>
                <label for="inputValue" class="col-md-1 control-label">Value</label>
                <div class="col-md-2">
                    <input type="text" class="form-control" id="inputValue" placeholder="Value">
                </div>
            </div>
        </div>
    </div>
</form>

Bu davranışı birçok yönden başarabilirsiniz, bu sadece bir örnektir. Bu açılışta test et

Bootstrap 2

<form class="form-horizontal">
    <div class="control-group">
        <label class="control-label" for="inputType">Type</label>
        <div class="controls">
            <input type="text" id="inputType" placeholder="Type">
        </div>
    </div>
    <div class="control-group">
        <span class="control-label">Metadata</span>
        <div class="controls form-inline">
            <label for="inputKey">Key</label>
            <input type="text" class="input-small" placeholder="Key" id="inputKey">
            <label for="inputValue">Value</label>
            <input type="password" class="input-small" placeholder="Value" id="inputValue">
        </div>
    </div>
</form>

.form-inlinePropper stilini a içine almak için kullandığımı unutmayın .controls. Bu jsfiddle
üzerinde test edebilirsiniz


3
Ayrıca div formlarına form sınıfları da ekleyebilirsiniz, benim durumumda bir span6 div üzerinde dikey form sınıfı ve span12 div üzerinde yatay form sınıfı kullandım
Iftah

3
Bu bootstrap2 için çalışır. Bootstrap 3 için şu adresi ziyaret edin: stackoverflow.com/questions/18429121/…
Tomislav Muic

1
Önyükleme 3'te, girişin altında bir boşluk varsa, "form grubu" nu kaldırın. Kullandığınız her div'in altına 15 piksel boşluk ekler.
darkzangel

Anahtar + Değer örneğinde form grubunu satırla karıştırmanıza gerek yoktur. @ rap-2-h: Örnek kodu kopyalayıp yapıştırabilirsiniz.
Sebastian

Bu işe yarıyor ama Bootstrap 3'ün mevcut sürümünde basitleştirebildim ... Bu çözümün sadece bir div içine herhangi bir giriş kontrolü koymak için anahtar görünüyor, aksi takdirde col-xx ızgara düzeni çalışmıyor. Form grubunu yuvalamak gerekli değildi, üst col-xx- # aynı divı paylaşabilir ve üst form zaten bir form yatay (% 100) olduğundan "satır" sınıfına gerek yoktur.
Tony Wall

92

Bootstrap 3 için yukarıdaki örnek çalışır, ancak satır içi olmasını istediğiniz alanlar için form grubu kullanmak yerine form grubu kullanmak yerine aşırı karmaşıktır.

Örneğin:

<div class="form-group">
     <label>CVV</label>
     <input type="text" size="4" class="form-control" />
</div>

<div class="form-inline">
      <label>Expiration (MM/YYYY)</label><br>
      <input type="text" size="2" class="form-control" /> / <input type="text" size="4" class="form-control" />
</div>

"Display: block" ayarlayan form kontrol sınıfı nedeniyle sizin için çalışmayabilir. "Display: inline-block" olarak geçersiz kılarsanız, çalışmalıdır.
Cédric Guillemette

1
Bu çalışmıyor. Sorunun sorduğunu yapmaya çalışın, bu form-inline ile mümkün değildir.
Sebastian

Bununla ilgili tek sorun, alt alanın tam genişliğe genişletilmemesi ve ızgara boyutlandırmayı kullanma girişimlerinin gerekli minimum içerik genişliğine göre ezilmesidir. Diğer çözüm çok fazla div olmadan daha iyidir (oradaki yorumuma bakın).
Tony Wall

3
Tüm form gruplarını form-satır içi sınıfına
sarmalısınız

jsfiddle.net/9637fywb Bu, mevcut en yeni önyükleme CDN'sini (3.3.5) kullanarak istediğiniz gibi görünmüyor. Bu örnek aynı zamanda "satır içi" bölümünün içindeki iki etiketi de içermez. Belki de kemanın bir çeşit sarıcısı eksik, ancak öyle görünüyorsa, cevaba dahil edilmesi gerekiyor gibi görünüyor.
emragins

14

Bu, girişlerin üstünde yer alacak etiketleri almak için bir css sınıfıyla twitter bootstrap 3.x kullanır. İşte bir keman bağlantısı , sonuç panelini efekti görecek kadar genişlettiğinizden emin olun.

HTML:

  <div class="row myform">
     <div class="col-md-12">
        <form name="myform" role="form" novalidate>
           <div class="form-group">
              <label class="control-label" for="fullName">Address Line</label>
              <input required type="text" name="addr" id="addr" class="form-control" placeholder="Address"/>
           </div>

           <div class="form-inline">
              <div class="form-group">
                 <label>State</label>
                 <input required type="text" name="state" id="state" class="form-control" placeholder="State"/>
              </div>

              <div class="form-group">
                 <label>ZIP</label>
                 <input required type="text" name="zip" id="zip" class="form-control" placeholder="Zip"/>
              </div>
           </div>

           <div class="form-group">
              <label class="control-label" for="country">Country</label>
              <input required type="text" name="country" id="country" class="form-control" placeholder="country"/>
           </div>
        </form>
     </div>
  </div>

CSS:

.myform input.form-control {
   display: block;  /* allows labels to sit on input when inline */
   margin-bottom: 15px; /* gives padding to bottom of inline inputs */
}

2

Bootstrap 4, div class = "form-row" ile birlikte div class = "form-row" komutunu kullandığından. X, ihtiyacınız olan genişliktir. Güzel satır içi sütunlar alacaksınız. Bkz kemanı .

<form class="form-horizontal" name="FORMNAME" method="post" action="ACTION" enctype="multipart/form-data">
    <div class="form-group">
        <label class="control-label col-sm-2" for="naam">Naam:&nbsp;*</label>
        <div class="col-sm-10">
            <input type="text" require class="form-control" id="naam" name="Naam" placeholder="Uw naam" value="{--NAAM--}" >
            <div id="naamx" class="form-error form-hidden">Wat is uw naam?</div>
        </div>
    </div>

    <div class="form-row">

        <div class="form-group col-5">
            <label class="control-label col-sm-4" for="telefoon">Telefoon:&nbsp;*</label>
            <div class="col-sm-12">
                <input type="tel" require class="form-control" id="telefoon" name="Telefoon" placeholder="Telefoon nummer" value="{--TELEFOON--}" >
                <div id="telefoonx" class="form-error form-hidden">Wat is uw telefoonnummer?</div>
            </div>
        </div>

        <div class="form-group col-5">
            <label class="control-label col-sm-4" for="email">E-mail: </label>
            <div class="col-sm-12">
                <input type="email" require class="form-control" id="email" name="E-mail" placeholder="E-mail adres" value="{--E-MAIL--}" >
                <div id="emailx" class="form-error form-hidden">Wat is uw e-mail adres?</div>
                    </div>
                </div>

        </div>

    <div class="form-group">
        <label class="control-label col-sm-2" for="titel">Titel:&nbsp;*</label>
        <div class="col-sm-10">
            <input type="text" require class="form-control" id="titel" name="Titel" placeholder="Titel van uw vraag of aanbod" value="{--TITEL--}" >
            <div id="titelx" class="form-error form-hidden">Wat is de titel van uw vraag of aanbod?</div>
        </div>
    </div>
<from>

1

Bunun eski bir cevap olduğunu biliyorum ama işte genelde yaptığım şey:

CSS:

.form-control-inline {
   width: auto;
   float:left;
   margin-right: 5px;
}

Ardından, bir div içine yerleştirilmek istediğiniz alanları sarın ve girdiye .form-control-inline ekleyin, örnek:

HTML

<label class="control-label">Date of birth:</label>
<div>
<select class="form-control form-control-inline" name="year"> ... </select>
<select class="form-control form-control-inline" name="month"> ... </select>
<select class="form-control form-control-inline" name="day"> ... </select>
</div>

1

basitleştirmek için, class="form-inline"girişten önce a ekleyin .

misal:

<div class="col-md-4 form-inline"> //add the class here...
     <label>Lot Size:</label>
     <input type="text" value="" name="" class="form-control" >
 </div>
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.