Buttons are clickable elements used to perform an action, you can apply button
classes on buttons and link elements.
Note:
A default button can be used to indicate a positive action that isn't necessarily the main call-to-action.
A base button can be used to discretely indicate a secondary action. It is often used alongside a default button.
A positive button can be used to indicate a positive action that is the main call-to-action.
A negative button can be used to indicate a negative action that is destructive or permanent.
In some contexts you may need a button to look visually identical to a link.
Should you wish to place a button after a line of inline text, as a CTA for example, you can do so by adding the state class is-inline
to the button element.
In contexts where vertical space is limited, you might want a button with reduced vertical padding. Add class .is-dense
to achieve that:
If you are working with small text and need a suitably sized button, add class .is-small
. It can be combined with .is-dense
for an even tighter look:
Should you wish to place an icon in a button. You will not want to button to become full width on small screens. Therefore, you can add the state class has-icon
to the button. If the contrast between the icon chosen and the button background is not sufficient then the is-dark
or is-light
classes can be added to the icon where appropriate.
In cases where a button needs to indicate that an action is occurring (e.g. saving data, processing a payment) while also preventing user interaction, the state class is-processing
can be added to a disabled button to maintain full opacity.
When replacing a label in a button with a loading icon make sure to keep the width of the button the same to avoid content moving around. The example below has a snippet of JavaScript to demo how to achieve that or you can use the ActionButton
React component that has this functionality built-in.
The buttons use Vanilla's theme colours. You can switch the theme by adding is-dark
, is-light
or is-paper
class name on any parent element or the button itself.
View example of a dark theme button
To import just this component into your project, copy the snippet below and include it in your main Sass file.
// import Vanilla and include base mixins
// this only needs to happen once in a given project
@import 'vanilla-framework';
@include vf-base;
@include vf-p-buttons;
// when using icons within buttons you need to include icons as well
@include vf-p-icons;
If you only need a small subset of the icons consider including them individually to reduce the size of your CSS file.
For more information see Customising Vanilla in your projects, which includes overrides and importing instructions.
You can use buttons in React by installing our react-component library and importing Button
or ActionButton
component.