Button

Buttons allow users to interact with your system.

Usage

When to use

Use a button in the following cases:

  • In situations where the user needs to trigger an immediate action, for example:
    • Submission of a form.
    • Initiation of a new task or process step.
    • Display information that was hidden before.
  • If the action is to forward the user to another page, you should not use a button. Use a hyperlink instead.

Types

There are the following button types:

Primary button

  • Use a primary button to attract attention for the most important action on the screen.
  • Use a primary button sparingly on the screen.
  • It usually contains a label, sometimes also an icon and never an icon without a label.
  • The button’s background is filled to attract attention.

button-usage-type-primary

Primary button without and with icon

Secondary button

  • A secondary button is used for regular, non-primary actions and it can be placed multiple times on one screen.
  • It is the most commonly used button.

button-usage-type-secondary

Secondary button without icon, with icon and icon only

Ghost button

  • A ghost button is used for less substantial actions that do not need to attract the user’s attention.
  • It is recommended to use a label and an icon for a ghost button to make the button easier to detect.

button-usage-type-ghost-v2

Ghost button without icon, with icon and icon only

Split button

With a split button the user can either trigger the button’s default action or open a drop-down list for more actions of which the user can select one.

button-usage-type-split

Split button with drop-down list

Primary content action

  • Primary content actions are used for main actions that affect the content on the current page.
  • The changes made by primary content actions are usually contextual, such as adding a row to a table or adding an item to a list.
  • A primary content action always consists of a solid icon and a bold label.
  • Use a primary content action sparingly on the screen.

button-usage-primary-content-action

Primary content action

Secondary content action

  • Use a secondary content action to add a common action that affects the content of the current page.
  • It always consists of an icon and a label.
  • A secondary content action can be used more frequently than a primary content action.

button-usage-content-action

Secondary content action

General construction

A button consists of the following elements:

button-usage-general-construction

1. Icon, 2. Label, 3. Background

1. Icon

  • Icon and action should have a direct relation to each other.
  • An icon can be used in addition to a label to increase the recall value of the button.
  • Exclude the label in situations with limited screen space for common actions, as “Download” or “Edit”.
  • The Icon should generally appear to the left of a label.

2. Label

  • Labels should inform the user about what action he / she can expect.
  • Be precise. Try not to use more than three words for a label.
  • Describe the respective action with verbs and use title case for capitalization.

3. Background

  • The background of a button should not contain more than one solid color.
  • The background can either be filled, transparent or outlined.
  • The correct selection, labeling and placement of buttons is essential for error prevention and a smooth user experience. When in doubt test your design with potential users beforehand.
  • When arranging buttons be consistent with your choice of only showing labels, icons or both.

Do’s & Don’ts

button-usage-do-stay-consistent

button-usage-do-not-mix-up

</figure>

  • Be consistent in the way you show buttons.
  • Don’t mix up different kinds of button visualization.

button-usage-do-label-button

button-usage-dont-label-button-wrong

</figure>

  • Label buttons according to their action.
  • Don’t use labels that don’t tell the user the action they trigger by clicking the button or even mislead him.

Style

This chapter shows several button styles in the design system.

Overview

Primary button

button-style-overview-primary

*1. standard, 2. mouseover, 3. pressed, 4. disabled, 5. focus*

button-style-overview-primary-icons

*1. Primary button with icon*

Secondary button

button-style-overview-secondary

*1. standard, 2. mouseover, 3. pressed, 4. disabled, 5. focus*

button-style-overview-secondary-with-icon

*1. Secondary button with icon, 2. Secondary button icon only, 3. Go-to button*

Ghost button

button-style-overview-ghost

*1. standard, 2. mouseover, 3. pressed, 4. disabled, 5. focus*

button-style-overview-ghost-with-icon

*1. Ghost button icon only, 2. Go-to ghost button*

Primary content action

button-style-overview-pca

1. standard, 2. mouseover, 3. pressed, 4. disabled, 5. focus

