Sign in

Sign up

Angular Bootstrap buttons

Use MDB’s custom button styles for actions in forms, dialogs, and more. Includes support for a handful of contextual variations, sizes, states, and more.

All the visually attractive and highly functional buttons we provided you with are fully customizable and easily adjustable to your needs.

Each of them contains characteristic Material Design elements, such as shadows, living colors, subtle animation on hovering, or charming waves effect triggered by clicking.

Basic buttons

MDB includes 7 predefined button styles, each serving its own semantic purpose.

<!-- Provides extra visual weight and identifies the primary action in a set of buttons -->
<button type="button" class="btn btn-primary waves-light" mdbRippleRadius>Primary</button>

<!-- Default button -->
<button type="button" class="btn btn-default waves-light" mdbRippleRadius>Default</button>

<!-- Secondary button -->
<button type="button" class="btn btn-secondary waves-light" mdbRippleRadius>Secondary</button>

<!-- Indicates a successful or positive action -->
<button type="button" class="btn btn-success waves-light" mdbRippleRadius>Success</button>

<!-- Contextual button for informational alert messages -->
<button type="button" class="btn btn-info waves-light" mdbRippleRadius>Info</button>

<!-- Indicates caution should be taken with this action -->
<button type="button" class="btn btn-warning waves-light" mdbRippleRadius>Warning</button>

<!-- Indicates a dangerous or potentially negative action -->
<button type="button" class="btn btn-danger waves-light" mdbRippleRadius>Danger</button>

Conveying meaning to assistive technologies

Using color to add meaning to a button only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (the visible text of the button), or is included through alternative means, such as additional text hidden with the .sr-only class.

Additional buttons

<button type="button" class="btn btn-elegant waves-light" mdbRippleRadius>Elegant</button>

<button type="button" class="btn btn-unique waves-light" mdbRippleRadius>Unique</button>

<button type="button" class="btn btn-pink waves-light" mdbRippleRadius>Pink</button>

<button type="button" class="btn btn-purple waves-light" mdbRippleRadius>Purple</button>

<button type="button" class="btn btn-deep-purple waves-light" mdbRippleRadius>Deep-purple</button>

<button type="button" class="btn btn-indigo waves-light" mdbRippleRadius>Indigo</button>

<!--Light blue-->
<button type="button" class="btn btn-light-blue waves-light" mdbRippleRadius>Light blue</button>

<button type="button" class="btn btn-cyan waves-light" mdbRippleRadius>Cyan</button>

<button type="button" class="btn btn-dark-green waves-light" mdbRippleRadius>Dark-green</button>

<button type="button" class="btn btn-light-green waves-light" mdbRippleRadius>Light-green</button>

<button type="button" class="btn btn-yellow waves-light" mdbRippleRadius>Yellow</button>

<button type="button" class="btn btn-amber waves-light" mdbRippleRadius>Amber</button>

<button type="button" class="btn btn-deep-orange waves-light" mdbRippleRadius>Deep-orange</button>

<button type="button" class="btn btn-brown waves-light" mdbRippleRadius>Brown</button>

<button type="button" class="btn btn-blue-grey waves-light" mdbRippleRadius>Blue-grey</button>

<button type="button" class="btn btn-mdb waves-light" mdbRippleRadius>MDB</button>

Gradient buttons MDB Pro component

<button class="btn peach-gradient btn-rounded waves-light" mdbRippleRadius>Peach</button>
<button class="btn purple-gradient btn-rounded waves-light" mdbRippleRadius>Purple</button>
<button class="btn blue-gradient btn-rounded waves-light" mdbRippleRadius>Blue</button>
<button class="btn aqua-gradient btn-rounded waves-light" mdbRippleRadius>Aqua</button>  

Outline buttons

In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.

<button type="button" class="btn btn-outline-primary" mdbRippleRadius>Primary</button>
<button type="button" class="btn btn-outline-default" mdbRippleRadius>Default</button>
<button type="button" class="btn btn-outline-secondary" mdbRippleRadius>Secondary</button>
<button type="button" class="btn btn-outline-success" mdbRippleRadius>Success</button>
<button type="button" class="btn btn-outline-info" mdbRippleRadius>Info</button>
<button type="button" class="btn btn-outline-warning" mdbRippleRadius>Warning</button>
<button type="button" class="btn btn-outline-danger" mdbRippleRadius>Danger</button>

Waves effect with outline buttons

MDB automatically adds waves effect to each element with .btn class. However, in outline buttons, it's barely visible due to lack of background.

That's why to outline buttons we add additional class .waves-effect to make waves darker and more intense.

Rounded buttons MDB Pro component

