Label di sisi kiri, bukan di atas kolom input


104

Saya ingin label tidak berada di atas kolom input, tetapi di sisi kiri.

<form method="post" action="" role="form" class="form-inline">
  <div class="form-group">
    <label for="rg-from">Ab: </label>
    <input type="text" id="rg-from" name="rg-from" value="" class="form-control">
  </div>
  <div class="form-group">
    <label for="rg-to">Bis: </label>
    <input type="text" id="rg-to" name="rg-to" value="" class="form-control">
  </div>
  <div class="form-group">
    <input type="button" value="Clear" class="btn btn-default btn-clear"> 
    <input type="submit" value="Los!" class="btn btn-primary">
  </div>
</form>

Kode ini memberi saya:

Code_Result_Bootstrap_3_Label

Saya ingin memiliki:

Label_Result_Bootstrap_3_Label yang diinginkan

Jawaban:


85

Anda dapat menggunakan kelas form-inline untuk setiap form-group :)

<form>                      
    <div class="form-group form-inline">                            
        <label for="exampleInputEmail1">Email address</label>
            <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email">
    </div>
</form>

Terima kasih. Setelah label saya memiliki div input-group yang defaultnya sendiri ke width: 100%. Diperlukan untuk mengganti div itu menjadi 50%. Kemudian label dan kelompok masukan (datepicker) akan muat dalam satu baris. (Saya berharap ini lebih bersih tanpa override.)
Turbo

2
Tidak, Anda tidak perlu menimpanya. Coba saja opsi kisi, seperti 'row' dan 'col- *'.
gvgramazio

1
Ini harus menjadi jawaban yang diterima. Ini menunjukkan bahwa form-groupdapat mewarisi form-inlineuntuk membuat grup formulir individu sebaris alih-alih kelas induk formulir.
cowbert

Catatan: dalam kasus saya, saya perlu memasukkan INPUT ke DIV
AlexNikonov

56

Letakkan bagian <label>luar form-group:

<form class="form-inline">
  <label for="rg-from">Ab: </label>
  <div class="form-group">
    <input type="text" id="rg-from" name="rg-from" value="" class="form-control">
  </div>
  <!-- rest of form -->
</form>

lucu, ini berfungsi tetapi dokumentasi bootstrap tidak menunjukkan ini. Ini menunjukkan label dalam kelompok formulir
steveareeno

14

Dokumentasi Bootstrap 3 membicarakan hal ini di tab dokumentasi CSS di bagian berlabel "Memerlukan lebar khusus", yang menyatakan:

Input, selects, dan textarea memiliki lebar 100% secara default di Bootstrap. Untuk menggunakan formulir sebaris, Anda harus menyetel lebar pada kontrol formulir yang digunakan di dalamnya.

Jika Anda menggunakan browser dan Firebug atau alat Chrome untuk menyembunyikan atau mengurangi gaya "lebar", Anda akan melihat semuanya berbaris sesuai keinginan Anda. Jelas Anda kemudian dapat membuat CSS yang sesuai untuk memperbaiki masalah tersebut.

Namun, saya merasa aneh bahwa saya perlu melakukan ini sama sekali. Saya tidak bisa tidak merasa manipulasi ini mengganggu dan dalam jangka panjang, rawan kesalahan. Pada akhirnya, saya menggunakan kelas dummy dan beberapa JS untuk mendorong semua input inline saya secara global. Jumlah kasusnya kecil, jadi tidak terlalu mengkhawatirkan.

Meskipun demikian, saya juga ingin mendengar dari seseorang yang memiliki solusi yang "tepat", dan dapat menghilangkan shim / hack saya.

Semoga ini bisa membantu, dan menjadi pendukung bagi Anda untuk tidak merusak semua orang yang mengabaikan permintaan Anda sebagai perhatian Bootstrap 3.


2
bagaimana dengan, katakanlah, membuat lebar label col-sm-2 - dan input col-sm-10?
niico

13

Anda dapat membuat formulir seperti itu di mana label dan kontrol formulir bersisian menggunakan dua metode -

1. Tata letak formulir sebaris

<form class="form-inline" role="form">
    <div class="form-group">
        <label for="inputEmail">Email</label>
        <input type="email" class="form-control" id="inputEmail" placeholder="Email">
    </div>
    <div class="form-group">
        <label for="inputPassword">Password</label>
        <input type="password" class="form-control" id="inputPassword" placeholder="Password">
    </div>
    <button type="reset" class="btn btn-default">Reset</button>
    <button type="submit" class="btn btn-primary">Login</button>
</form>

2. Tata Letak Bentuk Horizontal