Secondary content action

button-style-overview-ca

1. standard, 2. mouseover, 3. pressed, 4. disabled, 5. focus

Split button

button-style-overview-split-button

1. Default state, 2. Drop-down list with additional actions

Button group

button-style-overview-buttongroup

1. Button group secondary, 2. Button group ghost

Typography

The following table gives reference to the different font sizes and weights:

NameStateFont-familyFont-sizeLine-heightText-align
Primary buttonallSiemens Sans Roman14px16pxcenter, left
Secondary buttonallSiemens Sans Roman14px16pxcenter, left
Ghost buttonallSiemens Sans Roman14px16pxcenter, left
Split buttonallSiemens Sans Roman14px16pxcenter, left
Primary content actionallSiemens Sans Bold14px16pxleft
Secondary content actionallSiemens Sans Roman14px16pxleft

Sizing and spacing

The following measurements show the dimensions for this component:

button-style-sizing

Sizing for primary and secondary button and content action

button-style-sizing-general

General spacing for primary and secondary button

button-style-sizing-ghost

Spacing for ghost button

button-style-sizing-pca-ca

Spacing for primary content action and secondary content action

button-style-sizing-icon-button

Spacing for buttons with icon

button-style-sizing-spacing-split-button

Sizing and spacing for split button

button-style-sizing-outer-button

Outer spacing for buttons

To see a detailed explanation of all existing modifier and state classes, please refer to the usage table below.

Primary button



<input class="button--primary" type="submit" value="Submit input" />

<button class="button--primary">Primary button</button>
<button class="button--primary" disabled>Primary button, disabled w. attribute</button>
<button class="button--primary is-disabled">Primary button, disabled w. class</button>

<button class="button--primary">
    <span class="iconMdsp addCircle" aria-hidden="true"></span>Primary icon button
</button>

<button class="button--primary has-icon-right">
    Primary icon button<span class="iconMdsp outgoing" aria-hidden="true"></span>
</button>

<button class="button--primary has-icon-only">
    <span class="iconMdsp addCircle" aria-hidden="true"></span>
</button>
<a class="button button--primary" href="#">Primary link button</a>
<a class="button button--primary is-disabled" href="#">Primary link button, disabled w. class</a>

Secondary button


<button class="button--secondary">Secondary button</button>
<button class="button--secondary" disabled>Secondary button, disabled</button>
<button class="button--secondary is-disabled">Secondary button, disabled</button>

<button class="button--secondary">
    <span class="iconMdsp edit" aria-hidden="true"></span>Secondary icon button
</button>

<button class="button--secondary has-icon-right">
    Secondary icon button<span class="iconMdsp outgoing" aria-hidden="true"></span>
</button>

<button class="button--secondary has-icon-only">
    <span class="iconMdsp edit" aria-hidden="true"></span>
</button>
<a class="button button--secondary" href="#">Secondary link button</a>
<a class="button button--secondary is-disabled" href="#">Secondary link button, disabled</a>

Ghost button


<button class="button--ghost">Ghost button</button>
<button class="button--ghost" disabled>Ghost button, disabled</button>
<button class="button--ghost is-disabled">Ghost button, disabled</button>

<button class="button--ghost">
    <span class="iconMdsp edit" aria-hidden="true"></span>Ghost icon button
</button>

<button class="button--ghost has-icon-right">
    Ghost icon button<span class="iconMdsp outgoing" aria-hidden="true"></span>
</button>

<button class="button--ghost has-icon-only">
    <span class="iconMdsp edit" aria-hidden="true"></span>
</button>
<a class="button button--ghost" href="#">Ghost link button</a>
<a class="button button--ghost is-disabled" href="#">Ghost link button, disabled</a>

Split button

Faucibus vitae aliquet nec ullamcorper sit amet risus.
In vitae turpis massa sed elementum tempus egestas sed.
Dolor sed viverra ipsum nunc aliquet bibendum enim facilisis.
Eu augue ut lectus arcu bibendum.
Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

