--- title: Form controls layout: documentation doc-tab: form doc-subtab: general --- {% capture example %}

This username is available

This email is invalid

{% endcapture %} {% capture field_example %}

This is a help text

{% endcapture %} {% capture fields_example %}
{% endcapture %} {% capture control_input_example %}
{% endcapture %} {% capture control_select_example %}
{% endcapture %} {% capture control_button_example %}
{% endcapture %} {% capture icons_example %}

{% endcapture %} {% capture select_icons_example %}

{% endcapture %} {% capture has_icons_small_example %}
{% endcapture %} {% capture has_icons_normal_example %}
{% endcapture %} {% capture has_icons_medium_example %}
{% endcapture %} {% capture has_icons_large_example %}
{% endcapture %} {% capture addons_example %}
Search
{% endcapture %} {% capture addons_static_example %}

@gmail.com

{% endcapture %} {% capture addons_expanded_example %}

Transfer

Transfer

{% endcapture %} {% capture addons_expanded_fullwidth_example %}
{% endcapture %} {% capture addons_center_example %}

Transfer

{% endcapture %} {% capture addons_right_example %}

Transfer

{% endcapture %} {% capture group_example %}

Submit

Cancel

{% endcapture %} {% capture group_centered_example %}

Submit

Cancel

{% endcapture %} {% capture group_right_example %}

Submit

Cancel

{% endcapture %} {% capture group_expanded_example %}

Search

{% endcapture %} {% capture group_multiline_example %}

One

Two

Three

Four

Five

Size

Seven

Eight

Nine

Ten

Eleven

Twelve

Thirteen

{% endcapture %} {% capture horizontal_form_example %}

Do not enter the first zero

This field is required

{% endcapture %} {% capture field_label_example %}
{% endcapture %} {% include subnav-form.html %}

Form controls

All generic form controls, designed for consistency


The following form controls classes are supported:

  • .label
  • .input
  • .textarea
  • .select
  • .checkbox
  • .radio
  • .button
  • .help

Each of them should be wrapped in a .control container.
When combining several controls in a form, use the .field class as a container, to keep the spacing consistent.

{{example}}
{% highlight html %}{{example}}{% endhighlight %}

Form field

The field container is a simple container for:

  • a text label
  • a form control
  • an optional helptext
{{field_example}}
{% highlight html %}{{field_example}}{% endhighlight %}

This container allows form fields to be spaced consistently.

{{fields_example}}
{% highlight html %}{{fields_example}}{% endhighlight %}

Form control

The control is a versatile container meant to enhance single form controls. Because it has the same height as a control elements, it can only contain the following elements:

  • input
  • select
  • button
  • icon
{{control_input_example}}
{% highlight html %}{{control_input_example}}{% endhighlight %}
{{control_select_example}}
{% highlight html %}{{control_select_example}}{% endhighlight %}
{{control_button_example}}
{% highlight html %}{{control_button_example}}{% endhighlight %}

With icons

You can append one of 2 modifiers on a control:

  • has-icons-left
  • and/or has-icons-right

You also need to add a modifier on the icon:

  • icon is-left if has-icons-left is used
  • icon is-right if has-icons-right is used

The size of the input will define the size of the icon container.

{{icons_example}}
{% highlight html %}{{icons_example}}{% endhighlight %}

You can append icons to select dropdowns as well.

{{select_icons_example}}
{% highlight html %}{{select_icons_example}}{% endhighlight %}

If the control contains an icon, Bulma will make sure the icon remains centered, no matter the size of the input or of the icon.

{{has_icons_small_example}}
{% highlight html %}{{has_icons_small_example}}{% endhighlight %}
{{has_icons_normal_example}}
{% highlight html %}{{has_icons_normal_example}}{% endhighlight %}
{{has_icons_medium_example}}
{% highlight html %}{{has_icons_medium_example}}{% endhighlight %}
{{has_icons_large_example}}
{% highlight html %}{{has_icons_large_example}}{% endhighlight %}

Form addons

If you want to attach controls together, use the has-addons modifier on the field container:

{{addons_example}}
{% highlight html %}{{addons_example}}{% endhighlight %}

You can attach inputs, buttons, and dropdowns only.

New! 0.4.2

It can be useful to append a static button.

{{addons_static_example}}
{% highlight html %}{{addons_static_example}}{% endhighlight %}

Use the is-expanded modifier on the element you want to fill up the remaining space (in this case, the input):

{{addons_expanded_example}}
{% highlight html %}{{addons_expanded_example}}{% endhighlight %}

If you want a full width select dropdown, pair control is-expanded with select is-fullwidth.

{{addons_expanded_fullwidth_example}}
{% highlight html %}{{addons_expanded_fullwidth_example}}{% endhighlight %}

Use the has-addons-centered or the has-addons-right modifers to alter the alignment.

{{addons_center_example}}
{% highlight html %}{{addons_center_example}}{% endhighlight %}
{{addons_right_example}}
{% highlight html %}{{addons_right_example}}{% endhighlight %}

Form group

If you want to group controls together, use the is-grouped modifier on the field container.

{{group_example}}
{% highlight html %}{{group_example}}{% endhighlight %}
Use the is-grouped-centered or the is-grouped-right modifers to alter the alignment.

{{group_centered_example}}
{% highlight html %}{{group_centered_example}}{% endhighlight %}
{{group_right_example}}
{% highlight html %}{{group_right_example}}{% endhighlight %}

Add the is-expanded modifier on the control element you want to fill up the remaining space with.

{{group_expanded_example}}
{% highlight html %}{{group_expanded_example}}{% endhighlight %}

New! 0.4.4

Add the is-grouped-multiline modifier to allow controls to fill up multiple lines. This is ideal for a long list of controls.

{{group_multiline_example}}
{% highlight html %}{{group_multiline_example}}{% endhighlight %}

Horizontal form

If you want a horizontal form control, use the is-horizontal modifier on the field container, in which you include:

  • field-label for the side label
  • field-body for the input/select/textarea container

You can use is-grouped or has-addons for the child elements.

{{horizontal_form_example}}
{% highlight html %}{{horizontal_form_example}}{% endhighlight %}

To preserve the vertical alignment of labels with each type and size of control, the .field-label comes with 4 size modifiers:

  • .is-small
  • .is-normal for any .input or .button
  • .is-medium
  • .is-large
{{field_label_example}}
{% highlight html %}{{field_label_example}}{% endhighlight %}