Softedge Docs
v1.13.0 Index

Shapes

Overview

Position decorative SVG elements (dividers, curves, blurs) at the edges of a section. Always used inside a position-relative parent.

.shape

Base class — sets position: absolute and pointer-events: none.

Combine with a position class, a fluid class, and an SVG child.

Position

Anchor the shape to a specific edge of its parent container.

.shape-top .shape-bottom .shape-start .shape-end
Class Description .shape-top Top edge — transform-origin: bottom center .shape-bottom Bottom edge — transform-origin: top center .shape-bottom-100 Above the parent bottom (bottom: 100%) .shape-start Left edge — transform-origin: center right .shape-end Right edge — transform-origin: center left
.shape-bottom Live demo
Section content
.shape-top Live demo
Section content

Fluid Sizing

Stretch the SVG to fill the parent width or height.

.shape-fluid-x .shape-fluid-y
Class Description .shape-fluid-x SVG child: width: 100%; height: auto — for horizontal dividers .shape-fluid-y SVG child: width: auto; height: 100% — for vertical/side shapes

Flip

Mirror shapes along X, Y, or both axes to reuse a single SVG in multiple orientations.

.shape-flip-x .shape-flip-y .shape-flip-xy
Class Description .shape-flip-x scaleX(-1) — horizontal mirror .shape-flip-y scaleY(-1) — vertical mirror .shape-flip-xy scale(-1, -1) — both axes
.shape-flip-xy Same SVG, flipped for top position
Section content

Common SVG Shapes

Ready-to-use SVG paths. Fill with var(--bs-body-bg) or any CSS color to match the adjacent section.

Curve divider
Curve
Angle divider
Angle

Usage Tips

Best practices for working with shapes.

Tips

Parent must be relative — the shape is position: absolute, so wrap your section in position-relative (or use a <section> which handles it naturally).

Fill color — use fill="var(--bs-primary)" to match the adjacent section background. Change the variable for colored backgrounds.

Z-index — add .z-1 if the shape needs to sit above adjacent content.

Overlap fix — position classes use -1px offset to prevent subpixel gaps between the shape and the section edge.

Theme-aware — add data-bs-theme="dark" on the shape wrapper if the adjacent section uses a different theme, so var(--bs-body-bg) resolves correctly.

On this page