<div class="buttonSplitWrapper">
    <div class="buttonGroup">
        <button class="button--secondary">
            <span class="iconMdsp edit" aria-hidden="true"></span>
            Edit
        </button>
        <button class="button--secondary has-icon-only">
            <span class="iconMdsp more filled" aria-hidden="true"></span>
        </button>
    </div>
    <div class="buttonSplit">
        <button class="button--split">
            <span class="iconMdsp duplicate" aria-hidden="true"></span>
            Copy
        </button>
        <button class="button--split">
            <span class="iconMdsp move" aria-hidden="true"></span>
            Move
        </button>
        <button class="button--split">
            <span class="iconMdsp delete" aria-hidden="true"></span>
            Delete
        </button>
    </div>
</div>

<div class="buttonSplitWrapper">
    <div class="buttonGroup">
        <button class="button--secondary">
            <span class="iconMdsp edit" aria-hidden="true"></span>
            Edit
        </button>
        <button class="button--secondary has-icon-only is-activated">
            <span class="iconMdsp more filled" aria-hidden="true"></span>
        </button>
    </div>
    <div class="buttonSplit is-activated">
        <button class="button--split">
            <span class="iconMdsp duplicate" aria-hidden="true"></span>
            Copy
        </button>
        <button class="button--split">
            <span class="iconMdsp move" aria-hidden="true"></span>
            Move
        </button>
        <button class="button--split">
            <span class="iconMdsp delete" aria-hidden="true"></span>
            Delete
        </button>
    </div>
</div>

<!-- placeholder text / paragraph -->
<p>
    Faucibus vitae aliquet nec ullamcorper sit amet risus. <br />In vitae turpis massa sed elementum tempus egestas sed. <br />Dolor sed viverra ipsum nunc aliquet bibendum enim facilisis. <br />Eu augue ut lectus arcu bibendum.<br />Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
</p>

Split button small

Faucibus vitae aliquet nec ullamcorper sit amet risus.
In vitae turpis massa sed elementum tempus egestas sed.
Dolor sed viverra ipsum nunc aliquet bibendum enim facilisis.
Eu augue ut lectus arcu bibendum.
Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

<div class="buttonSplitWrapper buttonSplitWrapper--small">
    <div class="buttonGroup">
        <button class="button--secondary">
            <span class="iconMdsp edit" aria-hidden="true"></span>
            Edit
        </button>
        <button class="button--secondary has-icon-only">
            <span class="iconMdsp more filled" aria-hidden="true"></span>
        </button>
    </div>
    <div class="buttonSplit">
        <button class="button--split">
            <span class="iconMdsp duplicate" aria-hidden="true"></span>
            Copy
        </button>
        <button class="button--split">
            <span class="iconMdsp move" aria-hidden="true"></span>
            Move
        </button>
        <button class="button--split">
            <span class="iconMdsp delete" aria-hidden="true"></span>
            Delete
        </button>
    </div>
</div>

<div class="buttonSplitWrapper buttonSplitWrapper--small">
    <div class="buttonGroup">
        <button class="button--secondary">
            <span class="iconMdsp edit" aria-hidden="true"></span>
            Edit
        </button>
        <button class="button--secondary has-icon-only is-activated">
            <span class="iconMdsp more filled" aria-hidden="true"></span>
        </button>
    </div>
    <div class="buttonSplit is-activated">
        <button class="button--split">
            <span class="iconMdsp duplicate" aria-hidden="true"></span>
            Copy
        </button>
        <button class="button--split">
            <span class="iconMdsp move" aria-hidden="true"></span>
            Move
        </button>
        <button class="button--split">
            <span class="iconMdsp delete" aria-hidden="true"></span>
            Delete
        </button>
    </div>
</div>

<!-- placeholder text / paragraph -->
<p>
    Faucibus vitae aliquet nec ullamcorper sit amet risus. <br />In vitae turpis massa sed elementum tempus egestas sed. <br />Dolor sed viverra ipsum nunc aliquet bibendum enim facilisis. <br />Eu augue ut lectus arcu bibendum.<br />Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
</p>

Split button, bottom aligned

Faucibucus vitae aliquet nec ullamcorper sit amet risus.
In vitae turpis massa sed elementum tempus egestas sed.
Dolor sed viverra ipsum nunc aliquet bibendum enim facilisis.
Eu augue ut lectus arcu bibendum.
Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at erostis.

<!-- placeholder text / paragraph -->
<p>
    Faucibucus vitae aliquet nec ullamcorper sit amet risus. <br />In vitae turpis massa sed elementum tempus egestas sed. <br />Dolor sed viverra ipsum nunc aliquet bibendum enim facilisis. <br />Eu augue ut lectus arcu bibendum.<br />Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at erostis.
</p>

<div class="buttonSplitWrapper">
    <div class="buttonGroup">
        <button class="button--secondary">
            <span class="iconMdsp edit" aria-hidden="true"></span>
            Edit bottom
        </button>
        <button class="button--secondary has-icon-only is-activated">
            <span class="iconMdsp more filled" aria-hidden="true"></span>
        </button>
    </div>
    <div class="buttonSplit is-activated is-bottom-aligned">
        <button class="button--split">
            <span class="iconMdsp duplicate" aria-hidden="true"></span>
            Copy
        </button>
        <button class="button--split">
            <span class="iconMdsp move" aria-hidden="true"></span>
            Move
        </button>
        <button class="button--split">
            <span class="iconMdsp delete" aria-hidden="true"></span>
            Delete
        </button>
    </div>
</div>

Split button, left aligned

Faucibucus vitae aliquet nec ullamcorper sit amet risus.
In vitae turpis massa sed elementum tempus egestas sed.
Dolor sed viverra ipsum nunc aliquet bibendum enim facilisis.
Eu augue ut lectus arcu bibendum.
Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at erostis.

<div class="buttonSplitWrapper">
    <div class="buttonGroup">
        <button class="button--secondary">
            <span class="iconMdsp edit" aria-hidden="true"></span>
            Edit left
        </button>
        <button class="button--secondary has-icon-only is-activated">
            <span class="iconMdsp more filled" aria-hidden="true"></span>
        </button>
    </div>
    <div class="buttonSplit is-activated is-left-aligned">
        <button class="button--split">
            <span class="iconMdsp duplicate" aria-hidden="true"></span>
            Copy
        </button>
        <button class="button--split">
            <span class="iconMdsp move" aria-hidden="true"></span>
            Move
        </button>
        <button class="button--split">
            <span class="iconMdsp delete" aria-hidden="true"></span>
            Delete
        </button>
    </div>
</div>

<!-- placeholder text / paragraph -->
<p>
    Faucibucus vitae aliquet nec ullamcorper sit amet risus. <br />In vitae turpis massa sed elementum tempus egestas sed. <br />Dolor sed viverra ipsum nunc aliquet bibendum enim facilisis. <br />Eu augue ut lectus arcu bibendum.<br />Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at erostis.
</p>

Split button, bottom left aligned

Faucibucus vitae aliquet nec ullamcorper sit amet risus.
In vitae turpis massa sed elementum tempus egestas sed.
Dolor sed viverra ipsum nunc aliquet bibendum enim facilisis.
Eu augue ut lectus arcu bibendum.
Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at erostis.

<!-- placeholder text / paragraph -->
<p>
    Faucibucus vitae aliquet nec ullamcorper sit amet risus. <br />In vitae turpis massa sed elementum tempus egestas sed. <br />Dolor sed viverra ipsum nunc aliquet bibendum enim facilisis. <br />Eu augue ut lectus arcu bibendum.<br />Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at erostis.
</p>

<div class="buttonSplitWrapper">
    <div class="buttonGroup">
        <button class="button--secondary">
            <span class="iconMdsp edit" aria-hidden="true"></span>
            Edit bottom left
        </button>
        <button class="button--secondary has-icon-only is-activated">
            <span class="iconMdsp more filled" aria-hidden="true"></span>
        </button>
    </div>
    <div class="buttonSplit is-activated is-left-aligned is-bottom-aligned">
        <button class="button--split">
            <span class="iconMdsp duplicate" aria-hidden="true"></span>
            Copy
        </button>
        <button class="button--split">
            <span class="iconMdsp move" aria-hidden="true"></span>
            Move
        </button>
        <button class="button--split">
            <span class="iconMdsp delete" aria-hidden="true"></span>
            Delete
        </button>
    </div>
</div>

Primary content action

Primary content action link Primary content action link, disabled
<button class="button--primaryContentAction">
    <span class="iconMdsp addCircle filled"></span>Primary content action
</button>

<a class="button button--primaryContentAction" href="#">
    <span class="iconMdsp addCircle filled"></span>Primary content action link
</a>

<button class="button--primaryContentAction is-disabled">
    <span class="iconMdsp addCircle filled"></span>Primary content action, disabled
</button>

<a class="button button--primaryContentAction is-disabled" href="#">
    <span class="iconMdsp share filled"></span>Primary content action link, disabled
</a>

<button class="button--primaryContentAction has-icon-right">
    Primary content action w. icon right<span class="iconMdsp share filled"></span>
</button>

Secondary content action

Secondary content action link Secondary content action link, disabled
<button class="button--secondaryContentAction">
    <span class="iconMdsp addCircle"></span>Secondary content action
</button>

<a class="button button--secondaryContentAction" href="#">
    <span class="iconMdsp addCircle"></span>Secondary content action link
</a>

<button class="button--secondaryContentAction is-disabled">
    <span class="iconMdsp addCircle"></span>Secondary content action, disabled
</button>

<a class="button button--secondaryContentAction is-disabled" href="#">
    <span class="iconMdsp addCircle"></span>Secondary content action link, disabled
</a>

<button class="button--secondaryContentAction has-icon-right">
    Secondary content action w. icon right<span class="iconMdsp outgoingExtSmall"></span>
</button>

Button group


<div class="buttonGroup">
    <button class="button--secondary has-icon-only">
        <span class="iconMdsp listBullet" aria-hidden="true"></span>
    </button>

    <button class="button--secondary has-icon-only is-disabled">
        <span class="iconMdsp apps filled" aria-hidden="true"></span>
    </button>

    <button class="button--secondary has-icon-only">
        <span class="iconMdsp locationMarker" aria-hidden="true"></span>
    </button>

    <button class="button--secondary has-icon-only">
        <span class="iconMdsp map" aria-hidden="true"></span>
    </button>

    <button class="button--secondary has-icon-only">
        <span class="iconMdsp clipboard" aria-hidden="true"></span>
    </button>

    <button class="button--secondary has-icon-only">
        <span class="iconMdsp edit" aria-hidden="true"></span>
    </button>
</div>

<div class="buttonGroup">
    <button class="button--secondary has-icon-only">
        <span class="iconMdsp listBullet" aria-hidden="true"></span>
    </button>

    <button class="button--secondary has-icon-only is-disabled">
        <span class="iconMdsp apps filled" aria-hidden="true"></span>
    </button>

    <button class="button--secondary has-icon-only">
        <span class="iconMdsp locationMarker" aria-hidden="true"></span>
    </button>

    <button class="button--secondary has-icon-only is-activated">
        <span class="iconMdsp map" aria-hidden="true"></span>
    </button>

    <button class="button--secondary has-icon-only">
        <span class="iconMdsp clipboard" aria-hidden="true"></span>
    </button>

    <button class="button--secondary has-icon-only">
        <span class="iconMdsp edit" aria-hidden="true"></span>
    </button>
