Skip to main content

Layout System

Build complete application layouts with headers, sidebars, drawers, and responsive behavior.

Two Approaches

Uizy offers two ways to build layouts:

ApproachBest ForMethod
CSS ClassesStatic sites, quick prototypesAdd classes to HTML elements
Web ComponentsDynamic apps, JS interactivityUse <uizy-*> custom elements

Both approaches use the same CSS variables and are fully compatible.

Quick Comparison

CSS Classes

<header class="uizy-header">My App</header>
<aside class="uizy-left uizy-drawer uizy-drawer--left">Nav</aside>
<main class="uizy-main uizy-clip-top uizy-clip-left">Content</main>
<footer class="uizy-footer">Footer</footer>

Web Components

<uizy-app id="app">
<uizy-header>My App</uizy-header>
<uizy-drawer open>Nav</uizy-drawer>
<uizy-main clip-top clip-left>Content</uizy-main>
<uizy-footer>Footer</uizy-footer>
</uizy-app>

Layout Elements

ElementDescription
System BarTop-most bar for status/branding
HeaderMain navigation bar
FooterBottom bar
Left/Right SidebarFixed side panels
DrawerAnimated slide-in panels
OverlaySemi-transparent backdrop
MainPrimary content area

Clipping System

Clip elements to account for fixed layout parts:

ClipEffect
clip-topPosition below header
clip-bottomPosition above footer
clip-leftAccount for left sidebar
clip-rightAccount for right sidebar
clip-systemPosition below system bar only

Configuration

Configure dimensions via JavaScript:

uizy.layout({
layout: {
header: 56, // Header height (px)
footer: 48, // Footer height (px)
left: 240, // Left drawer width (px)
right: 240, // Right drawer width (px)
drawerSpeed: 0.2, // Animation speed (s)
},
});

Or via CSS variables:

:root {
--uizy-header-height: 56px;
--uizy-footer-height: 48px;
--uizy-left-width: 240px;
--uizy-drawer-speed: 0.2s;
}

Next Steps