트위터 부트 스트랩에서 수평 양식 내부의 인라인 양식?


199

수제 수업없이 트위터 부트 스트랩에서 다음과 같은 양식을 디자인하는 가장 좋은 방법은 무엇입니까?

아래 예제와 같이 양식 가로 안에 내부 양식 인라인을 설정할 수 있습니까?

UI 목표 스크린 샷

답변:


316

<form>태그를 중첩하지 마십시오 . 작동하지 않습니다. Bootstrap 클래스 만 사용하십시오.

부트 스트랩 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>

여러 가지 방법으로이 동작을 수행 할 수 있습니다. 이는 단지 예일뿐입니다. 이 bootply에서 그것을 테스트

부트 스트랩 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-inline에서 propper 스타일을 얻는 데 사용 하고 .controls있습니다. jsfiddle
에서 테스트 할 수 있습니다


3
div에 폼 클래스를 추가 할 수도 있습니다. 제 경우에는 span6 div에서 세로 폼 클래스를 사용하고 span12 div에서 가로 폼 클래스를 사용했습니다
Iftah

3
이것은 bootstrap2에서 작동합니다. 부트 스트랩 3을 보려면 다음 사이트를 방문하십시오 stackoverflow.com/questions/18429121/...
토미 슬라브 Muic

1
부트 스트랩 3에서 입력 아래에 간격이 있으면 "form-group"을 제거하십시오. 사용하는 각 div의 맨 아래에 15px 간격을 추가합니다.
darkzangel

키 + 값 예에서 양식 그룹을 행과 혼합 할 필요는 없습니다. @ rap-2-h : 예제 코드를 복사하여 붙여넣고 실행을 클릭 할 수 있습니다.
Sebastian

이것은 작동하지만 현재 버전의 Bootstrap 3에서 단순화 할 수있었습니다 ...이 솔루션의 핵심은 입력 컨트롤을 div 안에 넣는 것입니다. 그렇지 않으면 col-xx 그리드 레이아웃이 작동하지 않습니다. 양식 그룹을 중첩 할 필요는 없었으며 상위 col-xx- #은 동일한 div를 공유 할 수 있으며 상위 양식이 이미 양식 수평 (100 %)이므로 "행"클래스가 필요하지 않습니다.
Tony Wall

92

위의 부트 스트랩 3 예제의 경우 양식 그룹을 사용하는 대신 인라인하려는 필드에 form-inline을 사용하는 것이 아니라 지나치게 복잡합니다.

예 :

<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"을 설정하는 form-control 클래스 때문에 작동하지 않을 수 있습니다. "display : inline-block"으로 덮어 쓰면 작동합니다.
Cédric Guillemette

1
작동하지 않습니다. 질문이 요구하는 것을 시도하십시오. 양식 인라인으로는 불가능합니다.
Sebastian

이것의 유일한 문제는 하위 영역이 전체 너비로 확장되지 않으며 그리드 크기 조정을 사용하려는 시도는 필요한 최소 콘텐츠 너비에 비례하여 찌그러 질 것입니다. 다른 솔루션은 너무 많은 div가 없으면 더 좋습니다 (내 의견 참조).
Tony Wall

3
모든 양식 그룹을 양식 인라인 클래스로 포장해야합니다.
ymakux

jsfiddle.net/9637fywb 현재 최신 부트 스트랩 CDN (3.3.5)을 사용하여 원하는대로 작동하지 않는 것 같습니다. 이 예제는 또한 "인라인"섹션 안에있는 두 개의 레이블을 설명하지 않습니다. 아마도 바이올린에는 일종의 포장지가 누락되어 있지만 대답에 포함되어야하는 것처럼 보입니다.
emragins

14

이것은 하나의 CSS 클래스와 트위터 부트 스트랩 3.x를 사용하여 입력 위에 레이블을 가져옵니다. 여기에 바이올린 링크 가 있습니다. 효과를 볼 수있을 정도로 결과 패널을 넓게 확장하십시오.

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

부트 스트랩 4는 div class = "form-group col-X"와 함께 div class = "form-row"를 사용합니다. X는 필요한 너비입니다. 멋진 인라인 열을 얻을 수 있습니다. 바이올린을 참조하십시오 .

<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

나는 이것이 오래된 대답이라는 것을 알고 있지만 여기 내가 일반적으로하는 일이 있습니다.

CSS :

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

그런 다음 div에 인라인 할 필드를 감싸고 입력에 .form-control-inline을 추가하십시오 (예 :

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

간단하게 class="form-inline"하려면 입력 앞에 a 를 추가하십시오 .

예:

<div class="col-md-4 form-inline"> //add the class here...
     <label>Lot Size:</label>
     <input type="text" value="" name="" class="form-control" >
 </div>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.