Quick start guide and documentation
Get adaptive density working in under 3 minutes.
Content 1
Content 2
Content 3
Three levels of spacing are available:
| Level | Gap | Padding | Use Case |
|---|---|---|---|
| Compact | 0.75rem |
0.5rem |
Fine pointers (mouse, trackpad) - maximizes screen space |
| Standard | 1rem |
1rem |
Default - balanced spacing for all devices |
| Spacious | 1.5rem |
1.5rem |
Coarse pointers (touch) - easier touch targeting |
Override automatic detection with the data-rsl-density attribute.
Item 1
Item 2
Item 3
Item 4
Item 1
Item 2
Item 3
Compact spacing
Spacious spacing
// Get the layout element
const layout = document.querySelector('.slot-layout');
// Set density manually
RSL.Density.set(layout, 'compact');
// Get current density
const current = RSL.Density.get(layout);
console.log(current); // 'compact'
// Reset to auto-detect mode
RSL.Density.reset(layout);
Density automatically affects gaps in balanced layouts.
Item 1
Item 2
Item 3
RSL.Density.set(layout, 'compact');RSL.initBalancedSlots();
Sidebar margins adapt to the active density level.
Apply density to parent containers to affect all nested layouts.
Nested 1
Nested 2
Item 2
| Method | Description |
|---|---|
RSL.Density.init() |
Initialize or re-initialize density detection for all layouts |
RSL.Density.set(element, density) |
Set density for a specific element ('compact', 'standard', or 'spacious') |
RSL.Density.get(element) |
Get current density level of an element |
RSL.Density.reset(element) |
Reset element to auto-detect mode |
RSL.Density.detectPointer() |
Detect current pointer type ('fine', 'coarse', or 'none') |
RSL.Density.levels |
Object containing available density levels |
// Detect pointer type
const pointerType = RSL.Density.detectPointer();
console.log('Pointer type:', pointerType);
// Output: 'fine' (mouse) or 'coarse' (touch)
// Get available density levels
console.log(RSL.Density.levels);
// Output: { COMPACT: 'compact', STANDARD: 'standard', SPACIOUS: 'spacious' }
// Get element
const layout = document.querySelector('.slot-layout');
// Get current density
const currentDensity = RSL.Density.get(layout);
console.log('Current density:', currentDensity);
// Set density
RSL.Density.set(layout, RSL.Density.levels.SPACIOUS);
// Reset to auto-detect
RSL.Density.reset(layout);
// Re-initialize all layouts (useful after dynamic content)
RSL.Density.init();
Customize density values by overriding CSS variables:
| Variable | Default Compact | Default Standard | Default Spacious |
|---|---|---|---|
--density-*-gap |
0.75rem | 1rem | 1.5rem |
--density-*-padding |
0.5rem | 1rem | 1.5rem |
--density-*-item-padding |
0.75rem | 1rem | 1.5rem |
--density-*-sidebar-margin |
1rem | 1.5rem | 2rem |
:root {
/* Override compact density */
--density-compact-gap: 0.5rem;
--density-compact-padding: 0.25rem;
/* Override spacious density */
--density-spacious-gap: 2rem;
--density-spacious-padding: 2rem;
}
density.js is loaded after grid.css and density.css.slot-layout, etc.)data-rsl-density value is correct ('compact', 'standard', or 'spacious')var(--rsl-gap) instead of hard-coded valuesOpen density.html in your browser
Use playground.html as a template
Override CSS variables to match your design system