<button type="button" class="btn btn-primary btn-rounded waves-light" mdbRippleRadius>Primary</button>
<button type="button" class="btn btn-default btn-rounded waves-light" mdbRippleRadius>Default</button>
<button type="button" class="btn btn-secondary btn-rounded waves-light" mdbRippleRadius>Secondary</button>
<button type="button" class="btn btn-success btn-rounded waves-light" mdbRippleRadius>Success</button>
<button type="button" class="btn btn-info btn-rounded waves-light" mdbRippleRadius>Info</button>
<button type="button" class="btn btn-warning btn-rounded waves-light" mdbRippleRadius>Warning</button>
<button type="button" class="btn btn-danger btn-rounded waves-light" mdbRippleRadius>Danger</button>

Rounded outline buttons MDB Pro component

<button type="button" class="btn btn-outline-primary btn-rounded" mdbRippleRadius>Primary</button>
<button type="button" class="btn btn-outline-default btn-rounded" mdbRippleRadius>Default</button>
<button type="button" class="btn btn-outline-secondary btn-rounded" mdbRippleRadius>Secondary</button>
<button type="button" class="btn btn-outline-success btn-rounded" mdbRippleRadius>Success</button>
<button type="button" class="btn btn-outline-info btn-rounded" mdbRippleRadius>Info</button>
<button type="button" class="btn btn-outline-warning btn-rounded" mdbRippleRadius>Warning</button>
<button type="button" class="btn btn-outline-danger btn-rounded" mdbRippleRadius>Danger</button>

Floating buttons MDB Pro component

<a class="btn-floating btn-lg purple-gradient waves-light" mdbRippleRadius><i class="fa fa-bolt"></i></a>
<a class="btn-floating peach-gradient waves-light" mdbRippleRadius><i class="fa fa-leaf"></i></a>
<a class="btn-floating btn-sm blue-gradient waves-light" mdbRippleRadius><i class="fa fa-star"></i></a>

See the full list of available icons and colors for your buttons.

Fixed buttons MDB Pro component

See the live example of fixed button in the bottom right corner of this page.

Active on click

<div class="fixed-action-btn" style="bottom: 45px; right: 24px;">

    <a class="btn-floating btn-large red waves-light" mdbRippleRadius (click)="fixed.toggle()">
        <i class="fa fa-pencil"></i>

    <div class="fixed_collapse" [mdbCollapse]="isCollapsed" #fixed="bs-collapse">
        <a class="btn-floating red waves-light" mdbRippleRadius><i class="fa fa-star"></i></a>
        <a class="btn-floating yellow darken-1 waves-light" mdbRippleRadius><i class="fa fa-user"></i></a>
        <a class="btn-floating green waves-light" mdbRippleRadius><i class="fa fa-envelope"></i></a>
        <a class="btn-floating blue waves-light" mdbRippleRadius><i class="fa fa-shopping-cart"></i></a>


Active on hover

Replace (click)="fixed.toggle()" with (mouseenter)="fixed.toggle()" in the <a> tag and add (mouseleave)="fixed.toggle()" to the main <div> tag.

<div class="fixed-action-btn" style="bottom: 45px; right: 24px;" (mouseleave)="fixed.toggle()">

    <a class="btn-floating btn-large red waves-light" mdbRippleRadius (mouseenter)="fixed.toggle()">
        <i class="fa fa-pencil"></i>


"Back to the top" button

"Back to the top" button is very useful with the long pages, especially on the mobile devices.

Click the button below to see the live example.


To make it work, you have to set an ID #top-section to any element on the top of the page. More options you can find here.

<button class="btn btn-floating btn-large red waves-light" mdbPageScroll href="#top-section" mdbRippleRadius style="right:35px; bottom:35px;" [pageScrollDuration]="750">
    <i class="fa fa-arrow-up"></i>

Flat button MDB Pro component

<button type="button" class="btn btn-flat btn-lg" mdbRippleRadius>Click me</button>

Buttons with icons

Note: To set the desired distance between icon and text use spacing utilities (for example .ml-1, .mr-2).

<button class="btn btn-primary waves-light" mdbRippleRadius><i class="fa fa-magic mr-1"></i> Left</button>
<button class="btn btn-default waves-light" mdbRippleRadius>Right <i class="fa fa-magic ml-1"></i></button>

See the full list of available icons for your buttons.

Button tags

The .btn classes are designed to be used with the <button> element. However, you can also use these classes on <a> elements (though some browsers may apply a slightly different rendering).

When using button classes on <a> elements that are used to trigger in-page functionality (like collapsing content), rather than linking to new pages or sections within the current page, these links should be given a role="button" to appropriately convey their purpose to assistive technologies such as screen readers.

<a class="btn btn-primary waves-light" href="#" role="button" mdbRippleRadius>Link</a>
<button class="btn btn-primary waves-light" type="submit" mdbRippleRadius>Button</button>
<div class="waves-input-wrapper waves-light" mdbRippleRadius><input class="btn btn-primary" type="button" value="Input"></div>
<div class="waves-input-wrapper waves-light" mdbRippleRadius><input class="btn btn-primary" type="submit" value="Submit"></div>
<div class="waves-input-wrapper waves-light" mdbRippleRadius><input class="btn btn-primary" type="reset" value="Reset"></div>


Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.

