Przejdź do głównej zawartości Przejdź do nawigacji w dokumentach
in English

Układ

Nadaj swoim formularzom pewną strukturę — ​​od wbudowanych przez poziome po niestandardowe siatki — dzięki naszym opcjom układu formularza.

Formularze

Każda grupa pól formularza powinna znajdować się w <form>elemencie. Bootstrap nie zapewnia domyślnego stylu <form>elementu, ale istnieją pewne zaawansowane funkcje przeglądarki, które są dostarczane domyślnie.

  • Nie znasz formularzy przeglądarki? Rozważ przejrzenie dokumentów formularza MDN, aby uzyskać przegląd i pełną listę dostępnych atrybutów.
  • <button>s w <form>domyślnie type="submit", więc staraj się być konkretny i zawsze dołączaj type.
  • Możesz wyłączyć każdy element formularza w formularzu za pomocą disabledatrybutu <form>.

Ponieważ Bootstrap ma zastosowanie display: blocki width: 100%do prawie wszystkich naszych kontrolek formularzy, formularze będą domyślnie układane w stos pionowo. Dodatkowe klasy mogą służyć do różnicowania tego układu na podstawie formularza.

Narzędzia

Narzędzia do tworzenia marginesów to najłatwiejszy sposób na dodanie pewnej struktury do formularzy. Zapewniają podstawowe grupowanie etykiet, kontrolek, opcjonalny tekst formularza i komunikaty dotyczące walidacji formularzy. Zalecamy trzymanie się margin-bottomnarzędzi i używanie jednego kierunku w całym formularzu, aby zapewnić spójność.

Możesz swobodnie budować swoje formularze tak, jak chcesz, za pomocą <fieldset>s, <div>s lub prawie każdego innego elementu.

<div class="mb-3">
  <label for="formGroupExampleInput" class="form-label">Example label</label>
  <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input placeholder">
</div>
<div class="mb-3">
  <label for="formGroupExampleInput2" class="form-label">Another label</label>
  <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input placeholder">
</div>

Siatka formularzy

Bardziej złożone formularze można budować za pomocą naszych klas siatek. Użyj ich w przypadku układów formularzy, które wymagają wielu kolumn, różnych szerokości i dodatkowych opcji wyrównania. Wymaga $enable-grid-classeswłączonej zmiennej Sass (domyślnie włączonej).

<div class="row">
  <div class="col">
    <input type="text" class="form-control" placeholder="First name" aria-label="First name">
  </div>
  <div class="col">
    <input type="text" class="form-control" placeholder="Last name" aria-label="Last name">
  </div>
</div>

Rynny

Dodając klasy modyfikatorów rynny , możesz mieć kontrolę nad szerokością rynny zarówno w kierunku liniowym, jak i blokowym. Wymaga również włączenia $enable-grid-classeszmiennej Sass (domyślnie włączonej).

<div class="row g-3">
  <div class="col">
    <input type="text" class="form-control" placeholder="First name" aria-label="First name">
  </div>
  <div class="col">
    <input type="text" class="form-control" placeholder="Last name" aria-label="Last name">
  </div>
</div>

Za pomocą systemu siatki można również tworzyć bardziej złożone układy.

<form class="row g-3">
  <div class="col-md-6">
    <label for="inputEmail4" class="form-label">Email</label>
    <input type="email" class="form-control" id="inputEmail4">
  </div>
  <div class="col-md-6">
    <label for="inputPassword4" class="form-label">Password</label>
    <input type="password" class="form-control" id="inputPassword4">
  </div>
  <div class="col-12">
    <label for="inputAddress" class="form-label">Address</label>
    <input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
  </div>
  <div class="col-12">
    <label for="inputAddress2" class="form-label">Address 2</label>
    <input type="text" class="form-control" id="inputAddress2" placeholder="Apartment, studio, or floor">
  </div>
  <div class="col-md-6">
    <label for="inputCity" class="form-label">City</label>
    <input type="text" class="form-control" id="inputCity">
  </div>
  <div class="col-md-4">
    <label for="inputState" class="form-label">State</label>
    <select id="inputState" class="form-select">
      <option selected>Choose...</option>
      <option>...</option>
    </select>
  </div>
  <div class="col-md-2">
    <label for="inputZip" class="form-label">Zip</label>
    <input type="text" class="form-control" id="inputZip">
  </div>
  <div class="col-12">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" id="gridCheck">
      <label class="form-check-label" for="gridCheck">
        Check me out
      </label>
    </div>
  </div>
  <div class="col-12">
    <button type="submit" class="btn btn-primary">Sign in</button>
  </div>
