รูปแบบแบบอินไลน์ภายในแนวนอนในรูปแบบ bootstrap Twitter?


199

อะไรคือวิธีที่ดีที่สุดในการออกแบบฟอร์มที่มีลักษณะเช่นนี้ (โปรดดูลิงค์ด้านล่าง) ใน twitter bootstrap โดยไม่มีคลาสแบบโฮมเมด

เป็นไปได้หรือไม่ที่จะตั้งค่า form-inline ภายในภายใน form-horizontal ดังตัวอย่างด้านล่าง:

สกรีนช็อตของเป้าหมาย UI

คำตอบ:


316

อย่าวาง<form>แท็กซึ่งจะไม่ทำงาน เพียงแค่ใช้คลาส Bootstrap

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นี้

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-inlineจะได้รับการจัดแต่งทรงผม PROPPER .controlsภายใน
คุณสามารถทดสอบบนjsfiddle นี้


3
นอกจากนี้คุณยังสามารถเพิ่มคลาสฟอร์มบน divs ในกรณีของฉันฉันใช้คลาสฟอร์มแนวตั้งใน span6 div และคลาสฟอร์มแนวนอนใน span12 div
Iftah

3
ใช้งานได้กับ bootstrap2 สำหรับ bootstrap 3 เข้าชม: stackoverflow.com/questions/18429121/…
Tomislav Muic

1
ใน bootstrap 3 หากมีช่องว่างใต้อินพุตให้ลบ "form-group" มันเพิ่มช่องว่าง 15px ที่ด้านล่างของแต่ละ div ที่คุณใช้ด้วย
darkzangel

คุณไม่จำเป็นต้องผสมกลุ่มแบบฟอร์มกับแถวที่ตัวอย่าง Key + Value @ rap-2-h: คุณสามารถคัดลอกวางโค้ดตัวอย่างและคลิกเรียกใช้
เซบาสเตียน

มันใช้งานได้ แต่ฉันสามารถทำให้มันง่ายขึ้นใน Bootstrap 3 เวอร์ชันปัจจุบัน ... ดูเหมือนว่ากุญแจสำหรับวิธีนี้ก็แค่ใส่ตัวควบคุมอินพุทเข้าไปใน div ไม่เช่นนั้นโครงร่างตาราง col-xx ไม่ทำงาน ไม่จำเป็นต้องวางซ้อนกลุ่มแบบฟอร์ม parent col-xx- # สามารถแบ่ง div เดียวกันและไม่จำเป็นต้องใช้คลาส "row" เนื่องจากรูปแบบพาเรนต์เป็นแบบฟอร์มแนวนอน (100%)
Tony Wall

92

สำหรับตัวอย่าง bootstrap 3 ด้านบนใช้งานได้ แต่มีความซับซ้อนมากกว่าการใช้ form-group ใช้ 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" หากคุณแทนที่มันไปที่ "display: inline-block" มันควรจะทำงานได้
Cédric Guillemette

1
สิ่งนี้ไม่ทำงาน ลองทำสิ่งที่คำถามถามซึ่งเป็นไปไม่ได้ที่จะใช้แบบฟอร์มอินไลน์
เซบาสเตียน

ปัญหาเดียวของปัญหานี้คือพื้นที่ย่อยไม่ได้ถูกขยายให้เต็มความกว้างและความพยายามในการใช้การกำหนดขนาดกริดจะถูกบีบให้สัมพันธ์กับความกว้างของเนื้อหาขั้นต่ำที่ต้องการ วิธีแก้ปัญหาอื่นดีกว่าโดยไม่ต้องมี div จำนวนมาก (ดูความคิดเห็นของฉันที่นั่น)
Tony Wall

3
คุณต้อง
ล้อม

jsfiddle.net/9637fywbสิ่งนี้ดูเหมือนจะไม่ทำตามที่ต้องการ - ใช้ bootstrap CDN ล่าสุด (3.3.5) ตัวอย่างนี้ยังไม่ได้คำนึงถึงสองป้ายภายในส่วน "อินไลน์" บางทีซอก็ขาดเสื้อคลุมบางอย่าง แต่ดูเหมือนว่าควรจะรวมอยู่ในคำตอบถ้าเป็นเช่นนั้น
emragins

14

สิ่งนี้ใช้ twitter bootstrap 3.x กับคลาส css หนึ่งคลาสเพื่อให้ได้เลเบลเพื่อนั่งด้านบนของอินพุต นี่คือลิงก์ซอให้ตรวจสอบให้แน่ใจว่าได้ขยายแผงผลลัพธ์ให้กว้างพอที่จะเห็นเอฟเฟกต์

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" ร่วมกับ div class = "form-group col-X" 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"ก่อนอินพุต

ตัวอย่าง:

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