<form class="form-horizontal">
    <div class="row">
        <div class="col-sm-4">
            <div class="form-group">
                <label for="inputEmail" class="control-label col-xs-3">Email</label>
                <div class="col-xs-9">
                    <input type="email" class="form-control" id="inputEmail" placeholder="Email">
                </div>
            </div>
        </div>
        <div class="col-sm-5">
            <div class="form-group">
                <label for="inputPassword" class="control-label col-xs-3">Password</label>
                <div class="col-xs-9">
                    <input type="password" class="form-control" id="inputPassword" placeholder="Password">
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <button type="reset" class="btn btn-default">Reset</button>
            <button type="submit" class="btn btn-primary">Login</button>
        </div>
    </div>
</form>

Anda dapat melihat halaman ini untuk informasi lebih lanjut dan demo langsung - http://www.tutorialrepublic.com/twitter-bootstrap-tutorial/bootstrap-forms.php


Solusi 1 tidak berhasil untuk saya. Label masih di atas kontrol masukan. solusi candu melakukan apa yang saya inginkan, tetapi apakah ini cara yang benar?
Kit Fisto

8

Seperti ini

DEMO

HTML

<div class="row">
  <form class="form-inline">
    <fieldset>
      <label class="control-label"><strong>AB :</strong></label>
      <input type="text" class="input-mini" >
      <label class="control-label"><strong>BIS:</strong></label>
      <input type="text" class="input-mini" >
      <input type="button" value="Clear" class="btn btn-default btn-clear">
      <input type="submit" value="Los!" class="btn btn-primary">
    </fieldset>
  </form>
</div>

4
Ini adalah solusi untuk Bootstrap v2.1.0, tetapi tidak untuk Bootstrap v3.0.0
Stefan Vogt

3
"form-inline" juga ada di Bootstrap 3, dan saya pikir itulah kuncinya: +1
Per Quested Aronsson

7

Saya memiliki masalah yang sama, inilah solusi saya:

<form method="post" class="form-inline form-horizontal" role="form">
        <label class="control-label col-sm-5" for="jbe"><i class="icon-envelope"></i> Email me things like this: </label>
        <div class="input-group col-sm-7">
            <input class="form-control" type="email" name="email" placeholder="your.email@example.com"/>
            <span class="input-group-btn">
                <button class="btn btn-primary" type="submit">Submit</button>
            </span>
        </div>
    </form>

ini dia Demo-nya


5

Anda harus mengapung meninggalkan semua elemen seperti ini:

.form-group,
.form-group label,
.form-group input { float:left; display:inline;   }

berikan beberapa margin ke elemen yang diinginkan:

 .form-group { margin-right:5px }

dan atur label dengan tinggi baris yang sama dengan tinggi bidang:

.form-group label { line-height:--px; }

5

Anda dapat melihat dari jawaban yang ada bahwa terminologi Bootstrap membingungkan. Jika Anda melihat pada dokumentasi bootstrap, Anda melihat bahwa kelas formulir-horizontal sebenarnya untuk formulir dengan bidang di bawah satu sama lain, yaitu apa yang kebanyakan orang anggap sebagai bentuk vertikal. Kelas yang benar untuk formulir yang melintasi halaman adalah formulir-sebaris . Mereka mungkin memperkenalkan istilah sebaris karena mereka telah menyalahgunakan istilah horizontal .

Anda lihat dari beberapa jawaban di sini bahwa beberapa orang menggunakan kedua kelas ini dalam satu bentuk! Yang lain berpikir bahwa mereka membutuhkan bentuk-horizontal ketika mereka benar-benar menginginkan bentuk-sebaris .

Saya menyarankan untuk melakukannya persis seperti yang dijelaskan dalam dokumentasi Bootstrap:

<form class="form-inline">
  <div class="form-group">
    <label for="nameId">Name</label>
    <input type="text" class="form-control" id="nameId" placeholder="Jane Doe">
  </div>
</form>

Yang menghasilkan:

masukkan deskripsi gambar di sini


7
Salin & tempel kode Anda, saya mendapatkan label nama di atas input teks dengan Bootstrap 3.3.4.
Mike Covington

2

Anda dapat menggunakan tag span di dalam label

  <div class="form-group">
    <label for="rg-from">
      <span>Ab:</span> 
      <input type="text" id="rg-from" name="rg-from" value="" class="form-control">
    </label>
  </div>

1

Saya berhasil memperbaiki masalah saya dengan. Tampaknya berfungsi dengan baik dan berarti saya tidak perlu menambahkan lebar ke semua input saya secara manual.

.form-inline .form-group input {
 width: auto; 
}

Ini bukan cara Anda menggunakan bootstrap. Saya menyarankan Anda untuk menggunakan kelas yang dibangun untuk kebutuhan Anda alih-alih memodifikasi yang sudah ada.
gvgramazio

Ya saya setuju, saya menulis ini ketika saya masih baru di seluruh dunia Bootstrap.
Tom C

1

Saya yakin Anda pasti sudah menemukan jawaban Anda ... berikut adalah solusi yang saya peroleh.

