--- layout: documentation doc-tab: elements doc-subtab: form --- {% include subnav-elements.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.

{% capture form_example %}

This username is available

This email is invalid

{% endcapture %}
{{form_example}}
{% highlight html %} {{form_example}} {% endhighlight %}

Colors

{% capture colors_example %}

{% endcapture %}
{{colors_example}}
{% highlight html %} {{colors_example}} {% endhighlight %}

{% capture sizes_example %}

{% endcapture %}

Sizes

{{sizes_example}}
{% highlight html %} {{sizes_example}} {% endhighlight %}

States

Normal

{% capture normal_example %}

{% endcapture %}
{{normal_example}}
{% highlight html %} {{normal_example}} {% endhighlight %}

Hover

{% capture hover_example %}

{% endcapture %}
{{hover_example}}
{% highlight html %} {{hover_example}} {% endhighlight %}

Focus

{% capture focus_example %}

{% endcapture %}
{{focus_example}}
{% highlight html %} {{focus_example}} {% endhighlight %}

Loading

{% capture loading_example %}

{% endcapture %}
{{loading_example}}
{% highlight html %} {{loading_example}} {% endhighlight %}
{% capture loading_sizes_example %}

{% endcapture %} {% if site.vernum >= 43 %}

New! 0.4.3

You can resize the loading spinner by appending is-small, is-medium or is-large to the control container.

{{loading_sizes_example}}
{% highlight html %} {{loading_sizes_example}} {% endhighlight %}
{% endif %}

Disabled

{% capture disabled_example %}

{% endcapture %}
{{disabled_example}}
{% highlight html %} {{disabled_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.

{% capture icons_example %}

{% endcapture %}
{{icons_example}}
{% highlight html %} {{icons_example}} {% endhighlight %}
{% capture select_icons_example %}

{% endcapture %}

New! 0.4.2

You can now 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.

{% capture has_icons_small_example %}

{% endcapture %} {% capture has_icons_normal_example %}

{% endcapture %} {% capture has_icons_medium_example %}

{% endcapture %} {% capture has_icons_large_example %}

{% endcapture %}
{{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 control container:

{% capture addons_example %} {% endcapture %}
{{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.

{% capture addons_static_example %} {% endcapture %}
{{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):

{% capture addons_expanded_example %}

Transfer

Transfer

{% endcapture %}
{{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.

{% capture addons_expanded_fullwidth_example %}

{% endcapture %}
{{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.

{% capture addons_center_example %}

Transfer

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

Transfer

{% endcapture %}
{{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 control container.
Use the is-grouped-centered or the is-grouped-right modifers to alter the alignment.

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

{% capture group_example %} {% endcapture %}
{{group_example}}
{% highlight html %} {{group_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 of course use is-grouped or has-addons for the child elements.

{% capture horizontal_form_example %}

This email is correct

This field is required

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

New!
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
{% capture field_label_example %}
{% endcapture %}
{{field_label_example}}
{% highlight html %} {{field_label_example}} {% endhighlight %}