# Buttons
# Default Styling
Button styling is automatically applied to any elements matching the following selectors:
- button
- [role='button']
- [type='button']
- [type='submit']
- [type='reset']
- .button
In order to use an a element as a button, use role="button" to convey their purpose to screen readers and other assistive technologies. If you want to apply button styling to an a element, but retain the semantics of the anchor tag, use the .button class instead.
<button>Button</button>
<button type="button">Button</button>
<button type="submit">Submit</button>
<button type="reset">Reset</button>
<a role="button">Link as button</a>
<a class="button">Link with button styling</a>
<button type="button" disabled>Disabled</button>
You can also style any element like a button by using the button mixin, if you are using the HiQ source files with PostCSS.
However, ideally any non-button element would receive role="button" to accurately convey its function to browsers.
span {
  @mixin button;
}
Button styling can be customized through a number of custom properties targeted to each interaction state.
| Property Name (global/local) | Description | 
|---|---|
| --hiq-button-height--button-height | Sets the height for buttons and button-like elements. | 
| --hiq-button-vertical-padding--button-vertical-padding | Sets the top and bottom padding for buttons. | 
| --hiq-button-horizontal-padding--button-horizontal-padding | Sets the left and right padding for buttons. | 
| --hiq-button-border-width--button-border-width | Sets the border width for buttons. | 
| --hiq-button-border-radius--button-border-radius | Sets the border-radius for buttons. | 
| --hiq-button-font-weight--button-font-weight | Sets the font weight for button text. | 
| --hiq-button-border-color--button-border-color | Sets the border color for static state buttons. | 
| --hiq-button-background-color--button-background-color | Sets the background color for static state buttons. | 
| --hiq-button-text-color--button-text-color | Sets the text color for static state buttons. | 
| --hiq-button-hover-border-color--button-hover-border-color | Sets the border color for hovered buttons. | 
| --hiq-button-hover-background-color--button-hover-background-color | Sets the background color for hovered buttons. | 
| --hiq-button-hover-text-color--button-hover-text-color | Sets the text color for hovered buttons. | 
| --hiq-button-focus-border-color--button-focus-border-color | Sets the border color for focused buttons. | 
| --hiq-button-focus-background-color--button-focus-background-color | Sets the background color for focused buttons. | 
| --hiq-button-focus-text-color--button-focus-text-color | Sets the text color for focused buttons. | 
| --hiq-button-active-border-color--button-active-border-color | Sets the border color for active buttons. | 
| --hiq-button-active-background-color--button-active-background-color | Sets the background color for active buttons. | 
| --hiq-button-active-text-color--button-active-text-color | Sets the text color for active buttons. | 
# Customization
We recommend creating new button variants by using locally scoped custom properties within the variant scope.
button.is-primary {
  --button-border-color: blue;
  --button-background-color: blue;
  --button-text-color: white;
}