</form>

Forma pozioma

Twórz formularze poziome z siatką, dodając .rowklasę do grup formularzy i używając .col-*-*klas do określania szerokości etykiet i kontrolek. Pamiętaj, aby dodać .col-form-labelrównież do swoich <label>s, aby były wyśrodkowane w pionie z powiązanymi kontrolkami formularza.

Czasami może być konieczne użycie narzędzi do marginesów lub dopełniania, aby uzyskać idealne wyrównanie, którego potrzebujesz. Na przykład usunęliśmy padding-topetykietę na naszych skumulowanych wejściach radiowych, aby lepiej wyrównać linię bazową tekstu.

Radia
<form>
  <div class="row mb-3">
    <label for="inputEmail3" class="col-sm-2 col-form-label">Email</label>
    <div class="col-sm-10">
      <input type="email" class="form-control" id="inputEmail3">
    </div>
  </div>
  <div class="row mb-3">
    <label for="inputPassword3" class="col-sm-2 col-form-label">Password</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="inputPassword3">
    </div>
  </div>
  <fieldset class="row mb-3">
    <legend class="col-form-label col-sm-2 pt-0">Radios</legend>
    <div class="col-sm-10">
      <div class="form-check">
        <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked>
        <label class="form-check-label" for="gridRadios1">
          First radio
        </label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2">
        <label class="form-check-label" for="gridRadios2">
          Second radio
        </label>
      </div>
      <div class="form-check disabled">
        <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled>
        <label class="form-check-label" for="gridRadios3">
          Third disabled radio
        </label>
      </div>
    </div>
  </fieldset>
  <div class="row mb-3">
    <div class="col-sm-10 offset-sm-2">
      <div class="form-check">
        <input class="form-check-input" type="checkbox" id="gridCheck1">
        <label class="form-check-label" for="gridCheck1">
          Example checkbox
        </label>
      </div>
    </div>
  </div>
  <button type="submit" class="btn btn-primary">Sign in</button>
</form>

Rozmiar etykiety w formie poziomej

Upewnij się, że używasz .col-form-label-smlub .col-form-label-lgdo swojego <label>s lub <legend>s, aby prawidłowo podążać za rozmiarem .form-control-lgi .form-control-sm.

<div class="row mb-3">
  <label for="colFormLabelSm" class="col-sm-2 col-form-label col-form-label-sm">Email</label>
  <div class="col-sm-10">
    <input type="email" class="form-control form-control-sm" id="colFormLabelSm" placeholder="col-form-label-sm">
  </div>
</div>
<div class="row mb-3">
  <label for="colFormLabel" class="col-sm-2 col-form-label">Email</label>
  <div class="col-sm-10">
    <input type="email" class="form-control" id="colFormLabel" placeholder="col-form-label">
  </div>
</div>
<div class="row">
  <label for="colFormLabelLg" class="col-sm-2 col-form-label col-form-label-lg">Email</label>
  <div class="col-sm-10">
    <input type="email" class="form-control form-control-lg" id="colFormLabelLg" placeholder="col-form-label-lg">
  </div>
</div>

Rozmiary kolumn

Jak pokazano w poprzednich przykładach, nasz system siatki pozwala na umieszczenie dowolnej liczby .cols w obrębie .row. Podzielą dostępną szerokość równo między siebie. Możesz także wybrać podzbiór swoich kolumn, aby zajmować mniej lub więcej miejsca, podczas gdy pozostałe .colkolumny równo podzielą resztę za pomocą określonych klas kolumn, takich jak .col-sm-7.

<div class="row g-3">
  <div class="col-sm-7">
    <input type="text" class="form-control" placeholder="City" aria-label="City">
  </div>
  <div class="col-sm">
    <input type="text" class="form-control" placeholder="State" aria-label="State">
  </div>
  <div class="col-sm">
    <input type="text" class="form-control" placeholder="Zip" aria-label="Zip">
  </div>
