layout-imposter
A positioning helper for overlays, modals, and fixed UI elements. Uses CSS transforms for centering without requiring JavaScript calculations.
Attributes
| Attribute | Values | Default | Description |
|---|---|---|---|
data-position |
center, top, bottom, start, end, top-start, top-end, bottom-start, bottom-end |
center |
Where to position the element within its container |
data-layout-fixed |
boolean | - | Uses fixed positioning instead of absolute |
data-margin |
s, m, l, xl |
- | Margin from edges when not centered |
data-contain |
boolean | - | Constrains size to viewport with overflow scroll |
Basic Usage
The imposter positions itself within a positioned ancestor (or viewport when fixed).
Basic centered imposter
<div style="position: relative; height: 200px;"> <layout-imposter> <div>Centered content</div> </layout-imposter></div>
Position Variants
The data-position attribute controls placement within the container.
Edge Positions
Edge positions
<layout-imposter data-position="top" data-margin="s">...</layout-imposter><layout-imposter data-position="bottom" data-margin="s">...</layout-imposter><layout-imposter data-position="start" data-margin="s">...</layout-imposter><layout-imposter data-position="end" data-margin="s">...</layout-imposter>
Corner Positions
Corner positions
<layout-imposter data-position="top-start" data-margin="s">...</layout-imposter><layout-imposter data-position="top-end" data-margin="s">...</layout-imposter><layout-imposter data-position="bottom-start" data-margin="s">...</layout-imposter><layout-imposter data-position="bottom-end" data-margin="s">...</layout-imposter>
Usage Examples
Notification Badge
Button with notification badge
<div style="position: relative; display: inline-block;"> <button type="button">Notifications</button> <layout-imposter data-position="top-end"> <span class="badge">3</span> </layout-imposter></div>
Image Overlay
Image with overlay caption
<div style="position: relative;"> <img src="image.jpg" alt="Photo" /> <layout-imposter data-position="bottom-start" data-margin="m"> <span class="caption">Photo caption</span> </layout-imposter></div>
Card with Status Badge
Card with positioned status badge
<div style="position: relative;"> <layout-card data-variant="outlined" data-padding="l"> <strong>Project Alpha</strong> <p>Last updated yesterday</p> </layout-card> <layout-imposter data-position="top-end" data-margin="m"> <span class="status-badge">Active</span> </layout-imposter></div>
Loading Overlay
Related
<layout-cover>- Full-height vertically centered layout<layout-center>- Horizontally centered container<layout-badge>- Badge component