--- title: Elements seoTitle: Form elements summary: Forms are one of the most important types of interaction with a website or app. Since their aim is to enable users to make a purchase, subscribe to a service or sign up to create an account, it's important to make sure they are easy to complete and help increase conversion rates. Use the available elements to create forms which are well-structured and user-friendly. docs-libs: [nouislider] description: Build user-friendly forms with styled inputs, selects, checkboxes, and radios. Learn about states, sizes, and layout options. order: 1 related: [/ui/forms/validation, /ui/forms/helpers, /ui/forms/fieldset, /ui/plugins/date-picker, /ui/plugins/advanced-select] --- import Example from '@components/Example.astro'; import CodeDocs from '@components/CodeDocs.astro'; import Icon from '@ui/Icon.astro' ## Classic inputs Use classic, user-friendly inputs, label them appropriately and include input placeholders that will help users avoid confusion when completing a form. Add the `form-control` class to style your input controls. ```html ``` All variants of the input control are available in the examples below:
## Form control rounded Use the `form-control-rounded` class if you prefer form controls with rounded corners.
## Form control flush You can remove borders from your form control by adding the `form-control-flush` class. ## Input with icon Add [icons](/ui/components/icon) to your input controls to suggest users what they should enter or inform them of the current state of a form element.
## Separated inputs Include an additional element in your input section, such as a [button](/ui/components/button) which can be used to submit the information entered in the input control.
## Textarea and select Use a multi-line text input control to enable users to enter longer pieces of text. The control will automatically adjust to the length of the text entered. Add one of the available selects - either a dropdown or a multiple choice select - to let users choose from a predefined set of options.
Select
Select multiple
## Input size Choose the size of an input control that will go well with your form design. Besides the default size, you can also use small and large input controls.
## Datalists Use the `datalist` element to add an autocomplete feature to your input control. The list of available options will display once a user starts to type and will make it quicker to complete form sections.
## Toggle switches Use toggle switches for the elements of your form which require choosing between two opposing states.
Toggle switches
Single switch
## Radios Use radio buttons for the parts of your form which require users to choose one option from a set of two or more mutually exclusive options.
Radios
Inline Radios
## Checkboxes Use checkboxes if you want to allow users to select more than one option from a set of predefined options or to turn an option on or off.
Checkboxes
Inline Checkboxes
## Range input Add a [range slider](/ui/plugins/range-slider) to make it possible for users to set a value or range, such as a price range or a time frame.
## Input group Create a group of input controls and place add-ons on either side of an input.
@
.tabler.io
https:// .tabler.io
## Input with checkboxes or radios Add checkboxes or radio buttons on either side of your input control.
## Input with prepended or appended text Add text to your input control, either before or after the text which is to be entered by a user.
https://tabler.io/users/
.tabler.io
## Input with appended link Include a link in your input control to add a clickable element within the control.
## Input with appended kbd Include a `` in your input control to add a shortcut hint to the control.
ctrl + K
## Input with appended icon links Add an icon link which you want to display at the end of your input control to visually represent actions which a user can take.
## Horizontal form Put the label and the field in one `row` to place them side by side. The label takes `col-form-label` instead of `form-label`, which keeps it aligned with the field rather than sitting above it. Add `required` to the label to append a red asterisk.
## Form footer Wrap the buttons that close a form in `form-footer`. It only adds the top margin that separates them from the last field, so the spacing is the same in every form.
## Accessibility - Every field needs a `label` with a `for` that matches the field id. A placeholder is not a label - it disappears as soon as the user types. - When the design has no room for a visible label, keep the `label` and hide it with `visually-hidden` rather than dropping it. - Tie help text and errors to the field with `aria-describedby`, so they are read together with it. See [form helpers](/ui/forms/helpers) and [validation states](/ui/forms/validation). - Mark a required field with the `required` attribute, not only with an asterisk in the label. - Group related checkboxes or radios in a `fieldset` with a `legend`. The legend is the only thing that names the group. See [fieldsets](/ui/forms/fieldset). - Keep `input` types honest - `email`, `tel`, `url` and `number` change the on-screen keyboard on phones and let the browser validate for you. - Do not disable a field to make it read-only. `disabled` removes it from the tab order and from the submitted data; `readonly` keeps both. ## SCSS variables Use these SCSS variables to customize form controls. The default values are: