Skip to main

Design System

  • Welcome
  • Colors
  • Typography
  • Spacing

CSS

  • Utilities
  • Compositions

Component Library

  • Aside
  • Audio Player
  • Authors
  • Banners
  • Block quotes
  • Brand
  • Breadcrumbs
  • Browser compatibility table
  • Button
  • Callout
  • Cards
  • Carousel
  • Code blocks
  • Compare
  • Counter
  • Details
  • Ellipsis
  • Eyebrow
  • Floating Action Button
  • Feature Card
  • Figure
  • Fixed width Image
  • Form Fields
  • Headline
  • Hero
  • Hero Image
  • Icon Button
  • Indicator
  • Labels
  • Lists
  • Numbered headers
  • Page Header
  • Pagination
  • Pill
  • Preview Pagination
  • Prose
  • Spinner
  • Stack Nav
  • Stats
  • Status List
  • Tables
  • Tabs
  • Generated table of contents
  • Toggle Switch
  • Tooltips

Button - Component

Primary Secondary Clear Disabled With Icon Primary With Icon
View full screen
Code

Source (Nunjucks)

<button 
class="button"
{% if data.type %}data-type="{{ data.type }}"{% endif %}
{% if data.attribute %}{{ data.attribute }}{% endif %}
>

{% if data.icon %}
{% include "icons/" ~ data.icon %}
<span>{{ data.text }}</span>
{% else %}
{{ data.text }}
{% endif %}

</button>

Output

<button class="button">A button</button>

Information

You can add the .button class to either <button> or <a> elements.

To apply a different type, set a data-type attribute with either primary or secondary as the value.

You can also add icons by adding an <svg> as a child item of the button. If you add an icon, you should wrap the label in an element such as a <span> so the margin rules can affect it.

Key links

  • Sass file

Variants

Primary

View full screen
Code

Source (Nunjucks)

<button 
class="button"
{% if data.type %}data-type="{{ data.type }}"{% endif %}
{% if data.attribute %}{{ data.attribute }}{% endif %}
>

{% if data.icon %}
{% include "icons/" ~ data.icon %}
<span>{{ data.text }}</span>
{% else %}
{{ data.text }}
{% endif %}

</button>

Output

<button class="button" data-type="primary">A primary button</button>

Secondary

View full screen
Code

Source (Nunjucks)

<button 
class="button"
{% if data.type %}data-type="{{ data.type }}"{% endif %}
{% if data.attribute %}{{ data.attribute }}{% endif %}
>

{% if data.icon %}
{% include "icons/" ~ data.icon %}
<span>{{ data.text }}</span>
{% else %}
{{ data.text }}
{% endif %}

</button>

Output

<button class="button" data-type="secondary">A secondary button</button>

Clear

View full screen
Code

Source (Nunjucks)

<button 
class="button"
{% if data.type %}data-type="{{ data.type }}"{% endif %}
{% if data.attribute %}{{ data.attribute }}{% endif %}
>

{% if data.icon %}
{% include "icons/" ~ data.icon %}
<span>{{ data.text }}</span>
{% else %}
{{ data.text }}
{% endif %}

</button>

Output

<button class="button" data-type="clear">A clear button</button>

Disabled

View full screen
Code

Source (Nunjucks)

<button 
class="button"
{% if data.type %}data-type="{{ data.type }}"{% endif %}
{% if data.attribute %}{{ data.attribute }}{% endif %}
>

{% if data.icon %}
{% include "icons/" ~ data.icon %}
<span>{{ data.text }}</span>
{% else %}
{{ data.text }}
{% endif %}

</button>

Output

<button class="button" data-type="secondary" disabled>A disabled button</button>

With Icon

View full screen
Code

Source (Nunjucks)

<button 
class="button"
{% if data.type %}data-type="{{ data.type }}"{% endif %}
{% if data.attribute %}{{ data.attribute }}{% endif %}
>

{% if data.icon %}
{% include "icons/" ~ data.icon %}
<span>{{ data.text }}</span>
{% else %}
{{ data.text }}
{% endif %}

</button>

Output

<button class="button">
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
role="img"
aria-label="plus"
xmlns="http://www.w3.org/2000/svg"
>

<path d="M20 13h-7v7h-2v-7H4v-2h7V4h2v7h7v2z" />
</svg>
<span>A button with an icon</span>
</button>

Primary With Icon

View full screen
Code

Source (Nunjucks)

<button 
class="button"
{% if data.type %}data-type="{{ data.type }}"{% endif %}
{% if data.attribute %}{{ data.attribute }}{% endif %}
>

{% if data.icon %}
{% include "icons/" ~ data.icon %}
<span>{{ data.text }}</span>
{% else %}
{{ data.text }}
{% endif %}

</button>

Output

<button class="button" data-type="primary">
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
role="img"
aria-label="plus"
xmlns="http://www.w3.org/2000/svg"
>

<path d="M20 13h-7v7h-2v-7H4v-2h7V4h2v7h7v2z" />
</svg>
<span>A primary button with an icon</span>
</button>

We want to help you build beautiful, accessible, fast, and secure websites that work cross-browser, and for all of your users. This site is our home for content to help you on that journey, written by members of the Chrome team, and external experts.

Contribute

  • File a bug
  • View source

Related content

  • developer.chrome.com
  • Chrome updates
  • Case studies
  • Podcasts
  • Shows

Connect

  • Twitter
  • YouTube
  • Google Developers
  • Chrome
  • Firebase
  • Google Cloud Platform
  • All products
  • Terms & Privacy
  • Community Guidelines

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies.