Rozložení
Dejte svým formulářům určitou strukturu – od vložených přes vodorovné až po vlastní implementace mřížky – pomocí našich možností rozvržení formuláře.
formuláře
Každá skupina polí formuláře by měla být umístěna v <form>
prvku. Bootstrap neposkytuje pro prvek žádný výchozí styl <form>
, ale ve výchozím nastavení jsou poskytovány některé výkonné funkce prohlížeče.
- Jste ve formulářích prohlížeče noví? Zvažte prostudování dokumentace formuláře MDN , kde naleznete přehled a úplný seznam dostupných atributů.
<button>
s ve<form>
výchozím nastavenítype="submit"
, takže se snažte být konkrétní a vždy zahrňtetype
.
Protože Bootstrap platí display: block
pro width: 100%
téměř všechny naše ovládací prvky formulářů, formuláře se ve výchozím nastavení skládají svisle. Další třídy lze použít ke změně tohoto rozvržení na základě jednotlivých formulářů.
Utility
Nástroje okrajů jsou nejjednodušší způsob, jak do formulářů přidat nějakou strukturu. Poskytují základní seskupení štítků, ovládacích prvků, volitelného textu formuláře a zpráv pro ověření formuláře. Doporučujeme držet se margin-bottom
nástrojů a používat jeden směr v celém formuláři pro konzistenci.
Neváhejte a vytvořte si své formuláře, jak chcete, s <fieldset>
s, <div>
s nebo téměř jakýmkoli jiným prvkem.
<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>
Mřížka formuláře
Složitější formuláře lze sestavit pomocí našich tříd mřížky. Použijte je pro rozvržení formuláře, která vyžadují více sloupců, různé šířky a další možnosti zarovnání. Vyžaduje $enable-grid-classes
povolení proměnné Sass (ve výchozím nastavení zapnuto).
<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>
Žlaby
Přidáním tříd modifikátoru okapu můžete mít kontrolu nad šířkou okapu ve směru inline i bloku. Vyžaduje také $enable-grid-classes
povolení proměnné Sass (ve výchozím nastavení zapnuto).
<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>
Pomocí mřížkového systému lze vytvořit i složitější rozvržení.
<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>
Horizontální tvar
Vytvořte vodorovné formuláře s mřížkou přidáním .row
třídy do skupin formulářů a pomocí .col-*-*
tříd zadejte šířku štítků a ovládacích prvků. Nezapomeňte také přidat .col-form-label
do <label>
s, aby byly svisle vystředěny s přidruženými ovládacími prvky formuláře.
Někdy možná budete muset použít nástroje pro okraje nebo výplň, abyste vytvořili dokonalé zarovnání, které potřebujete. Odstranili jsme například padding-top
štítek naskládaných rádiových vstupů, abychom lépe zarovnali účaří textu.
<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>
Horizontální velikost štítku formuláře
Ujistěte se, že používáte .col-form-label-sm
nebo .col-form-label-lg
na vaše <label>
s nebo <legend>
s, abyste správně dodrželi velikost .form-control-lg
a .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>
Dimenzování sloupců
Jak je ukázáno v předchozích příkladech, náš mřížkový systém vám umožňuje umístit libovolný počet .col
s do .row
. Rozdělí dostupnou šířku rovnoměrně mezi ně. Můžete si také vybrat podmnožinu svých sloupců, aby zabíraly více či méně místa, zatímco zbývající .col
s rovnoměrně rozdělí zbytek, se specifickými třídami sloupců, jako je .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>
Automatické nastavení velikosti
Níže uvedený příklad používá obslužný program flexbox ke svislému vystředění obsahu a změny .col
tak .col-auto
, aby vaše sloupce zabíraly pouze tolik místa, kolik je potřeba. Jinými slovy, velikost sloupce závisí na obsahu.
<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>
Poté to můžete znovu smíchat s třídami sloupců specifických pro velikost.
<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>
Inline formuláře
Pomocí .row-cols-*
tříd vytvořte responzivní horizontální rozvržení. Přidáním tříd modifikátoru okapů budeme mít okapy v horizontálním a vertikálním směru. V úzkých mobilních výřezech .col-12
pomáhá skládat ovládací prvky formuláře a další. .align-items-center
Zarovná prvky formuláře na střed a zarovná se .form-check
správně.
<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>