</div>

Automatyczne dopasowywanie

Poniższy przykład wykorzystuje narzędzie flexbox do pionowego wyśrodkowania zawartości i zmian .coltak .col-auto, aby Twoje kolumny zajmowały tylko tyle miejsca, ile jest potrzebne. Innymi słowy, same rozmiary kolumn zależą od zawartości.

@
<form class="row gy-2 gx-3 align-items-center">
  <div class="col-auto">
    <label class="visually-hidden" for="autoSizingInput">Name</label>
    <input type="text" class="form-control" id="autoSizingInput" placeholder="Jane Doe">
  </div>
  <div class="col-auto">
    <label class="visually-hidden" for="autoSizingInputGroup">Username</label>
    <div class="input-group">
      <div class="input-group-text">@</div>
      <input type="text" class="form-control" id="autoSizingInputGroup" placeholder="Username">
    </div>
  </div>
  <div class="col-auto">
    <label class="visually-hidden" for="autoSizingSelect">Preference</label>
    <select class="form-select" id="autoSizingSelect">
      <option selected>Choose...</option>
      <option value="1">One</option>
      <option value="2">Two</option>
      <option value="3">Three</option>
    </select>
  </div>
  <div class="col-auto">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" id="autoSizingCheck">
      <label class="form-check-label" for="autoSizingCheck">
        Remember me
      </label>
    </div>
  </div>
  <div class="col-auto">
    <button type="submit" class="btn btn-primary">Submit</button>
  </div>
</form>

Następnie możesz ponownie zmiksować to z klasami kolumn specyficznymi dla rozmiaru.

@
<form class="row gx-3 gy-2 align-items-center">
  <div class="col-sm-3">
    <label class="visually-hidden" for="specificSizeInputName">Name</label>
    <input type="text" class="form-control" id="specificSizeInputName" placeholder="Jane Doe">
  </div>
  <div class="col-sm-3">
    <label class="visually-hidden" for="specificSizeInputGroupUsername">Username</label>
    <div class="input-group">
      <div class="input-group-text">@</div>
      <input type="text" class="form-control" id="specificSizeInputGroupUsername" placeholder="Username">
    </div>
  </div>
  <div class="col-sm-3">
    <label class="visually-hidden" for="specificSizeSelect">Preference</label>
    <select class="form-select" id="specificSizeSelect">
      <option selected>Choose...</option>
      <option value="1">One</option>
      <option value="2">Two</option>
      <option value="3">Three</option>
    </select>
  </div>
  <div class="col-auto">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" id="autoSizingCheck2">
      <label class="form-check-label" for="autoSizingCheck2">
        Remember me
      </label>
    </div>
  </div>
  <div class="col-auto">
    <button type="submit" class="btn btn-primary">Submit</button>
  </div>
</form>

Formularze wbudowane

Użyj .row-cols-*klas, aby stworzyć responsywne układy poziome. Dodając klasy modyfikatorów rynny , otrzymamy rynny w kierunku poziomym i pionowym. W wąskich mobilnych rzutniach .col-12pomaga układać kontrolki formularzy i nie tylko. Wyrównuje .align-items-centerelementy formularza do środka, dzięki czemu .form-checkboxwyrównanie jest prawidłowe.

@
<form class="row row-cols-lg-auto g-3 align-items-center">
  <div class="col-12">
    <label class="visually-hidden" for="inlineFormInputGroupUsername">Username</label>
    <div class="input-group">
      <div class="input-group-text">@</div>
      <input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Username">
    </div>
  </div>

  <div class="col-12">
    <label class="visually-hidden" for="inlineFormSelectPref">Preference</label>
    <select class="form-select" id="inlineFormSelectPref">
      <option selected>Choose...</option>
      <option value="1">One</option>
      <option value="2">Two</option>
      <option value="3">Three</option>
    </select>
  </div>

  <div class="col-12">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" id="inlineFormCheck">
      <label class="form-check-label" for="inlineFormCheck">
        Remember me
      </label>
    </div>
  </div>

  <div class="col-12">
    <button type="submit" class="btn btn-primary">Submit</button>
  </div>
</form>