Divider
Dividers visually separate or group adjacent elements with a horizontal or vertical line. Use them to establish rhythm and hierarchy within menus, toolbars, and layouts.
Examples
Width
Use the --width custom property to change the width of the divider.
Color
Use the --color custom property to change the color of the divider.
Spacing
Use the --spacing custom property to change the amount of space between the divider and its neighboring elements.
Orientation
The default orientation for dividers is horizontal. Set the orientation attribute to vertical to draw a vertical divider. The divider will span the full height of its Flexbox or CSS Grid container.
If your container isn't Flexbox or CSS Grid, you may need to set an explicit height for the divider.
Label
Slot in text to show a label in the center of the divider. Labels separate alternatives, such as two ways to sign in.
Vertical dividers center the label, too.
One keystroke
Same everywhere
Rendering on the server? Add the with-label attribute.
The label is centered once the component hydrates; with-label lays it out in the server-rendered markup. See Server-Side Rendering.
Label Placement
Use the label-placement attribute to move the label toward either end of the divider.
| Placement | Best for |
|---|---|
start |
Section labels that read like a heading on the line. |
center |
Alternatives, such as "or" between two options. |
end |
Markers that trail content, such as a "new" line. |
The --label-offset custom property adds a line between the divider's edge and a start or end label. It's 0 by default, so the label sits --label-spacing from the edge.
Label Spacing
Use the --label-spacing custom property to change the amount of space between the label and the divider's lines.
Decorative Labels
Slot in icons for a quiet break between sections, or place one at the start or end to open or close a passage. Size and space them by targeting the label part, and tint the line and the icon separately with the --color custom property and the part's color. Decorative labels don't need an accessible name.
Dropdown Dividers
Use dividers in dropdowns to visually group dropdown items. To name a group, use a heading instead of a labeled divider, so the name is exposed to assistive technology.
Accessibility Considerations
Dividers have the separator role, which hides their contents from assistive technology. When you slot in text, the divider takes it as its accessible name, so a screen reader announces "or" rather than skipping the label. An aria-label attribute on the divider overrides the slotted text.
An icon-only label has no text to borrow. If the icon carries meaning, give the divider an aria-label. Setting label on the icon has no effect here because the separator hides it. Decorative labels, such as a row of stars, need nothing extra.
Because the separator hides its contents, never place a button, link, or other interactive control in a label. Keyboard users can still focus it, but screen readers won't announce it. Put the control before or after the divider instead.
API
Importing
If you're using the autoloader or a hosted project, components load on demand — no manual import needed. To cherry-pick a component manually, use one of the following snippets.
Import this component directly from the CDN:
import 'https://ka-f.webawesome.com/webawesome@0.20.0/components/divider/divider.js';
After installing Web Awesome via npm, import this component:
import '@awesome.me/webawesome/dist/components/divider/divider.js';
If you're self-hosting Web Awesome, import this component from your server:
import './webawesome/dist/components/divider/divider.js';
To import this component for React 18 or below, use the following code:
import WaDivider from '@awesome.me/webawesome/dist/react/divider/index.js';
Slots
Learn more about using slots.
| Name | Description |
|---|---|
| (default) | An optional label to show in the center of the divider. |
Attributes & Properties
Learn more about attributes and properties.
| Name | Description | Reflects |
|---|---|---|
labelPlacementlabel-placement |
Where the label sits along the divider.
Type
'start' | 'center' | 'end'
Default
'center'
|
|
orientationorientation |
Sets the divider's orientation.
Type
'horizontal' | 'vertical'
Default
'horizontal'
|
|
withLabelwith-label |
Only required for SSR. Set to
true if you're slotting in a label so the server-rendered markup includes the
label's layout before the component hydrates on the client.
Type
boolean
Default
false
|
|
CSS Custom Properties
Learn more about CSS custom properties.
| Name | Description |
|---|---|
--color |
The color of the divider.
|
--label-offset |
The length of the line between the divider's edge and a label placed at the
start or end. |
--label-spacing |
The amount of space between the label and the divider's lines.
|
--spacing |
The spacing of the divider.
|
--width |
The width of the divider.
|
CSS Parts
Learn more about CSS parts.
| Name | Description | CSS selector |
|---|---|---|
label |
The container that wraps the divider's label. |
::part(label)
|
SSR
Learn more about Server-Side Rendering (SSR).
If you slot in a label, set the with-label attribute, otherwise the label won't be centered in the divider until the component hydrates on the client. This works around the lack of a :has-slotted CSS pseudo-class.