Itu CSS saya.

.field, .actions {
    margin-bottom: 15px;
  }
  .field label {
    float: left;
    width: 30%;
    text-align: right;
    padding-right: 10px;
    margin: 5px 0px 5px 0px;
  }
  .field input {
    width: 70%;
    margin: 0px;
  }

Dan HTML saya ...

<h1>New customer</h1>
<div class="container form-center">
    <form accept-charset="UTF-8" action="/customers" class="new_customer" id="new_customer" method="post">
    <div style="margin:0;padding:0;display:inline"></div>

  <div class="field">
    <label for="customer_first_name">First name</label>
    <input class="form-control" id="customer_first_name" name="customer[first_name]" type="text" />
  </div>
  <div class="field">
    <label for="customer_last_name">Last name</label>
    <input class="form-control" id="customer_last_name" name="customer[last_name]" type="text" />
  </div>
  <div class="field">
    <label for="customer_addr1">Addr1</label>
    <input class="form-control" id="customer_addr1" name="customer[addr1]" type="text" />
  </div>
  <div class="field">
    <label for="customer_addr2">Addr2</label>
    <input class="form-control" id="customer_addr2" name="customer[addr2]" type="text" />
  </div>
  <div class="field">
    <label for="customer_city">City</label>
    <input class="form-control" id="customer_city" name="customer[city]" type="text" />
  </div>
  <div class="field">
    <label for="customer_pincode">Pincode</label>
    <input class="form-control" id="customer_pincode" name="customer[pincode]" type="text" />
  </div>
  <div class="field">
    <label for="customer_homephone">Homephone</label>
    <input class="form-control" id="customer_homephone" name="customer[homephone]" type="text" />
  </div>
  <div class="field">
    <label for="customer_mobile">Mobile</label>
    <input class="form-control" id="customer_mobile" name="customer[mobile]" type="text" />
  </div>
  <div class="actions">
    <input class="btn btn-primary btn-large btn-block" name="commit" type="submit" value="Create Customer" />
  </div>
</form>
</div>

Anda dapat melihat contoh kerja di sini ... http://jsfiddle.net/s6Ujm/

PS: Saya juga pemula, desainer profesional ... silakan bagikan ulasan Anda.


1

Saya rasa inilah yang Anda inginkan, dari dokumentasi bootstrap "Bentuk horizontal Gunakan kelas kisi yang telah ditentukan sebelumnya dari Bootstrap untuk menyelaraskan label dan grup kontrol formulir dalam tata letak horizontal dengan menambahkan .form-horizontal ke formulir. Melakukannya akan mengubah .form-groups menjadi berperilaku sebagai baris kisi, jadi tidak perlu .row ". Begitu:

<form class="form-horizontal" role="form">
<div class="form-group">
  <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10">
  <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
</div>
</div>
<div class="form-group">
  <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
  <div class="col-sm-10">
    <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
  </div>
</div>
<div class="form-group">
  <div class="col-sm-offset-2 col-sm-10">
    <div class="checkbox">
      <label>
        <input type="checkbox"> Remember me
      </label>
    </div>
  </div>
</div>
<div class="form-group">
  <div class="col-sm-offset-2 col-sm-10">
    <button type="submit" class="btn btn-default">Sign in</button>
  </div>
</div>
</form>

Biola: http://jsfiddle.net/beewayne/B9jj2/29/


6
Biola Anda 404'd
Mike Covington

0
<div class="control-group">
   <label class="control-label" for="firstname">First Name</label>
   <div class="controls">
    <input type="text" id="firstname" name="firstname"/>
   </div>
</div>

Juga kita bisa menggunakannya Cukup sebagai

<label>First name:
    <input type="text" id="firstname" name="firstname"/>
</label>

2
class = "control-group" tidak ada di Boostrap V3
Stefan Vogt


0

Tidak ada CSS yang dibutuhkan. Ini akan terlihat bagus di halaman Anda. Anda dapat mengatur col-md-*sesuai kebutuhan Anda

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
<div class="row">
                            <div class="col-md-12">
                                <form class="form-inline" role="form">
                                    <div class="col">
                                        <div class="form-group">
                                            <label for="inputEmail" class="col-sm-3">Email</label>
                                            <input type="email" class="form-control col-sm-7" id="inputEmail" placeholder="Email">
                                        </div>
                                    </div>
                                    <div class="col">
                                        <div class="form-group">
                                            <label for="inputPassword" class="col-sm-3">Email</label>
                                            <input type="password" class="form-control col-sm-7" id="inputPassword" placeholder="Email">
                                        </div>
                                    </div>
                                    
                                    <button class="btn btn-primary">Button 1</button>
                                    &nbsp;&nbsp;
                                    <button class="btn btn-primary">Button 2</button>
                                </form>
                            </div>
                        </div>

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.