入力フィールドの上ではなく左側のラベル


104

ラベルを入力フィールドの上ではなく、左側に配置したいと思います。

<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>

このコードは私に与えます:

Code_Result_Bootstrap_3_Label

私はを頂きたい:

Desired_Result_Bootstrap_3_Label

回答:


85

各フォームグループにフォームインラインクラスを使用できます:)

<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>

ありがとう。ラベルの後に、デフォルトでwidth:100%に設定されたdiv入力グループがありました。そのdivを50%にオーバーライドする必要がありました。次に、ラベルと入力グループ(datepicker)は1行に収まります。(私はそれがオーバーライドなしでよりきれいであったら幸いです。)
ターボ

2
いいえ、オーバーライドする必要はありません。'row'や 'col- *'などのグリッドオプションを試してください。
gvgramazio 2017年

1
これは受け入れられる答えになるはずです。これは、がフォームの親クラスではなくインラインで個々のフォームグループを作成form-groupするform-inlineために継承できることを示しています。
カウベルト

注:私の場合、INPUTDIV入れる必要がありました
AlexNikonov

56

<label>外に置く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>

おかしい、これは動作しますが、ブートストラップのドキュメントはこれを示していません。ラベルはグループの形式で表示されます
steveareeno

14

Bootstrap 3のドキュメントでは、「カスタム幅が必要」というセクションのCSSドキュメントタブで次のように説明されています。

Bootstrapのデフォルトでは、入力、選択、テキストエリアの幅は100%です。インラインフォームを使用するには、その中で使用されるフォームコントロールに幅を設定する必要があります。

ブラウザとFirebugまたはChromeツールを使用して「幅」スタイルを抑制または縮小すると、物事が思い通りに並んでいることがわかります。明らかに、適切なCSSを作成して問題を修正できます。

しかし、私がこれを実行する必要があるのは奇妙だと思います。この操作は煩わしく、長期的にはエラーが発生しやすいと感じざるを得ませんでした。最終的に、すべてのインライン入力をグローバルにシムするために、ダミークラスといくつかのJSを使用しました。症例数が少ないので気になりませんでした。

それにもかかわらず、私も「正しい」解決策を持っている誰かから連絡をもらいたいし、私のシム/ハックを排除することができます。

これがお役に立てば幸いです。Bootstrap3の懸念としてあなたのリクエストを無視したすべての人にガスケットを吹き付けないようにしてください。


2
たとえば、ラベルの幅をcol-sm-2にして、col-sm-10を入力するのはどうですか。
niico 2016

13

2つの方法を使用して、ラベルとフォームコントロールが横になるようなフォームを作成できます-

1.インラインフォームレイアウト

<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.水平方向のフォームレイアウト

<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>

詳細とライブデモについては、このページをチェックしてください-http ://www.tutorialrepublic.com/twitter-bootstrap-tutorial/bootstrap-forms.php


解決策1がうまくいきません。まだ入力コントロールの上にあるラベル。canduのソリューションは私が望むことをしますが、それは正しい方法ですか?
キットフィスト2017

8

このような

デモ

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
これはBootstrap v2.1.0のソリューションですが、Bootstrap v3.0.0のソリューションではありません
Stefan Vogt

3
"form-inline"はBootstrap 3にも存在し、それが鍵だと思います:+1
Per Quested Aronssonによる

7

私は同じ問題を抱えていました、これが私の解決策です:

<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>

ここにデモがあります


5

すべての要素を左にフロートさせる必要があります:

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

必要な要素にマージンを与えます:

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

ラベルをフィールドの高さと同じ行の高さに設定します。

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

5

既存の回答から、Bootstrapの用語が混乱していることがわかります。ブートストラップのドキュメントを見ると、クラスform-horizo​​ntalは、実際にはフィールドが互いに下にあるフォーム、つまり、ほとんどの人が垂直フォームと見なしているフォームであることがわかります。ページを横切るフォームの正しいクラスはform-inlineです。彼らはすでに水平という用語を誤用していたため、おそらくインラインという用語を導入しました

ここでいくつかの回答から、一部の人々がこれらのクラスの両方を1つの形式で使用していることがわかります。他の人は、フォームインラインが実際に必要な場合に、フォーム水平が必要であると考えています

ブートストラップのドキュメントに記載されているとおりに実行することをお勧めします。

<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>

生成されるもの:

ここに画像の説明を入力してください


7
コードをコピーして貼り付けると、Bootstrap 3.3.4でテキスト入力の上に名前ラベルが表示されます。
マイクコビントン

2

ラベル内でスパンタグを使用できます

  <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

私はなんとか問題を解決できました。正常に動作しているようで、すべての入力に手動で幅を追加する必要がないことを意味します。

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

これは、ブートストラップの使用方法ではありません。代わりに、既存のものを変更する、必要に応じて構築されたクラスを使用することをお勧めします。
gvgramazio 2017年

ええ、私は同意します。これは、Bootstrapシーン全体が初めてだったときに書いたものです。
トムC

1

私はあなたがすでにあなたの答えを見つけたと確信しています...これが私が導き出した解決策です。

それが私のCSSです。

.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;
  }

そして私のHTML ...

<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>

ここで実際の例を見ることができます... http://jsfiddle.net/s6Ujm/

PS:私も初心者です。プロのデザイナー...あなたのレビューを自由に共有してください。


1

これは、ブートストラップドキュメント「Horizo​​ntal form Bootstrapの定義済みグリッドクラスを使用して、フォームに.form-horizo​​ntalを追加することにより、フォームコントロールのラベルとグループを水平レイアウトに配置するために必要なものだと思います。これにより、.form-groupsがグリッド行として動作するため、.rowは不要です。」そう:

<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>

フィドル:http : //jsfiddle.net/beewayne/B9jj2/29/


6
あなたのフィドル404'd
マイクコビントン

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>

また、単に次のように使用することもできます

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

2
class = "control-group"はBoostrap V3には存在しません
Stefan Vogt


0

CSSは必要ありません。これはページ上で問題なく見えるはずです。col-md-*必要に応じて設定できます

<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>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.