</div>
<div class="buttonGroup">
    <a class="button button--secondary has-icon-only">
        <span class="iconMdsp listBullet" aria-hidden="true"></span>
    </a>

    <a class="button button--secondary has-icon-only is-disabled">
        <span class="iconMdsp apps filled" aria-hidden="true"></span>
    </a>

    <a class="button button--secondary">
        Some other title
    </a>

    <a class="button button--secondary is-activated">
        Some title
    </a>

    <a class="button button--secondary has-icon-only">
        <span class="iconMdsp edit" aria-hidden="true"></span>
    </a>

    <a class="button button--secondary has-icon-only">
        <span class="iconMdsp locationMarker" aria-hidden="true"></span>
    </a>

    <a class="button button--secondary has-icon-only">
        <span class="iconMdsp linkDissolve" aria-hidden="true"></span>
    </a>
</div>

Button group ghost


<div class="buttonGroup">
    <button class="button--ghost has-icon-only">
        <span class="iconMdsp listBullet" aria-hidden="true"></span>
    </button>

    <button class="button--ghost has-icon-only is-disabled">
        <span class="iconMdsp apps filled" aria-hidden="true"></span>
    </button>

    <button class="button--ghost has-icon-only">
        <span class="iconMdsp locationMarker" aria-hidden="true"></span>
    </button>

    <button class="button--ghost has-icon-only">
        <span class="iconMdsp map" aria-hidden="true"></span>
    </button>

    <button class="button--ghost has-icon-only">
        <span class="iconMdsp clipboard" aria-hidden="true"></span>
    </button>

    <button class="button--ghost has-icon-only">
        <span class="iconMdsp duplicate" aria-hidden="true"></span>
    </button>
</div>

<div class="buttonGroup">
    <button class="button--ghost has-icon-only">
        <span class="iconMdsp listBullet" aria-hidden="true"></span>
    </button>

    <button class="button--ghost has-icon-only is-disabled">
        <span class="iconMdsp apps filled" aria-hidden="true"></span>
    </button>

    <button class="button--ghost has-icon-only is-activated">
        <span class="iconMdsp locationMarker" aria-hidden="true"></span>
    </button>

    <button class="button--ghost has-icon-only">
        <span class="iconMdsp map" aria-hidden="true"></span>
    </button>

    <button class="button--ghost has-icon-only">
        <span class="iconMdsp duplicate" aria-hidden="true"></span>
    </button>

    <button class="button--ghost has-icon-only">
        <span class="iconMdsp clipboard" aria-hidden="true"></span>
    </button>
</div>
<div class="buttonGroup">
    <a class="button button--ghost has-icon-only">
        <span class="iconMdsp listBullet" aria-hidden="true"></span>
    </a>

    <a class="button button--ghost has-icon-only is-disabled">
        <span class="iconMdsp apps filled" aria-hidden="true"></span>
    </a>

    <a class="button button--ghost">
        Some other title
    </a>

    <a class="button button--ghost is-activated">
        Some title
    </a>
</div>

Usage

ElementClassDescription
button, a.button .is-disabled Visually disables all kind of buttons, the 'disabled' attribute functionally disables the button.
button, a.button .has-icon-right Indicates that the button has an icon on the right side of the text.
button, a.button .has-icon-only Indicates that the button contains only an icon.
.buttonSplitWrapper button.has-icon-only .is-activated Visually indicates the icon button that the menu with the additional list of actions is open.
.buttonSplitWrapper .buttonSplit .is-activated Displays the menu with the additional list of actions. Make sure that ther is more than 1 button.
.buttonSplitWrapper .buttonSplit .is-left-aligned, .is-bottom-aligned Aligns the split button content relatively to the split button. It is aligned to top and right by default, these classes can be added (individually or in combination) to align the content in a different direction.
.button-group button, .button-group a.button .is-activated Visually labels the currently active button of a button group.
.buttonSplitWrapper .buttonSplitWrapper--small Removes the text label of a split button for small devices or where screen space is limited.
Except where otherwise noted, content on this site is licensed under the MindSphere Development License Agreement.
Back to top