Bootstrap 3.0: Làm thế nào để có văn bản và đầu vào trên cùng một dòng?


89

Tôi hiện đang chuyển trang web của mình sang Bootstrap 3.0. Tôi đang gặp sự cố với tính năng nhập biểu mẫu và định dạng văn bản. Những gì hoạt động trong Bootstrap 2 không hoạt động trong Bootstrap 3.

Làm cách nào để lấy văn bản trên cùng một dòng trước và sau khi nhập biểu mẫu? Tôi đã thu hẹp nó thành vấn đề với lớp 'form-control "trong phiên bản Bootstrap 3 của ví dụ.

Tôi sẽ làm thế nào để lấy tất cả văn bản và đầu vào trên một dòng? Tôi muốn ví dụ bootstrap 3 giống ví dụ bootstrap 2 trong jsfiddle.

Ví dụ về JS fiddle

<div class="container ">
  <form>
      <h3> Format used to look like this in Bootstrap 2 </h3>
      <div class="row ">
          <label for="return1"><b>Return:</b></label>
          <input id="return1" name='return1' class=" input input-sm" style="width:150px"
                 type="text" value='8/28/2013'>
          <span id='return1' style='color:blue'> +/- 14 Days</span>
      </div>

       <br>   
       <br>   
           <h3> BootStrap 3 Version </h3>

      <div class="row">
          <label for="return2"><b>Return:</b></label>
          <input id="return2" name='return2' class="form-control input input-sm" style="width:150px"
                 type="text" value='8/28/2013'>
          <span id='return2' style='color:blue'> +/- 14 Days</span>
      </div>
  </form>

Cập nhật: Tôi thay đổi mã thành mã này hoạt động nhưng hiện đang gặp sự cố với căn chỉnh. Bất kỳ ý tưởng?

<div class="form-group">
<div class="row">
    <div class="col-xs-3">
        <label for="class_type"><h2><span class=" label label-primary">Class Type</span></h2></label>
    </div>
    <div class="col-xs-2">
        <select name="class_type" id="class_type" class="  form-control input-lg" style="width:200px" autocomplete="off">
            <option >Economy</option>
            <option >Premium Economy</option>
            <option >Club World</option>
            <option >First Class</option>
        </select>
    </div>
 </div>


Cả hai đều giống nhau, bạn vừa có thêm một lớp form-controltrong ví dụ bootstrap 3 của bạn.
Kyle Needham

1
Hãy xem ví dụ trong tài liệu bootstrap. Bạn đang thiếu các lớp học trên nhãn getbootstrap.com/css/#forms-horizontal
Bộibox

Tôi xin lỗi nhưng tôi vẫn còn bối rối. Ví dụ thấp hơn (BS3) có lớp 'form-control' mang lại giao diện đẹp hơn. Tôi muốn giao diện đẹp hơn VÀ giữ văn bản và đầu vào trên cùng một dòng. Tôi đang thiếu gì?
fat fantasma

Hãy để tôi đặt câu hỏi theo một cách khác. Làm cách nào để lấy các trường văn bản và đầu vào trên cùng một dòng và được căn chỉnh trong các cột đẹp? Xem fiddle jsfiddle.net/fatfantasma/QwkpE này . Tất nhiên, tôi muốn thêm văn bản vào phía xa bên phải trên cùng một dòng. Làm thế nào tôi sẽ làm điều đó?
Fantasma chất béo

.input-lgtăng chiều cao của trường đầu vào, nhưng chúng tôi cũng cần một lớp để điều chỉnh chiều cao và kích thước nhãn.
Petrus Theron

Câu trả lời:


39

Tôi sẽ đặt từng phần tử mà bạn muốn nội dòng bên trong một div col-md- * riêng biệt trong hàng của bạn. Hoặc buộc các phần tử của bạn hiển thị nội dòng. Lớp điều khiển biểu mẫu hiển thị khối vì đó là cách mà bootstrap nghĩ rằng nó nên được thực hiện.


136

Trực tiếp từ tài liệu http://getbootstrap.com/css/#forms-horizontal .

Sử dụng các lớp lưới được xác định trước của Bootstrap để căn chỉnh các nhãn và nhóm điều khiển biểu mẫu trong một bố cục ngang bằng cách thêm .form-horizontalvào biểu mẫu (không nhất thiết phải là a <form>). Làm như vậy sẽ thay đổi .form-groupshoạt động như các hàng lưới, vì vậy không cần .row.

Mẫu vật:

<form class="form-horizontal">
  <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>

15
+1. Đây phải là câu trả lời được chấp nhận, vì nó liên kết tài liệu chính thức
EProgrammerNotFound

đó là câu trả lời chỉ liên kết và không được chấp nhận nếu không có ví dụ, trong trường hợp trang được tham chiếu thay đổi hoặc bị xóa.
NDM

tại sao câu trả lời đúng là câu trả lời đúng? đây phải là câu trả lời chính xác! @fat fantasma
JMASTER B

Nên quấn chúng trong một hình thức kiểm soát tĩnh điện, xem câu trả lời dưới đây
rmcsharry

2
@Whitecat đó là do thiết kế trên một bố cục đáp ứng - nhận được rằng để làm việc cũng sử dụng điện thoại di động col-XS- * chứ không phải là col-sm- *
niico

23

Những gì bạn cần là .form-inlinelớp học. Tuy nhiên, bạn cần phải cẩn thận, với .form.inlinelớp mới, bạn phải chỉ định chiều rộng cho mỗi điều khiển.

Hãy xem cái này


đây phải là câu trả lời tốt hơn lớp form-horizontalvì nó không buộc div với các form-groupchương trình lớp trong khối.
shawmzhu

Điều này chỉ áp dụng cho các biểu mẫu trong cửa sổ xem có chiều rộng ít nhất là 768px.
rmcsharry

13

Không ai trong số này làm việc cho tôi, phải sử dụng .form-control-staticlớp học.

http://getbootstrap.com/css/#forms-controls-static


1
Điều này thực sự hữu ích. Nếu không có này, các văn bản nhãn và nhập văn bản không phù hợp với col- -
Brendan Cody-Kenny

Điều này sẽ là câu trả lời chính xác, đặc biệt là nếu bạn muốn hình thức của bạn để quấn một cách chính xác trên các thiết bị nhỏ hơn
rmcsharry

Đúng vậy, điều này cũng phù hợp với tôi. Các giải pháp khác không thành công cho cột col-xs- *. Sử dụng 'form-control-static text-right' phù hợp với tôi trên BS 3.3.7.
Neutrino

10

Bạn có thể làm như thế này:

<form class="form-horizontal" role="form">
    <div class="form-group">
        <label for="inputType" class="col-sm-2 control-label">Label</label>
        <div class="col-sm-4">
            <input type="text" class="form-control" id="input" placeholder="Input text">
        </div>
    </div>
</form>

Vĩ cầm


4

chỉ cung cấp cho mẹ của div "class =" col-lg-12 ""

<div class="form-group">
<div class="row">
    <div class="col-xs-3">
        <label for="class_type"><h2><span class=" label label-primary">Class Type</span></h2></label>
    </div>
    <div class="col-xs-2">
        <select name="class_type" id="class_type" class="  form-control input-lg" style="width:200px" autocomplete="off">
            <option >Economy</option>
            <option >Premium Economy</option>
            <option >Club World</option>
            <option >First Class</option>
        </select>
    </div>
 </div>

nó sẽ là

<div class="form-group">
<div class="col-lg-12">
  <div class="row">
    <div class="col-xs-3">
        <label for="class_type"><h2><span class=" label label-primary">Class Type</span></h2></label>
    </div>
    <div class="col-xs-2">
        <select name="class_type" id="class_type" class="  form-control input-lg" style="width:200px" autocomplete="off">
            <option >Economy</option>
            <option >Premium Economy</option>
            <option >Club World</option>
            <option >First Class</option>
        </select>
    </div>
</div>
</div>

3

Cách tôi giải quyết nó chỉ đơn giản là thêm ghi đè cho tất cả các hộp văn bản của tôi trên css chính của trang web của tôi, như vậy:

.form-control {
    display:initial !important;
}

1
Điều này làm gì?
AgilePro


0

Trong Bootstrap 4 cho phần tử Ngang, bạn có thể sử dụng .rowvới .col-*-*các lớp để chỉ định chiều rộng của nhãn và điều khiển của mình. xem liên kết này .

Và nếu bạn muốn hiển thị một loạt nhãn, điều khiển biểu mẫu và các nút trên một hàng ngang, bạn có thể sử dụng .form-inlineđể biết thêm thông tin liên kết này


Câu hỏi nêu cụ thể Bootstrap 3.
blupointmedia

1
Tôi có vấn đề tương tự với bootstrap 4, và tôi đăng nó để giúp đỡ người khác
Liam

-2

Hoặc bạn có thể làm điều này:

<table>
  <tr>
    <td><b>Return:</b></td>
    <td><input id="return1" name='return1' 
              class=" input input-sm" style="width:150px"
              type="text" value='8/28/2013'></td>
  </tr>
</table>

Tôi đã thử mọi gợi ý ở trên và không có cách nào trong số chúng hoạt động. Tôi không muốn chọn một số cột cố định trong lưới 12 cột. Tôi muốn lời nhắc và đầu vào ngay sau nó, và tôi muốn các cột giãn ra khi cần.

Vâng, tôi biết, điều đó chống lại tất cả những gì bootstrap là về. Và bạn KHÔNG BAO GIỜ nên sử dụng bàn. Bởi vì DIV tốt hơn rất nhiều so với bảng. Nhưng vấn đề là các bảng, hàng và ô thực sự HOẠT ĐỘNG.

CÓ - TÔI THỰC SỰ biết rằng có những người ủng hộ CSS, và phản ứng đầu gối không bao giờ là không bao giờ sử dụng TABLE, TR và TD. Vâng, tôi biết rằng DIV class = "table" với DIV class = "row" và DIV class = "cell" tốt hơn nhiều. Trừ khi nó không hoạt động, và có nhiều trường hợp. Tôi không tin rằng mọi người nên bỏ qua những tình huống đó một cách mù quáng. Đôi khi, TABLE / TR / TD sẽ hoạt động tốt và không có lý do gì để sử dụng một cách tiếp cận phức tạp hơn và dễ hỏng hơn chỉ vì nó được coi là thanh lịch hơn. Một nhà phát triển nên hiểu lợi ích của các phương pháp tiếp cận khác nhau là gì và sự cân bằng, và không có quy tắc tuyệt đối nào rằng DIV tốt hơn.

"Trong trường hợp điển hình - dựa trên cuộc thảo luận này, tôi đã chuyển đổi một số tds và trs hiện có thành div. 45 phút làm rối tung nó cố gắng để mọi thứ xếp hàng cạnh nhau và tôi đã bỏ cuộc. TDs trở lại sau 10 giây - hoạt động - ngay lập tức - trên tất cả các trình duyệt, không cần phải làm gì nữa. Hãy cố gắng làm cho tôi hiểu - bạn có lý do nào để biện minh cho việc muốn tôi làm theo bất kỳ cách nào khác! " Xem [ https://stackoverflow.com/a/4278073/1758051]

Và điều này: "

Bố cục phải dễ dàng. Thực tế là có những bài báo viết về cách đạt được bố cục ba cột động với đầu trang và chân trang trong CSS cho thấy rằng đó là một hệ thống bố cục kém. Tất nhiên bạn có thể làm cho nó hoạt động, nhưng thực sự có hàng trăm bài báo trực tuyến về cách làm điều đó. Không có nhiều bài báo như vậy cho một bố cục tương tự với các bảng vì nó khá rõ ràng. Bất kể bạn nói gì khi chống lại các bảng và ủng hộ CSS, một sự thật này sẽ hoàn tác tất cả: bố cục ba cột cơ bản trong CSS thường được gọi là "Chén Thánh". "[ Https://stackoverflow.com/a/4964107/ 1758051]

Tôi vẫn chưa tìm ra cách nào để buộc các DIV phải luôn xếp hàng trong một cột trong mọi tình huống. Tôi tiếp tục nhận được những ví dụ nhỏ nhặt không thực sự đi vào vấn đề. "Đáp ứng" là cung cấp một cách mà chúng sẽ không phải lúc nào cũng xếp thành một cột. Tuy nhiên, nếu bạn thực sự muốn có một cột, bạn có thể mất hàng giờ để cố gắng làm cho DIV hoạt động. Đôi khi, bạn cần sử dụng công nghệ thích hợp bất kể những người nhiệt thành nói gì.


2
Các bảng không phản hồi.
Pedro Moreira

Mọi người đều biết rằng bảng không tự định dạng lại thành bảng không. Nhưng nếu những gì bạn cần là một hàng LUÔN LUÔN vẫn là một hàng. Bạn không thể thực thi điều này với thẻ DIV. Mọi người hành động như thể bạn luôn muốn sự đáp ứng, nhưng những gì bạn đang làm lại gây nhầm lẫn giữa "hầu hết thời gian" với "mọi lúc". Tại thời điểm viết, câu trả lời này có hai phiếu bầu. Nếu bạn đồng ý với quan điểm của tôi ở đây, rằng đôi khi bạn chỉ cần một TR sau đó hãy cho người khác biết.
AgilePro

Bạn có quyền có ý kiến ​​riêng của mình, nhưng tôi nghĩ rằng sự đồng thuận chung là bạn không bao giờ nên sử dụng bảng cho bất kỳ thứ gì khác hiển thị dữ liệu dạng bảng. Các bảng quá giới hạn về những gì chúng có thể làm và mức độ tùy chỉnh của chúng. Nếu bạn vẫn cần phải cung cấp cho các div khả năng chảy như hàng bảng và cột, hãy nhìn vào flex: css-tricks.com/snippets/css/a-guide-to-flexbox
Pedro Moreira
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.