<button type="button" class="btn peach-gradient btn-lg waves-light" mdbRippleRadius>Large button</button>
<button type="button" class="btn purple-gradient btn-lg waves-light" mdbRippleRadius>Large button</button>
<button type="button" class="btn peach-gradient btn-sm waves-light" mdbRippleRadius>Small button</button>
<button type="button" class="btn purple-gradient btn-sm waves-light" mdbRippleRadius>Small button</button>

Create block level buttons—those that span the full width of a parent—by adding .btn-block.

<button type="button" class="btn btn-default btn-lg btn-block waves-light" mdbRippleRadius>Block level button</button>
<button type="button" class="btn btn-light-blue btn-lg btn-block waves-light" mdbRippleRadius>Block level button</button>

Button states

Active state

Buttons will appear pressed (with a darker background, darker border, and inset shadow) when active. There’s no need to add a class to <button>s as they use a pseudo-class. However, you can still force the same active appearance with .active (and include the aria-pressed="true" attribute) should you need to replicate the state programmatically.

Primary link Link
<a class="btn btn-primary btn-lg active waves-light" mdbRippleRadius role="button">Primary link</a>
<a class="btn btn-default btn-lg active waves-light" mdbRippleRadius role="button">Link</a>

Disabled state

Make buttons look inactive by adding the disabled boolean attribute to any <button> element.

<button type="button" class="btn btn-primary btn-lg" disabled>Primary button</button>
<button type="button" class="btn btn-default btn-lg" disabled>Button</button>

Disabled buttons using the <a> element behave a bit different:

  • <a>s don’t support the disabled attribute, so you must add the .disabled class to make it visually appear disabled.
  • Some future-friendly styles are included to disable all pointer-events on anchor buttons. In browsers which support that property, you won’t see the disabled cursor at all.
  • Disabled buttons should include the aria-disabled="true" attribute to indicate the state of the element to assistive technologies.
Primary link Link
<a href="#" class="btn btn-primary btn-lg disabled" role="button">Primary link</a>
<a href="#" class="btn btn-primary btn-lg disabled" role="button">Link</a>

Link functionality caveat

The .disabled class uses pointer-events: none to try to disable the link functionality of <a>s, but that CSS property is not yet standardized. In addition, even in browsers that do support pointer-events: none, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, add a tabindex="-1" attribute on these links (to prevent them from receiving keyboard focus) and use custom JavaScript to disable their functionality.

Button plugin

Do more with buttons. Control button states or create groups of buttons for more components like toolbars.

Toggle states

Add data-toggle="button" to toggle a button’s active state. If you’re pre-toggling a button, you must manually add the .active class and aria-pressed="true" to the <button>.

<button type="button" class="btn btn-primary waves-light" autocomplete="off" [(ngModel)]="singleModel" mdbCheckbox btnCheckboxTrue="1" btnCheckboxFalse="0" mdbRippleRadius>
    Single toggle

Checkbox and radio buttons

Bootstrap’s .button styles can be applied to other elements, such as <label>s, to provide checkbox or radio style button toggling. Add data-toggle="buttons" to a .btn-group containing those modified buttons to enable toggling in their respective styles.

The checked state for these buttons is only updated via click event on the button. If you use another method to update the input—e.g., with <input type="reset"> or by manually applying the input’s checked property—you’ll need to toggle .active on the <label> manually.

Note that pre-checked buttons require you to manually add the .active class to the input’s <label>.

<div class="btn-group">
    <label class="btn btn-primary waves-light" [(ngModel)]="checkModel.left" mdbCheckbox mdbRippleRadius>
        Checkbox 1 (pre-checked)
    <label class="btn btn-primary waves-light" [(ngModel)]="checkModel.middle" mdbCheckbox mdbRippleRadius>
        Checkbox 2
    <label class="btn btn-primary waves-light" [(ngModel)]="checkModel.right" mdbCheckbox mdbRippleRadius>
        Checkbox 3

Data structure:

export class AppComponent {
    public checkModel: any = { left: true, middle: false, right: false };
<div class="btn-group">
    <label class="btn btn-primary waves-light" [(ngModel)]="radioModel" mdbRadio="Left" mdbRippleRadius>
        Radio 1 (preselected)
    <label class="btn btn-primary waves-light" [(ngModel)]="radioModel" mdbRadio="Middle" mdbRippleRadius>
        Radio 2
    <label class="btn btn-primary waves-light" [(ngModel)]="radioModel" mdbRadio="Right" mdbRippleRadius>
        Radio 3

Data structure:

export class AppComponent {
    public radioModel: string = 'Left';


Method Description
$().button('toggle') Toggles push state. Gives the button the appearance that it has been activated.