입력 필드 위 대신 왼쪽의 레이블


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 %로 재정의해야합니다. 그러면 레이블과 입력 그룹 (날짜 선택기)이 한 줄에 들어갑니다. (하지만 오버라이드없이 더 깨끗했으면 좋겠습니다.)
Turbo

2
아니요, 재정의 할 필요가 없습니다. 'row'및 'col- *'와 같은 그리드 옵션을 사용해보십시오.
gvgramazio

1
이것은 받아 들여진 대답이어야합니다. 이는 양식의 상위 클래스 대신 개별 양식 그룹을 인라인으로 만들기 위해 form-group상속 할 수 있음을 보여줍니다 form-inline.
cowbert

참고 : 제 경우에는 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 문서는 "Requires custom widths"섹션의 CSS 문서 탭에서 이에 대해 설명합니다.

입력, 선택 및 텍스트 영역은 Bootstrap에서 기본적으로 100 % 너비입니다. 인라인 양식을 사용하려면 내부에서 사용되는 양식 컨트롤의 너비를 설정해야합니다.

브라우저와 Firebug 또는 Chrome 도구를 사용하여 '너비'스타일을 억제하거나 줄이면 원하는대로 정렬되는 것을 볼 수 있습니다. 그런 다음 문제를 해결하기 위해 적절한 CSS를 만들 수 있습니다.

그러나이 작업을 전혀 수행해야한다는 것이 이상합니다. 나는이 조작이 성 가시고 장기적으로 오류가 발생하기 쉽다고 느꼈습니다. 궁극적으로 모든 인라인 입력을 전역 적으로 shim하기 위해 더미 클래스와 일부 JS를 사용했습니다. 적은 수의 사례 였으므로 크게 걱정하지 않았습니다.

그럼에도 불구하고 저도 "올바른"솔루션을 가지고 있고 제 shim / hack을 제거 할 수있는 누군가의 의견을 듣고 싶습니다.

이것이 도움이되기를 바라며 Bootstrap 3 문제로 귀하의 요청을 무시한 모든 사람들에게 개스킷을 불지 않는 것에 대한 소품입니다.


2
예를 들어 레이블의 너비를 col-sm-2로 만들고 col-sm-10을 입력하는 것은 어떻습니까?
niico

13

두 가지 방법을 사용하여 레이블과 양식 컨트롤이 측면에있는 양식을 만들 수 있습니다.

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의 솔루션은 내가 원하는 것을 수행하지만 올바른 방법입니까?
Kit Fisto 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
"폼 인라인"뿐만 아니라 부트 스트랩 3에 존재하는, 그리고 그 핵심이라고 생각 : 1
당 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-horizontal 클래스 가 실제로 서로 아래에 필드가있는 양식을위한 것임을 알 수 있습니다. 즉, 대부분의 사람들이 수직 양식으로 생각하는 것입니다. 페이지를 가로 지르는 양식의 올바른 클래스는 form-inline 입니다. 그들은 이미 수평 이라는 용어를 오용했기 때문에 인라인 이라는 용어를 도입했을 것입니다 .

여기에있는 일부 답변에서 일부 사람들이이 두 클래스를 하나의 형식으로 사용하고 있음을 알 수 있습니다! 다른 사람들은 실제로 form-inline을 원할 때 form-horizontal이 필요하다고 생각합니다. .

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>

다음을 생성합니다.

여기에 이미지 설명 입력


7
코드를 복사하여 붙여 넣으면 Bootstrap 3.3.4로 입력 한 텍스트 위에 이름 레이블이 표시됩니다.
Mike Covington

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

네, 동의합니다. 전체 부트 스트랩 씬을 처음 접했을 때이 글을 썼습니다.
Tom 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

부트 스트랩 문서 "Horizontal form Bootstrap의 사전 정의 된 그리드 클래스를 사용하여 .form-horizontal을 양식에 추가하여 레이블과 양식 컨트롤 그룹을 수평 레이아웃으로 정렬합니다. 이렇게하면 .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
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>

또한 우리는 간단히 사용할 수 있습니다

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