# Border Radius
Source: https://skelementorcss.com/borders/radius
Border radius utilities for rounded corners.
## Overview
Radius utilities shape corners across buttons, cards, fields, and media. They work with border width, style, and color utilities, but can also be used on borderless surfaces.
| Class | Value | CSS | Usage |
| --------------- | ------ | ------------------------ | ----------------------- |
| `.rounded-none` | 0 | `border-radius: 0;` | Square corners |
| `.rounded-sm` | 4px | `border-radius: 4px;` | Tight rounding |
| `.rounded` | 6px | `border-radius: 6px;` | Standard rounding |
| `.rounded-lg` | 8px | `border-radius: 8px;` | Comfortable card radius |
| `.rounded-xl` | 12px | `border-radius: 12px;` | Soft, modern surfaces |
| `.rounded-2xl` | 16px | `border-radius: 16px;` | Display containers |
| `.rounded-full` | 9999px | `border-radius: 9999px;` | Pills and circles |
| Pattern | Covers | Typical suffixes |
| -------------------------------------------------------------------------------------- | ---------------- | --------------------------------------------- |
| `.rounded-{size}` | All four corners | `none`, `sm`, base, `lg`, `xl`, `2xl`, `full` |
| `.rounded-t-{size}`, `.rounded-r-{size}`, `.rounded-b-{size}`, `.rounded-l-{size}` | One side only | `sm`, base, `lg`, `xl` |
| `.rounded-tl-{size}`, `.rounded-tr-{size}`, `.rounded-br-{size}`, `.rounded-bl-{size}` | One corner only | `sm`, base, `lg`, `xl` |
## Basic Example
Use the base `rounded-*` classes to soften every corner equally.
```html theme={null}
```
## Rounding Sides Separately
Use side-specific radius helpers when two adjacent corners should share the same rounding.
```html theme={null}
```
## Rounding Corners Separately
Use corner-specific helpers when only one corner needs a special treatment.
```html theme={null}
```
## Best Practices
* Use one or two radius sizes across a page so surfaces feel related.
* `rounded` and `rounded-lg` cover most interface needs.
* Use side-only rounding for drawers, pills, and surfaces docked to another edge.
* Use corner-only rounding for badges, cropped media, and asymmetric decorative treatments.
* Reach for `rounded-full` on pills, avatars, and circular badges.
* Pair larger radius values with generous padding so corners feel intentional.
## Related Utilities
Border width utilities
Border style utilities
# Border Style
Source: https://skelementorcss.com/borders/style
The bundled border styles: solid, dashed, and none.
## Overview
Border style utilities define how a border line is drawn. The shipped set is intentionally small and covers the common UI cases.
| Class | Style | CSS | Usage |
| ---------------- | ------ | ----------------------- | ----------------------------- |
| `.border-solid` | Solid | `border-style: solid;` | Default border treatment |
| `.border-dashed` | Dashed | `border-style: dashed;` | Optional or secondary framing |
| `.border-none` | None | `border-style: none;` | Remove border style |
## Example
## Examples
```html theme={null}
Solid border
Dashed border
No border
```
## Best Practices
* Use `border-solid` for most buttons, inputs, cards, and structural UI.
* Use `border-dashed` sparingly for optional, provisional, or drop-zone style patterns.
* Pair style with explicit width and color classes so the full border treatment is obvious in markup.
* Use `border-none` intentionally when a component preset adds a border you want removed.
## Related Utilities
Border width utilities
Border radius utilities
# Border Width
Source: https://skelementorcss.com/borders/width
The bundled border-width scale from `border-0` through `border-20`.
## Overview
Use border-width utilities to control how subtle or emphatic a border feels.
Bundled widths use CSS variables such as `var(--border-1)` so the scale stays tokenized; for context on variables in this stack, see [Variables](/concepts/variables).
| Class | Value | CSS | Usage |
| ------------ | -------------- | ------------------ | ------------------------ |
| `.border-0` | 0 | `border-width: 0;` | No border |
| `.border-1` | 1px → 1.25px | `var(--border-1)` | Subtle separation |
| `.border-2` | 2px → 2.5px | `var(--border-2)` | Standard border |
| `.border-4` | 4px → 5px | `var(--border-4)` | Accent framing |
| `.border-8` | 8px → 10px | `var(--border-8)` | Strong decorative border |
| `.border-10` | 10px → 12.5px | `var(--border-10)` | Heavy framing |
| `.border-15` | 15px → 18.75px | `var(--border-15)` | Display framing |
| `.border-20` | 20px → 25px | `var(--border-20)` | Maximum emphasis |
| Pattern | Covers | Typical suffixes |
| ------------------------------------------------------------------------------ | --------------------------- | ----------------------------------------- |
| `.border-{size}` | All four sides | `0`, `1`, `2`, `4`, `8`, `10`, `15`, `20` |
| `.border-t-{size}`, `.border-r-{size}`, `.border-b-{size}`, `.border-l-{size}` | One side only | `1`, `2`, `4`, `8` |
| `.border-x-{size}`, `.border-y-{size}` | Horizontal or vertical pair | `1`, `2`, `4`, `8` |
## Basic Example
Use `border-{size}` to set the same width on all four sides.
```html theme={null}
```
## Individual Sides
Use `border-t-*`, `border-r-*`, `border-b-*`, and `border-l-*` when only one edge needs emphasis.
```html theme={null}
```
## Horizontal and Vertical Sides
Use `border-x-*` and `border-y-*` to apply the same width to a pair of edges.
```html theme={null}
```
## Best Practices
* Use `border-1` and `border-2` for most UI surfaces.
* Use side-specific widths for tabs, dividers, and timeline markers where only one edge should stand out.
* Use `border-x-*` and `border-y-*` for split layouts and framed media without over-specifying each side.
* Use `border-4` and above sparingly for accents, highlights, and decorative frames.
* Pair width utilities with explicit style and color helpers such as `.border-solid` and `.border-gray`.
* Keep border widths consistent across similar components.
# Changelog
Source: https://skelementorcss.com/changelog
What’s new in SkelementorCSS.
The latest from **SkelementorCSS**: plugin releases and documentation updates, newest first.
* **Elementor 4.1 compatibility:** Skelementor now targets Elementor 4.1+ and follows the native Global Classes API/storage model across both `frontend` and `preview`.
* **Preset-first import:** The built-in Skelementor Preset is now the standard path, importing **976 Elementor-native global classes** for Elementor’s default desktop, tablet, and mobile breakpoints.
* **No core patching:** Skelementor works within Elementor 4.1’s native **1000 global class** limit, so no core-file patching or class-limit overrides are required.
* **Verbose class naming:** Renamed the bundled framework toward clearer, more explicit utility names after user feedback.
* **Bundle refresh:** Rebuilt the shipped CSS, `.skele`, global classes, and global variables artifacts to match the updated naming.
* **Cleanup:** Removed stale console/debug logging and tightened the parser around the refreshed utility set.
* **Editor hover previews:** Added hover previews for Skelementor classes inside the Elementor editor, with a setting to turn the feature on or off.
* **Admin polish:** Improved the bundled preset import flow and plugin settings experience.
* **Runtime cleanup:** Removed reliance on packaged beta-era patch manifest state so runtime patch data stays site-local.
* **Release ZIP:** Shipped `19` new classes (`w-`, `min-w-`, `max-w-`, `shadow-`, `inset-shadow-`, `inset-shadow-`). Updated `11` classes (`shadow-`, `btn-`). Removed `4` classes (`drop-shadow-`).
* **Documentaion Upate:** Box-shadow docs now match the shipped plugin, where outer and inset shadow classes are standalone presets, and `drop-shadow` was removed from surfaced docs because Elementor does not expose separate support for that filter in the way the plugin would need.
* **Release ZIP:** Removed backup-folder content from the distribution build so published packages contain only the files meant for production installs.
* **Launch day** for SkelementorCSS.
* Documentation reflects **Elementor 4.0+** with **Atomic Editor** (stable; on by default for new Elementor installs).
* **WordPress 6.9+** documented as the minimum supported version.
* Quickstart and installation point to the hosted plugin ZIP release; navbar includes feedback and download links.
# Background Colors
Source: https://skelementorcss.com/colors/background-colors
Background utilities for white, black, and gray surfaces, plus six semantic tokens with optional l-5…d-5 ramps matching the Colors palette.
## Overview
Use background color utilities for surfaces, panels, and status-driven fills.
| Class | Hex |
| ------------------------ | --------- |
| `.background-white` | `#ffffff` |
| `.background-black` | `#000000` |
| `.background-gray-dark` | `#374151` |
| `.background-gray` | `#6b7280` |
| `.background-gray-light` | `#f3f4f6` |
| `.background-primary` | `#0740f9` |
| `.background-secondary` | `#aaebfd` |
| `.background-neutral` | `#6b7280` |
| `.background-success` | `#3DC13C` |
| `.background-warning` | `#F4BB1B` |
| `.background-error` | `#F13737` |
Semantic tokens also support `.background-{token}-l-5` through `.background-{token}-d-5`; hex steps match the [Color Palette](/concepts/colors#color-palette).
## Examples
```html theme={null}
White
Gray light
Primary
Success
Error
```
## Usage Notes
Classes set `background-color`. Structural fills support layouts, while semantic tokens match [Colors](/concepts/colors). Shade steps use `background-{token}-l-5` ... `background-{token}-d-5` on semantic tokens only.
## Best practices
* Default to **white** / **gray-light** for content; use saturated semantic fills when the meaning fits.
* Pair strong backgrounds with **white** or **black** text (or a verified contrast-safe class).
## Related utilities
Text colors
Border colors
# Border Colors
Source: https://skelementorcss.com/colors/border-colors
Border-color utilities for structural grays and six semantic tokens—primary, secondary, neutral, success, warning, error—with optional l-5…d-5 ramps.
## Overview
Use border color utilities for dividers, frames, and semantic outline states.
| Class | Hex |
| -------------------- | --------- |
| `.border-white` | `#ffffff` |
| `.border-black` | `#000000` |
| `.border-gray` | `#6b7280` |
| `.border-gray-light` | `#e5e7eb` |
| `.border-primary` | `#0740f9` |
| `.border-secondary` | `#aaebfd` |
| `.border-neutral` | `#6b7280` |
| `.border-success` | `#3DC13C` |
| `.border-warning` | `#F4BB1B` |
| `.border-error` | `#F13737` |
Semantic tokens also support `.border-{token}-l-5` through `.border-{token}-d-5`; hex steps match the [Color Palette](/concepts/colors#color-palette).
## Examples
```html theme={null}
Gray
Light gray
Primary
Neutral
Black
```
## Usage Notes
Classes set `border-color`. Always pair them with [width](/borders/width) and [style](/borders/style), such as `border-1 border-solid border-gray`.
## Best practices
* Use **gray-light** for soft dividers; **gray** / **black** when edges must read clearly.
* Always set width and style with color (`border-1 border-solid border-gray`).
## Related utilities
Text colors
Background colors
# Text Colors
Source: https://skelementorcss.com/colors/text-colors
Text utilities for structural grays plus six semantic tokens—primary, secondary, neutral, success, warning, error—with optional l-5…d-5 ramps.
## Overview
Use text color utilities for hierarchy, links, and status without leaving the shared palette.
| Class | Hex |
| ------------------ | --------- |
| `.text-white` | `#ffffff` |
| `.text-black` | `#000000` |
| `.text-gray-dark` | `#374151` |
| `.text-gray` | `#6b7280` |
| `.text-gray-light` | `#9ca3af` |
| `.text-primary` | `#0740f9` |
| `.text-secondary` | `#aaebfd` |
| `.text-neutral` | `#6b7280` |
| `.text-success` | `#3DC13C` |
| `.text-warning` | `#F4BB1B` |
| `.text-error` | `#F13737` |
Semantic tokens also support `.text-{token}-l-5` through `.text-{token}-d-5`; use the same shade steps shown in the [Color Palette](/concepts/colors#color-palette).
## Examples
```html theme={null}
```
## Usage Notes
Classes set `color`. **Structural** utilities are fixed grays for hierarchy; **semantic** utilities use the six tokens from [Colors](/concepts/colors) (`primary`, `secondary`, `neutral`, `success`, `warning`, `error`). For shades off the base, append `-l-5`…`-l-1` or `-d-1`…`-d-5` (see the [palette](/concepts/colors#color-palette)). `text-gray*` is for typography tiers; `text-neutral` follows the neutral ramp like `border-neutral` / `background-neutral`.
## Best practices
* Use **primary** for links and brand emphasis; use **success** / **error** / **warning** for status.
* Check contrast on colored backgrounds; see [Colors — Accessibility](/concepts/colors#accessibility).
## Related utilities
Font size, weight, and layout
Background colors
# Buttons
Source: https://skelementorcss.com/components/button
Bundled button presets: semantic color classes plus separate size classes from button-xs through button-xl.
## Overview
Buttons use a preset system with two parts: a semantic color class and, when needed, a size class. Start with a preset like `button-primary`, then add a size like `button-lg` when the default scale is not the right fit.
## Examples
### Basic button preset
Use a semantic preset like `button-primary` when you need a standard primary action without changing the size.
```html theme={null}
```
This is the base pattern for the button system: choose the preset that matches the action, then layer in size only when you need it.
### Choosing a semantic color
Use a semantic token to communicate intent. For example, `button-success` works well for positive confirmations and completion actions.
```html theme={null}
```
| Semantic token | Color class |
| -------------- | ------------------ |
| `primary` | `button-primary` |
| `secondary` | `button-secondary` |
| `neutral` | `button-neutral` |
| `success` | `button-success` |
| `warning` | `button-warning` |
| `error` | `button-error` |
### Changing size
Add a size class next to the preset when the button should feel more prominent or more compact in the layout.
```html theme={null}
```
Size classes only make sense when they are paired with a semantic preset.
| Suffix | Class |
| ------ | ----------- |
| `xs` | `button-xs` |
| `sm` | `button-sm` |
| `md` | `button-md` |
| `lg` | `button-lg` |
| `xl` | `button-xl` |
### Combining with utilities
Preset classes define the button itself, and utilities handle the surrounding composition. This works well when a button needs spacing or typography adjustments inside a larger layout.
```html theme={null}
```
Use utilities around the button or alongside the preset when you need layout, spacing, or text-level refinement without replacing the preset system.
## Notes
* Every button starts with a semantic preset such as `button-primary` or `button-success`.
* Size classes only make sense next to a color preset (`button-primary button-md`).
* `secondary` is a light fill (`#aaebfd`); use `text-black` or `text-gray-dark` on the label if contrast is weak.
* You can still add spacing, layout, or typography utilities alongside the preset classes.
# Borders
Source: https://skelementorcss.com/concepts/borders
Border width, style, radius, and color utilities for defining element boundaries.
## Overview
Border utilities cover width, style, radius, and color in one system, including side-specific border widths and directional corner rounding.
Bundled border-width scale from `border-0` through `border-20`
Border style utilities: solid, dashed, and none
Border radius utilities for rounded corners
Bundled color utilities for soft, neutral, and accent borders
## Common Patterns
* Use `border-gray-light` for soft section and card separation.
* Use `border-gray` or `border-black` when structure needs more contrast.
* Use `border-primary` for the main bundled accent border.
* Use side-specific widths and directional rounding for tabs, panels, and emphasized edges.
* Keep width, style, color, and radius explicit in markup for clarity.
## Related Utilities
Color utilities for border colors
Padding utilities for internal border spacing
# Colors
Source: https://skelementorcss.com/concepts/colors
Text, background, and border colors with semantic naming.
## Overview
Color utilities cover text, background, and border tokens built on the same semantic palette.
## Base shades
| Name | Base hex |
| --------- | --------- |
| Primary | `#0740f9` |
| Secondary | `#aaebfd` |
| Neutral | `#6b7280` |
| Success | `#3DC13C` |
| Warning | `#F4BB1B` |
| Error | `#F13737` |
## Color Palette
Click a swatch to copy. Columns match **l-5** … **base** … **d-5**.
The utility references split **structural** white/black/gray classes from the six **semantic** tokens (with optional `-l-*` / `-d-*` steps): [Text colors](/colors/text-colors), [Background colors](/colors/background-colors), [Border colors](/colors/border-colors).
Semantic text color utilities
Background color utilities for sections and surfaces
Border color utilities that pair with the border system
## Accessibility
Ensure text and interface colors preserve readable contrast. The palette is designed for sensible defaults, but context still matters.
## Related Utilities
Text utilities that work with colors
Border utilities with color support
# Components
Source: https://skelementorcss.com/concepts/components
Bundled preset button classes for fast, consistent actions.
## Overview
Components are reusable interface patterns built on top of the lower-level utility classes. Instead of assembling every state from scratch, you reach for a component pattern when you want a familiar piece of UI to behave consistently across a site.
Common component categories include buttons for actions, badges for short status labels, and links for navigation or secondary calls to action. Utilities still matter here because they handle the layout, spacing, and typography around each component.
At the moment, the bundled component documentation focuses on the preset button classes that ship with the plugin. Badges and links are still typically composed with the utility system rather than documented as separate shipped presets.
Pre-styled action buttons with semantic colors and separate size classes
## What Ships
* **Colors:** `.button-primary`, `.button-secondary`, `.button-neutral`, `.button-success`, `.button-warning`, `.button-error`
* **Sizes (combine with a color class):** `.button-xs`, `.button-sm`, `.button-md`, `.button-lg`, `.button-xl`
Use utility classes on top when you need layout, spacing, or typography adjustments around the preset.
## Related Utilities
Color utilities that pair cleanly with button presets
Margin and padding helpers around calls to action
# Effects
Source: https://skelementorcss.com/concepts/effects
Opacity and standalone outer/inset shadow presets for tone, depth, and surface hierarchy.
## Overview
Effects utilities cover opacity and box shadow for tone and depth.
The shipped opacity scale for muted, layered, and disabled states
Outer and inset shadow utilities for elevated and recessed surfaces
## What Lives In Effects
* bundled opacity utilities
* shipped outer box-shadow utilities
* shipped inset box-shadow utilities
## Common Use Cases
* **Surface layering:** tone down panels without changing the color token
* **Disabled previews:** show non-primary states in mockups
* **Depth cues:** build subtle contrast between stacked blocks
* **Recessed controls:** create wells, trays, and pressed input-like surfaces
* **Content hierarchy:** soften secondary text or supporting panels
## Accessibility
**Accessibility Note:** Ensure sufficient contrast when using opacity. Text
with low opacity may not meet accessibility standards.
#### Opacity Guidelines
* **Text:** Avoid opacity below 75% for readable text
* **Interactive elements:** Use opacity to indicate disabled states
* **Overlays:** Use opacity to create depth without hiding content completely
* **Focus states:** Ensure focus indicators remain visible with opacity
Use the separate Filters section when you need blur, contrast, hue shifts, or color-effect utilities on media.
# Filters
Source: https://skelementorcss.com/concepts/filters
Bundled filter utilities for blur, brightness, contrast, saturation, and color shifts.
## Overview
Filters utilities adjust blur, brightness, contrast, saturation, hue, and color effects.
## Filter Guides
Soften media and decorative layers with the bundled blur scale.
Dim or lift imagery without replacing the source asset.
Tighten or soften tonal separation with the shipped contrast helpers.
Increase or reduce color intensity with the bundled saturation scale.
Shift imagery into a new color family with the bundled hue helpers.
Use grayscale, invert, sepia, and filter reset helpers.
## Shipped Filter Families
* `filter-none`
* `blur-sm`, `blur`, `blur-md`, `blur-lg`, `blur-xl`
* `brightness-75`, `brightness-90`, `brightness-100`, `brightness-110`, `brightness-125`
* `contrast-75`, `contrast-90`, `contrast-100`, `contrast-110`, `contrast-125`
* `saturate-0`, `saturate-50`, `saturate-100`, `saturate-150`, `saturate-200`
* `hue-rotate-15`, `hue-rotate-30`, `hue-rotate-60`, `hue-rotate-90`, `hue-rotate-180`
* `grayscale`, `grayscale-50`, `invert`, `invert-50`, `sepia`, `sepia-50`
## Related Guides
Opacity and box-shadow guidance that pairs well with filters
Use outer and inset box-shadow utilities for rectangular surfaces
# Fluid scaling
Source: https://skelementorcss.com/concepts/fluid-scaling
How the bundled fluid families scale smoothly and where fixed utilities still make more sense.
## Overview
Fluid scaling means a value changes smoothly as the viewport changes instead of jumping only at a few breakpoints. In Skelementor, selected utility families use that approach so one class can stay proportional across more screen sizes.
## Why it helps
* A heading can feel oversized until the next breakpoint suddenly shrinks it.
* Spacing can feel cramped or too loose between thresholds.
* Repeated breakpoint overrides are often needed just to keep a scale feeling balanced.
## How fluid scaling works
Bundled fluid families are typically powered by `clamp(min, preferred, max)`.
```css Fluid value example lines theme={null}
.hero-title {
font-size: clamp(2rem, calc(1.5rem + 2vw), 4rem);
}
```
## Why some families are fluid
These families benefit from fluid scaling because they control proportional measurements that usually need to breathe with the viewport:
| Family | Why fluid here | Read more |
| ------------------ | --------------------------------------------------------- | ---------------------------------- |
| **`text-*`** | Reading scale should adapt gradually. | [Font size](/typography/font-size) |
| **`m-*`** family | Outer spacing should stay proportional. | [Margin](/spacing/margin) |
| **`p-*`** family | Inner spacing benefits from the same gradual rhythm. | [Padding](/spacing/padding) |
| **`gap-*`** family | Space between items often needs to scale with the layout. | [Gap](/flexbox/gap) |
## Why some families stay fixed
* **Colors** and **font weights** are semantic choices, not proportional measurements.
* **Display**, **positioning**, and similar helpers are structural states.
* **`maximum-width-*`** and border width utilities stay fixed in this bundle.
* **Component presets** should stay predictable.
* **`leading-*`** stays fixed so line-height remains stable with the text system.
## Related
Bundled `text-*` classes with fluid `clamp()` ranges
Fixed `leading-*` utilities and why they stay stable
# Layout
Source: https://skelementorcss.com/concepts/layout
Display, overflow, object-fit, aspect-ratio, positioning, and z-index utilities.
## Overview
Layout utilities control how blocks display, clip, position, layer, and frame media.
Block, inline-block, flex, inline-flex, and hidden helpers
Clip or scroll overflowing content with the bundled overflow helpers
Static, relative, absolute, fixed, and sticky layout placement
Tailwind-style object-fit utilities for images and video in fixed frames
Square, video, and auto aspect utilities
Layering helpers for stacked interfaces and overlays
## What Ships Here
* Display: `.block`, `.inline-block`, `.flex`, `.inline-flex`, `.hidden`
* Overflow: `.overflow-hidden`, `.overflow-auto`, `.overflow-visible`
* Positioning: `.static`, `.relative`, `.absolute`, `.fixed`, `.sticky`
* Object fit: `.object-contain`, `.object-cover`, `.object-fill`, `.object-none`, `.object-scale-down`
* Aspect ratio: `.aspect-square`, `.aspect-video`, `.aspect-auto`
* Z-index: `.z-0` through `.z-100` in steps of 10
## Related Utilities
Margin and padding for layout spacing
Width and height utilities for layout
# Breakpoints
Source: https://skelementorcss.com/concepts/responsive-utilities
The shipped `--on-*` suffix system for structural classes at each breakpoint.
## Overview
The bundled framework ships responsive suffix variants for structural utilities. Instead of prefix syntax, Skelementor appends a breakpoint suffix to the class name.
That is **discrete** responsive behavior at thresholds. It differs from **fluid scaling** (for example `clamp()` on font sizes), which changes continuously with the viewport—see [Fluid scaling](/concepts/fluid-scaling).
## Breakpoint Map
| Suffix | Media query | Usage |
| ---------- | ------------------- | -------------------------- |
| `--on-xxl` | `min-width: 2400px` | Widescreen and above |
| `--on-xl` | `max-width: 1366px` | Laptop and below |
| `--on-l` | `max-width: 1200px` | Tablet landscape and below |
| `--on-m` | `max-width: 1024px` | Tablet and below |
| `--on-s` | `max-width: 880px` | Mobile landscape and below |
| `--on-xs` | `max-width: 767px` | Mobile only |
## Example
Use the interactive demo to see how breakpoint thresholds relate to the `--on-*` suffix system.
```html theme={null}
A
B
```
## Supported Families
* Display: `.hidden`, `.block`, `.inline-block`, `.flex`, `.inline-flex`
* Overflow: `.overflow-hidden`, `.overflow-auto`, `.overflow-visible`
* Object fit: `.object-contain`, `.object-cover`, `.object-fill`, `.object-none`, `.object-scale-down`
* Aspect ratio: `.aspect-square`, `.aspect-video`, `.aspect-auto`
* Positioning: `.static`, `.relative`, `.absolute`, `.fixed`, `.sticky`
* Z-index: `.z-0`, `.z-10`, `.z-20`, `.z-30`, `.z-40`, `.z-50`, `.z-60`, `.z-70`, `.z-80`, `.z-90`, `.z-100`
* Flex direction: `.flex-row`, `.flex-col`, reverse variants
* Flex wrap: `.flex-wrap`, `.flex-nowrap`, `.flex-wrap-reverse`
* Alignment: `.justify-*`, `.items-*`, `.self-*`, `.content-*`
* Flex basis: `.basis-auto`, `.basis-full`, `.basis-0`, `.basis-px`, `.basis-1-2`, `.basis-1-3`, `.basis-2-3`, `.basis-1-4`, `.basis-3-4`
* Order: `.order-first`, `.order-last`
## Best Practices
* Use suffixes only for structural shifts, not for every class on the page.
* Keep the base class readable first, then add the responsive override.
* Prefer a small number of breakpoint changes over stacking many suffixes on one element.
* Pair responsive suffixes with the standard spacing and sizing utilities that remain stable across breakpoints.
# Sizing
Source: https://skelementorcss.com/concepts/sizing
Width, height, and matching min/max sizing helpers for fixed, fractional, and keyword-based layouts.
## Overview
Sizing utilities cover width, height, and matching min/max constraints with the same suffix families.
Container, fraction, full, auto, and screen width utilities
Container, fraction, full, auto, and screen height utilities
Matching width-cap utilities
Matching width-floor utilities
Matching height-cap utilities
Matching height-floor utilities
## Core Families
* Width: `width-`, `width-`, and keyword helpers like `width-full`, `width-auto`, and `width-screen`
* Min width: `minimum-width-`, `minimum-width-`, and keyword floor helpers like `minimum-width-full`, `minimum-width-auto`, and `minimum-width-screen`
* Max width: `maximum-width-`, `maximum-width-`, and keyword cap helpers like `maximum-width-full`, `maximum-width-auto`, and `maximum-width-screen`
* Height: `height-`, `height-`, and keyword helpers like `height-full`, `height-auto`, and `height-screen`
* Min height: `minimum-height-`, `minimum-height-`, and keyword floor helpers like `minimum-height-full`, `minimum-height-auto`, and `minimum-height-screen`
* Max height: `maximum-height-`, `maximum-height-`, and keyword cap helpers like `maximum-height-full`, `maximum-height-auto`, and `maximum-height-screen`
## Related Utilities
Display utilities for sizing
Margin and padding utilities
# Spacing
Source: https://skelementorcss.com/concepts/spacing
Margin and padding utilities built around the bundled spacing scale.
## Overview
Skelementor bundles one spacing scale for margin (outside the box), padding (inside the box), and gap (between flex items). Pick the same numeric suffix across utilities to keep rhythm predictable.
| Family | Value scale |
| ----------- | ----------------------------------------------------------------------------------------------------- |
| `margin-*` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12`, `auto` |
| `padding-*` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `gap-*` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12`, plus gap-only `10`, `14`, `16`, `18`, `20`, `22`, `24` |
**`margin-*`:** `margin`, `margin-horizontal`, `margin-vertical`, `margin-top`, `margin-bottom`, `margin-left`, `margin-right` (for example `margin-horizontal-4`). **`padding-*`:** `padding`, `padding-horizontal`, `padding-vertical`, `padding-top`, `padding-bottom` (for example `padding-horizontal-6`). **`gap-*`:** `gap`, `gap-x`, or `gap-y` (for example `gap-4`, `gap-x-8`). Margin `auto` works on all margin families, including `margin-top-auto` and `margin-bottom-auto`.
External spacing with positive, auto, and axis helpers
Internal spacing with all-side and directional helpers
## Common Spacing Patterns
Use the spacing families consistently in cards, forms, and sections so outer spacing, inner padding, and content rhythm all come from the same bundled scale.
## Best Practices
Always use the predefined spacing scale (px, 1, 2, 3, 4, 6, 8, 12) for consistency. This ensures predictable layouts and easier maintenance.
Use consistent spacing between related elements for better visual flow.
Use smaller gaps within groups and larger gaps between groups.
Reach for `0`, `px`, and `auto` when you need explicit control beyond the main bundled scale.
## Spacing Hierarchy
1. **Micro spacing (1-2):** Fine adjustments, icon spacing
2. **Small spacing (3-4):** Element internal spacing, form fields
3. **Medium spacing (6):** Section internal spacing, card padding
4. **Large spacing (8-12):** Section spacing, major layout divisions
## Related Utilities
Flexbox and display utilities for layout
Width and height utilities for spacing
# Typography
Source: https://skelementorcss.com/concepts/typography
Responsive type scale, leading, weights, alignment, tracking, and text styling.
## Overview
Typography utilities cover size, weight, leading, alignment, tracking, and text treatments in one naming system.
The bundled `text-*` scale from `.text-2xs` through `.text-9xl`
Nine font-weight utilities from thin through black
Fixed pixel `.leading-*` utilities for readable rhythm
Logical alignment helpers for LTR and RTL content
Tracking helpers from tightest to ultra-wide
Transform, decoration, and italic helpers
Text color utilities for hierarchy, emphasis, and contrast
## What Ships
* Font size: `.text-2xs` through `.text-9xl`
* Font weight: `.font-thin` through `.font-black`
* Leading: `.leading-tight`, `.leading-snug`, `.leading-normal`, `.leading-relaxed`, `.leading-loose`
* Alignment: `.text-start`, `.text-center`, `.text-end`
* Tracking: `.tracking-tightest` through `.tracking-ultra-wide`
* Text styling: `.uppercase`, `.lowercase`, `.underline`, `.no-underline`, `.italic`
# Variables
Source: https://skelementorcss.com/concepts/variables
How Elementor Variables act as shared design tokens and how they work alongside Skelementor utilities.
## Overview
In Elementor, Variables are shared design values you can reuse across a site instead of repeating the same raw value everywhere. They work like design tokens for colors, typography, and sizes.
## Why variables help
* They keep repeated values consistent across pages and components.
* They make global updates easier when a brand value changes.
* They keep custom CSS cleaner because shared values come from tokens instead of scattered literals.
* They help Elementor styling decisions and Skelementor utilities stay aligned.
## In Elementor
### 1. Open the variable picker
Click the **variable icon** in a supported control to open Elementor's variables popup window.
### 2. Use the variables popup window
This popup is the variable list Elementor shows for that field. It lets you:
* search available variables
* pick an existing variable for the current control
* create a new variable with the `+` button
* open the **Variables Manager** from the settings cog
Skelementor-imported variables show up here too, so this is where the imported token set becomes usable inside the editor.
### 3. Manage variables centrally
The **Variables Manager** is Elementor's central panel for managing variables. Based on Elementor's current docs, this is where you can:
* search variables
* create new color, font, or size variables
* edit existing variable values
* delete variables you no longer need
* save changes and update variable-driven styling across the site
## With Skelementor
* **Utilities** apply layout and styling behavior.
* **Variables** provide the reusable values behind those decisions.
* Together, they keep classes expressive while centralizing the values that matter.
Use a **variable** when the value itself should be reusable across many places. Use a **class** when you want to apply a styling pattern or behavior to an element.
## Related
`var(--border-*)` and the border scale
Semantic palette and utility naming
# Box Shadow
Source: https://skelementorcss.com/effects/box-shadow
Standalone outer and inset shadow presets for elevation, recessed depth, and semantic emphasis.
## Overview
Box shadow utilities give surfaces visible depth. Use outer shadows when an element should feel lifted above the canvas, and inset shadows when a surface should feel pressed inward or recessed.
In the current plugin, each shadow utility is a full `box-shadow` preset. Elementor applies shadow values as one complete property payload, so shadow size classes and shadow color classes do **not** merge together.
* Size classes work on their own.
* Color classes work on their own.
* Colored outer shadow classes use the `shadow-md` geometry.
* Colored inset shadow classes use the `inset-shadow-md` geometry.
| Pattern | Supported classes | What it controls |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `shadow-` | `shadow-sm`, `shadow-md`, `shadow-lg`, `shadow-xl`, `shadow-panel` | Standalone neutral outer shadow presets |
| `shadow-` | `shadow-primary`, `shadow-secondary`, `shadow-neutral`, `shadow-success`, `shadow-warning`, `shadow-error` | Standalone colored outer shadow presets using the `shadow-md` size |
| `inset-shadow-` | `inset-shadow-sm`, `inset-shadow-md`, `inset-shadow-lg`, `inset-shadow-xl` | Standalone neutral inset shadow presets |
| `inset-shadow-` | `inset-shadow-primary`, `inset-shadow-secondary`, `inset-shadow-neutral`, `inset-shadow-success`, `inset-shadow-warning`, `inset-shadow-error` | Standalone colored inset shadow presets using the `inset-shadow-md` size |
## Examples
### Outer shadow sizing
Use the outer shadow scale when cards, promos, drawers, or floating actions need clearer separation from the page.
```html theme={null}
Quiet utility card
Default content panel
Featured surface
```
### Coloring outer shadows
Use the colored outer presets when the shadow itself should reinforce a semantic state. These classes are complete shadow presets built on the default `shadow-md` geometry, not color-only add-ons.
```html theme={null}
```
### Inset shadow sizing
Use inset shadows when an area should feel carved into the interface, like search wells, trays, and pressed controls.
```html theme={null}
Soft inset field
Default inset well
Deep inset panel
```
### Coloring inset shadows
Inset shadow colors are useful when a recessed surface should still communicate focus, state, or meaning. These classes are complete inset presets built on the default `inset-shadow-md` geometry, not overlays on top of a neutral inset size.
```html theme={null}
Current search field
Quiet filter tray
Validation message well
```
## Usage Notes
* Use outer shadows for lifted surfaces such as cards, action clusters, banners, and overlays.
* Use inset shadows for recessed controls, trays, wells, and pressed states.
* Choose a single shadow preset per element. Do not stack a shadow size class with a shadow color class in the current plugin.
* Treat colored shadow presets as the semantic version of `shadow-md` or `inset-shadow-md`, not as add-on color layers.
* Keep colored shadows intentional. They work best on key actions, status-driven UI, and a small number of highlighted surfaces.
* Pair shadows with radius and background utilities so the depth feels tied to a real surface.
## Best Practices
* Prefer the smaller shadow sizes for dense content and reserve `shadow-lg`, `shadow-xl`, and `shadow-panel` for isolated emphasis.
* Use semantic shadow colors to reinforce a meaning that already exists in the UI, not to decorate every surface.
* Inset shadows work best when the background already suggests a contained surface such as `bg-white` or `bg-gray-light`.
* Check strong shadow colors in both light and dark contexts so they still read as depth instead of glow.
## Related Utilities
Pair shadow and opacity for layered states
Pair shadow presets with border radius and border styles
# Opacity
Source: https://skelementorcss.com/effects/opacity
Use the bundled opacity scale for overlays, states, and layered interfaces.
## Overview
The bundle ships every 5% step from **`opacity-0`** through **`opacity-100`** for overlays, disabled states, and layered interfaces.
| Class | Value | CSS |
| -------------- | ----- | ---------------- |
| `.opacity-0` | 0% | `opacity: 0;` |
| `.opacity-5` | 5% | `opacity: 0.05;` |
| `.opacity-10` | 10% | `opacity: 0.1;` |
| `.opacity-15` | 15% | `opacity: 0.15;` |
| `.opacity-20` | 20% | `opacity: 0.2;` |
| `.opacity-25` | 25% | `opacity: 0.25;` |
| `.opacity-30` | 30% | `opacity: 0.3;` |
| `.opacity-35` | 35% | `opacity: 0.35;` |
| `.opacity-40` | 40% | `opacity: 0.4;` |
| `.opacity-45` | 45% | `opacity: 0.45;` |
| `.opacity-50` | 50% | `opacity: 0.5;` |
| `.opacity-55` | 55% | `opacity: 0.55;` |
| `.opacity-60` | 60% | `opacity: 0.6;` |
| `.opacity-65` | 65% | `opacity: 0.65;` |
| `.opacity-70` | 70% | `opacity: 0.7;` |
| `.opacity-75` | 75% | `opacity: 0.75;` |
| `.opacity-80` | 80% | `opacity: 0.8;` |
| `.opacity-85` | 85% | `opacity: 0.85;` |
| `.opacity-90` | 90% | `opacity: 0.9;` |
| `.opacity-95` | 95% | `opacity: 0.95;` |
| `.opacity-100` | 100% | `opacity: 1;` |
## Example
## Best Practices
Ensure text remains readable when opacity reduces contrast. Decorative overlays can go low; body text usually should not.
`opacity-10` through `opacity-50` work well for dimming media or stacking panels.
`opacity-60` through `opacity-95` can suggest disabled or loading states while keeping content visible.
Too many translucent layers can make interfaces feel muddy and hard to read.
Overlays usually combine opacity with `.relative`, `.absolute`, or `.fixed`.
## Related Utilities
Overview of the currently shipped effects surface
Color utilities that work with opacity
# Blur
Source: https://skelementorcss.com/filters/blur
Use the bundled blur utilities to soften media and supporting layers.
## Overview
Blur utilities are now bundled and mapped through the current framework source. They are most useful for decorative media, background plates, and softened support layers.
| Class | Filter (CSS) | Usage |
| -------------- | --------------------- | -------------------------------------- |
| `.filter-none` | `filter: none;` | Reset inherited blur or other filters |
| `.blur-sm` | `filter: blur(4px);` | Light softening |
| `.blur` | `filter: blur(8px);` | Default decorative blur |
| `.blur-md` | `filter: blur(12px);` | Medium background plates |
| `.blur-lg` | `filter: blur(16px);` | Strong blur for depth |
| `.blur-xl` | `filter: blur(24px);` | Heavy blur for hero or frosted effects |
## Example
### Markup
```html theme={null}
```
## Best Practices
* Use blur on decorative media, not on body text.
* Start with `blur-sm` or `blur` before moving into the heavier levels.
* Pair blur with opacity and overlays for more controlled hero treatments.
* Use `filter-none` to intentionally reset inherited filter chains.
## Related Utilities
Pair blur with brightness adjustments on media
Add or remove intensity after softening imagery
# Brightness
Source: https://skelementorcss.com/filters/brightness
Use the bundled brightness utilities to dim or lift media without replacing the source asset.
## Overview
Brightness utilities are bundled and work well for hero media, image overlays, and quick tonal corrections when the source asset should stay unchanged.
| Class | Filter (CSS) | Usage |
| ----------------- | --------------------------- | ------------------------------------------- |
| `.brightness-75` | `filter: brightness(0.75);` | Noticeably dimmed media |
| `.brightness-90` | `filter: brightness(0.9);` | Slight dim for backgrounds behind text |
| `.brightness-100` | `filter: brightness(1);` | Neutral / no change (matches preview scale) |
| `.brightness-110` | `filter: brightness(1.1);` | Light lift |
| `.brightness-125` | `filter: brightness(1.25);` | Stronger lift; use sparingly |
## Example
### Markup
```html theme={null}
```
## Best Practices
* Reduce brightness for background media behind text.
* Increase brightness sparingly to avoid washed-out visuals.
* Pair brightness with contrast carefully so images stay readable.
* Prefer opacity alone when you only need a simple dimming effect.
## Related Utilities
Tune contrast alongside brightness
Adjust color intensity after brightness changes
# Color Effects
Source: https://skelementorcss.com/filters/color-effects
Use bundled grayscale, invert, sepia, and filter reset utilities for quick tonal treatments.
## Overview
Color effect utilities apply grayscale, invert, or sepia through the `filter` property, plus **`filter-none`** to reset inherited filters. They are ideal for inactive states, editorial tone, and quick dramatic treatments.
| Class | Filter (CSS) | Usage |
| --------------- | ------------------------- | -------------------------------------- |
| `.filter-none` | `filter: none;` | Clear inherited filters on the element |
| `.grayscale` | `filter: grayscale(1);` | Full grayscale |
| `.grayscale-50` | `filter: grayscale(0.5);` | Partial desaturation |
| `.invert` | `filter: invert(1);` | Full color inversion |
| `.invert-50` | `filter: invert(0.5);` | Partial inversion |
| `.sepia` | `filter: sepia(1);` | Full sepia tone |
| `.sepia-50` | `filter: sepia(0.5);` | Light sepia warmth |
## Example
### Markup
```html theme={null}
```
## Best Practices
* Use `filter-none` to reset a filter chain when a nested asset should stay untouched.
* Use grayscale helpers for muted previews or inactive image states.
* Use invert helpers cautiously on artwork and icons so contrast remains readable.
* Use sepia on editorial or archival treatments where warmth is intentional.
## Related Utilities
Reintroduce or reduce intensity around grayscale and sepia treatments
Shift color families instead of flattening them
# Contrast
Source: https://skelementorcss.com/filters/contrast
Use the bundled contrast utilities to tighten or soften tonal separation in imagery.
## Overview
Contrast utilities are bundled and work best on images, badges, and visual surfaces that need sharper or softer tonal separation.
| Class | Filter (CSS) | Usage |
| --------------- | ------------------------- | ------------------------------------------- |
| `.contrast-75` | `filter: contrast(0.75);` | Softer separation |
| `.contrast-90` | `filter: contrast(0.9);` | Slightly muted contrast |
| `.contrast-100` | `filter: contrast(1);` | Neutral / no change (matches preview scale) |
| `.contrast-110` | `filter: contrast(1.1);` | Slightly punchier imagery |
| `.contrast-125` | `filter: contrast(1.25);` | Stronger tonal separation |
## Example
### Markup
```html theme={null}
```
## Best Practices
* Use small contrast adjustments first before reaching for stronger values.
* Test both light and dark contexts because contrast changes feel different in each.
* Avoid over-processing UI imagery that already has strong tonal separation.
* Combine with brightness intentionally when refining hero or card media.
## Related Utilities
Balance contrast with brightness changes
Change color families after tonal corrections
# Hue Rotate
Source: https://skelementorcss.com/filters/hue-rotate
Use the bundled hue rotation utilities to shift imagery into a new color family.
## Overview
Hue rotation utilities shift the hue of imagery by a fixed angle. They are useful for subtle brand tinting, stylized states, or creative treatments when the source asset should stay in place.
| Class | Filter (CSS) | Usage |
| ----------------- | ----------------------------- | -------------------------------------- |
| `.hue-rotate-15` | `filter: hue-rotate(15deg);` | Gentle drift |
| `.hue-rotate-30` | `filter: hue-rotate(30deg);` | Moderate shift |
| `.hue-rotate-60` | `filter: hue-rotate(60deg);` | Strong color family change |
| `.hue-rotate-90` | `filter: hue-rotate(90deg);` | Quarter-turn hue |
| `.hue-rotate-180` | `filter: hue-rotate(180deg);` | Complementary / dramatic stylized look |
## Example
### Markup
```html theme={null}
```
## Best Practices
* Use the small rotation helpers first when you only need a gentle color drift.
* Reserve `hue-rotate-180` for stylized states or dramatic transformations.
* Stack hue rotation with saturation or contrast carefully so the image still feels intentional.
## Related Utilities
Adjust color intensity before or after rotating hue
Tighten tonal separation alongside the hue shift
# Saturate
Source: https://skelementorcss.com/filters/saturate
Use the bundled saturation utilities to reduce or amplify color intensity.
## Overview
Saturation utilities are bundled so you can mute or intensify color in imagery without swapping assets. They pair cleanly with contrast, brightness, and other filter helpers.
| Class | Filter (CSS) | Usage |
| --------------- | ------------------------ | ----------------------------------------------- |
| `.saturate-0` | `filter: saturate(0);` | Fully desaturated (grayscale intensity channel) |
| `.saturate-50` | `filter: saturate(0.5);` | Half saturation |
| `.saturate-100` | `filter: saturate(1);` | Neutral / no change (matches preview scale) |
| `.saturate-150` | `filter: saturate(1.5);` | Boosted color |
| `.saturate-200` | `filter: saturate(2);` | Strong saturation; use sparingly |
## Example
### Markup
```html theme={null}
```
## Best Practices
* Use `saturate-0` or `saturate-50` for muted backgrounds and editorial treatments.
* Use `saturate-150` or `saturate-200` sparingly on accent imagery.
* Pair saturation with contrast or brightness when the image needs both tonal and color adjustments.
## Related Utilities
Balance intensity with overall lightness
Shift the hue family after adjusting saturation
# Align Content
Source: https://skelementorcss.com/flexbox/align-content
Use the shipped `content-*` utilities to distribute wrapped flex lines on the cross axis.
## Overview
Align content utilities control how wrapped flex lines are distributed along the cross axis. They only take effect when the container has multiple lines, so always pair them with `.flex-wrap`.
| Class | CSS |
| ------------------ | ------------------------------- |
| `.content-start` | `align-content: flex-start;` |
| `.content-center` | `align-content: center;` |
| `.content-end` | `align-content: flex-end;` |
| `.content-between` | `align-content: space-between;` |
| `.content-around` | `align-content: space-around;` |
| `.content-evenly` | `align-content: space-evenly;` |
Responsive `content-*--on-*` variants are also shipped.
`align-content` only becomes visible when the container has multiple flex lines, so pair it with `.flex-wrap`.
## Start
`.content-start` packs all wrapped lines toward the top of the container.
```html theme={null}
01
02
03
```
## Center
`.content-center` groups all wrapped lines in the vertical center of the container.
```html theme={null}
01
02
03
```
## End
`.content-end` packs all wrapped lines toward the bottom of the container.
```html theme={null}
01
02
03
```
## Between
`.content-between` places the first row at the top and the last row at the bottom, with equal space between the rest.
```html theme={null}
01
02
03
```
## Around
`.content-around` distributes equal space around each row of items.
```html theme={null}
01
02
03
```
## Evenly
`.content-evenly` distributes perfectly equal space between all rows and the container edges.
```html theme={null}
01
02
03
```
## Related Utilities
Enable multiple rows before aligning them
Control item alignment inside each row
# Align Items
Source: https://skelementorcss.com/flexbox/align-items
Use the shipped `items-*` utilities to align every flex child along the cross axis.
## Overview
Align items utilities control where every child sits along the cross axis of the flex container. Use them to vertically align items in a row or horizontally align items in a column.
| Class | CSS |
| ---------------- | -------------------------- |
| `.items-start` | `align-items: flex-start;` |
| `.items-center` | `align-items: center;` |
| `.items-end` | `align-items: flex-end;` |
| `.items-stretch` | `align-items: stretch;` |
Responsive `items-*--on-*` variants are also shipped.
## Start
`.items-start` aligns all children to the start of the cross axis. Items with different heights will share a common top edge.
```html theme={null}
Short
Taller card
Short
```
## Center
`.items-center` vertically centers all children within the container. This is the most common alignment for headers, navigation bars, and balanced rows.
```html theme={null}
Short
Taller card
Short
```
## End
`.items-end` aligns all children to the end of the cross axis. Items share a common bottom edge.
```html theme={null}
Short
Taller card
Short
```
## Stretch
`.items-stretch` makes every child fill the full cross-axis height of the container. This is the default flex behavior and is useful when cards or columns should match heights.
```html theme={null}
01
02
03
```
## Best Practices
* Use `items-center` for balanced rails, headers, and button rows.
* Use `items-stretch` when every child should fill the shared cross-axis height.
* Reach for `self-*` only when one child needs to break away from the group rule.
## Related Utilities
Override one item without changing the whole row
Pair cross-axis and main-axis alignment together
# Align Self
Source: https://skelementorcss.com/flexbox/align-self
Use the shipped `self-*` utilities to override alignment for one flex item.
## Overview
Align self utilities let you override the container's `items-*` rule for a single child. Use them when one item needs a different vertical position than the rest of the row.
| Class | CSS |
| -------------- | ------------------------- |
| `.self-start` | `align-self: flex-start;` |
| `.self-center` | `align-self: center;` |
| `.self-end` | `align-self: flex-end;` |
Responsive `self-*--on-*` variants are also shipped.
## Self Start
`.self-start` pulls one item to the top of the cross axis while the rest of the row stays stretched or follows the container rule.
```html theme={null}
01
02
03
```
## Self Center
`.self-center` vertically centers one item within the row while siblings follow the container alignment.
```html theme={null}
01
02
03
```
## Self End
`.self-end` pushes one item to the bottom of the cross axis. This is useful for anchoring a specific element to the baseline of the container.
```html theme={null}
01
02
03
```
## Best Practices
* Keep `self-*` for targeted exceptions instead of setting the whole line differently.
* Use it on one item that needs a different visual anchor within the row.
* Keep the base container rule predictable with `items-*`, then layer `self-*` only where needed.
## Related Utilities
Set the shared cross-axis rule for the container
Reorder items when alignment alone is not enough
# Flex Direction
Source: https://skelementorcss.com/flexbox/direction
Control flex direction with row, column, and reverse direction utilities.
## Overview
Direction utilities control the main axis of a flex container. Add `.flex` first, then apply one of the direction helpers to the same parent.
| Class | CSS |
| ------------------- | --------------------------------- |
| `.flex-row` | `flex-direction: row;` |
| `.flex-col` | `flex-direction: column;` |
| `.flex-row-reverse` | `flex-direction: row-reverse;` |
| `.flex-col-reverse` | `flex-direction: column-reverse;` |
## Row
`.flex-row` lays items out horizontally from left to right. This is the default direction for flex containers and is useful for navigation bars, button groups, and inline card rows.
```html theme={null}
01
02
03
```
## Row Reverse
`.flex-row-reverse` reverses the horizontal direction so items flow from right to left. The DOM order stays the same but visual order flips. Use this when you need mirrored layouts without changing markup.
```html theme={null}
01
02
03
```
## Column
`.flex-col` stacks items vertically from top to bottom. This is the go-to direction for form fields, stacked card bodies, and sidebar navigation.
```html theme={null}
01
02
03
```
## Column Reverse
`.flex-col-reverse` stacks items from bottom to top. This is helpful for chat-style UIs or timeline patterns where the newest item should appear at the bottom of the markup but visually sit at the top.
```html theme={null}
01
02
03
```
## Responsive Structure
Use the responsive suffix system for structural shifts at specific breakpoints:
## Best Practices
* Add `.flex` first, then apply direction helpers to the same parent.
* Use `.flex-col` for stacked groups such as forms, settings panels, and button clusters.
* Use reverse helpers sparingly when visual order must change but markup stays fixed.
## Related Utilities
Start with the base flex container utility
Let directional rows wrap naturally when needed
# Flex
Source: https://skelementorcss.com/flexbox/flex
Start flex layouts with `.flex` and `.inline-flex` container utilities and their responsive variants.
## Overview
**`.flex`** and **`.inline-flex`** start a flex formatting context. Use **`.flex`** for full-width toolbars, sections, and grids; use **`.inline-flex`** when the container should sit **in inline flow** (chips, badges in copy, compact controls next to text). Add one of these on the parent before direction, wrap, gap, justify, or alignment helpers.
| Class | CSS | Use |
| -------------- | ----------------------- | ----------------------------------------------------------- |
| `.flex` | `display: flex;` | Block-level flex container (default choice for layouts) |
| `.inline-flex` | `display: inline-flex;` | Inline flex container (flows with text and sibling inlines) |
## Horizontal Layout
Adding `.flex` to a container lays its children out in a horizontal row by default.
```html theme={null}
Logo
Docs
Download
```
## Vertical Layout
Pair `.flex` with `.flex-col` to stack children vertically. This is useful for form groups, card bodies, and sidebar navigation.
```html theme={null}
Heading
Body
Button
```
## Inline flex
**`.inline-flex`** behaves like **`.flex`** for children (row by default, works with **`flex-col`**, **`gap-*`**, alignment utilities) but the **box** itself is **inline**, so it can sit beside text or other inline content without forcing a new block row.
```html theme={null}
Status:
Live
on all environments.
```
## Responsive Variants
The framework ships structural breakpoint variants for both display modes:
**`.flex--on-*`**
* `.flex--on-xs`
* `.flex--on-s`
* `.flex--on-m`
* `.flex--on-l`
* `.flex--on-xl`
* `.flex--on-xxl`
**`.inline-flex--on-*`**
* `.inline-flex--on-xs`
* `.inline-flex--on-s`
* `.inline-flex--on-m`
* `.inline-flex--on-l`
* `.inline-flex--on-xl`
* `.inline-flex--on-xxl`
## Best Practices
* Add **`.flex`** or **`.inline-flex`** at the **container** level, not on the children.
* Keep spacing with **`gap-*`** on the parent instead of margins on each child.
* Switch to responsive **`--on-*`** helpers when the layout should only become flex (or inline-flex) at certain breakpoints.
* Prefer **`.inline-flex`** over **`.flex`** when the flex container must share a line with text or stay as wide as its content in inline layout.
## Related Utilities
Block, inline-block, hidden, and other display modes
Initial main-axis size for flex items
# Flex Basis
Source: https://skelementorcss.com/flexbox/flex-basis
Set the initial main-axis size of flex items with bundled `basis-*` utilities before grow and shrink run.
## Overview
`flex-basis` is the size a flex item **starts from** on the main axis before **`flex-grow`** and **`flex-shrink`** adjust it. Use **`basis-*`** classes on **children** inside a **`.flex`** or **`.inline-flex`** parent when you want explicit starting widths (or heights in a column) instead of relying only on content or width utilities.
### Keywords and reset
| Class | CSS | Usage |
| ------------- | ------------------- | ----------------------------------------------------------------------- |
| `.basis-auto` | `flex-basis: auto;` | Use the item’s width/height (or content) as the starting size |
| `.basis-full` | `flex-basis: 100%;` | Start from the full main-axis size of the container |
| `.basis-0` | `flex-basis: 0px;` | Start from zero so **`flex-grow`** distributes space from a clean split |
| `.basis-px` | `flex-basis: 1px;` | Hairline flex lanes, dividers, or fixed slivers |
### Fractional basis
These mirror the fractional **width** scale ([Width](/sizing/width)) but apply as **`flex-basis`** on flex items.
| Class | Value | CSS | Usage |
| ------------ | ------- | ---------------------- | -------------------- |
| `.basis-1-2` | 50% | `flex-basis: 50%;` | Two-column splits |
| `.basis-1-3` | 33.333% | `flex-basis: 33.333%;` | Three-up layouts |
| `.basis-2-3` | 66.666% | `flex-basis: 66.666%;` | Wide primary column |
| `.basis-1-4` | 25% | `flex-basis: 25%;` | Narrow rails |
| `.basis-3-4` | 75% | `flex-basis: 75%;` | Content-heavy panels |
### Fractional basis preview
```html theme={null}
50%
50%
One third
Two thirds
Quarter
Three quarters
```
## Example
```html theme={null}
Main
```
```html theme={null}
Grows from zero
Sizes to content
```
## Responsive variants
Each **`basis-*`** utility ships with structural breakpoint suffixes:
* `.basis-auto--on-xs` … `.basis-full--on-xxl`
* `.basis-0--on-*`, `.basis-px--on-*`
* `.basis-1-2--on-*` through `.basis-3-4--on-*`
See [Breakpoints](/concepts/responsive-utilities) for the **`--on-*`** map.
## Best Practices
* Add **`.flex`** (or **`.inline-flex`**) on the **parent** first; **`basis-*`** applies to **items**, not the container.
* Pair **`.basis-0`** with **`.flex-grow`** when you want equal columns that ignore intrinsic content width.
* Prefer **`basis-*`** when the value should participate in the **flex** algorithm; use **`width-*`** when you need **width** regardless of flex context.
* Combine **`basis-*`** with **`flex-shrink`** when some lanes should collapse before others in tight viewports.
## Related Utilities
Block and inline flex containers
Absorb leftover space along the main axis
# Flex Grow
Source: https://skelementorcss.com/flexbox/flex-grow
Use the bundled `.flex-grow` utility to let selected items absorb remaining space.
## Overview
`.flex-grow` lets an item absorb leftover space in the flex container. Apply it to the item that should expand while its siblings stay at their natural or fixed widths.
| Class | CSS |
| ------------ | --------------- |
| `.flex-grow` | `flex-grow: 1;` |
## Single Grow Item
When only one item has `.flex-grow`, it absorbs all remaining space. This pattern works well for sidebar-plus-content layouts.
```html theme={null}
Content grows to fill the row.
```
## Multiple Grow Items
When two or more items share `.flex-grow`, they split the leftover space equally. This creates even-width columns without explicit width classes.
```html theme={null}
Main
Aside
```
## Best Practices
* Add `.flex-grow` only to the item that should absorb the leftover space.
* Pair it with fixed-width siblings when you want a stable rail + fluid content pattern.
* Combine with `.flex-shrink` decisions when dense layouts need controlled compression.
## Related Utilities
Set starting main-axis size before grow runs
Control how items contract in tight spaces
# Flex Shrink
Source: https://skelementorcss.com/flexbox/flex-shrink
Use the bundled `.flex-shrink` utility when selected items should contract in limited space.
## Overview
`.flex-shrink` controls whether an item compresses when there isn't enough space in the container. Use it to designate which items should give up width first.
| Class | CSS |
| -------------- | ----------------- |
| `.flex-shrink` | `flex-shrink: 1;` |
## Selective Shrink
Apply `.flex-shrink` to the item that should compress first while its siblings stay at their intended widths. Items without `flex-shrink` will resist compression.
```html theme={null}
Primary card
Pinned card
```
## Rail with Shared Shrink
When all items in a rail share `.flex-shrink`, they compress equally. This keeps the layout balanced when the container is narrow.
```html theme={null}
Card A
Card B
Card C
```
## Best Practices
* Use `.flex-shrink` when an item may safely compress before the container overflows.
* Keep critical controls or labels on non-shrinking siblings when width must stay stable.
* Combine with `.overflow-auto` on rails when compression alone is not enough.
## Related Utilities
Initial size before shrink factors apply
Let items expand when extra space exists
# Gap
Source: https://skelementorcss.com/flexbox/gap
Control flex spacing with the bundled `gap-*`, `gap-x-*`, and `gap-y-*` utilities.
## Overview
Gap adds space between flex items in the same container, so you do not need margins on every child to separate a row or wrapped grid. It only applies when the parent is a flex container (`display: flex`). Use `gap-*` when row and column spacing match, and `gap-x-*` / `gap-y-*` when they should differ; the table maps each suffix to rem/px.
For fluid `clamp()` and breakpoints, see [Fluid scaling](/concepts/fluid-scaling).
| Pattern | Value |
| ---------- | ---------------- |
| `gap-*-0` | `0` / `0px` |
| `gap-*-px` | `1px` |
| `gap-*-1` | `0.25rem / 4px` |
| `gap-*-2` | `0.5rem / 8px` |
| `gap-*-3` | `0.75rem / 12px` |
| `gap-*-4` | `1rem / 16px` |
| `gap-*-6` | `1.5rem / 24px` |
| `gap-*-8` | `2rem / 32px` |
| `gap-*-12` | `3rem / 48px` |
| `gap-*-14` | `3.5rem / 56px` |
In real classes, `*` is empty for both axes (`gap-4`), `x` for column gap only (`gap-x-8`), or `y` for row gap only (`gap-y-3`).
## Uniform Gap
`gap-*` applies the same spacing on both axes. This is the most common pattern for button groups, navigation rows, and simple card layouts.
```html theme={null}
Item 1
Item 2
Item 3
```
## Axis-Specific Gap
Use `gap-x-*` and `gap-y-*` when horizontal and vertical spacing need different values. This is useful for wrapped tag lists or grid-like card layouts where row spacing should be tighter than column spacing.
```html theme={null}
Design
Systems
Layout
Docs
```
## Large Gap
Larger gap values like `gap-14` create generous breathing room between items. Use these for feature grids and hero sections where visual separation matters.
```html theme={null}
Feature 1
Feature 2
Feature 3
```
## Gap vs Margin
### When to Use Gap
* Spacing between flex items
* Tag lists and button groups
* Card rows and wrapped content
* Navigation items
### When to Use Margin
* Space outside an element
* Section separation
* Alignment helpers like `margin-horizontal-auto`
* Negative spacing techniques
## Best Practices
* Use `gap-*` instead of margin for spacing between flex children.
* Use the same gap value across related components to keep rhythm consistent.
* Use `gap-x-*` and `gap-y-*` when wrapped rows need different horizontal and vertical spacing.
* Keep gap decisions in the container so child components stay reusable.
* Pair gap with `.flex-wrap` when rows may need to break naturally.
## Related Utilities
Control external spacing with margin utilities
Control internal spacing with padding utilities
# Justify Content
Source: https://skelementorcss.com/flexbox/justify-content
Use the shipped `justify-*` utilities to control main-axis distribution in flex layouts.
## Overview
Justify utilities control how flex items are distributed along the main axis. Use them to push items to the start, center, end, or spread them across the available space.
| Class | CSS |
| ------------------ | --------------------------------- |
| `.justify-start` | `justify-content: flex-start;` |
| `.justify-center` | `justify-content: center;` |
| `.justify-end` | `justify-content: flex-end;` |
| `.justify-between` | `justify-content: space-between;` |
| `.justify-around` | `justify-content: space-around;` |
| `.justify-evenly` | `justify-content: space-evenly;` |
Responsive `justify-*--on-*` variants are also bundled.
## Start
`.justify-start` packs items toward the start of the main axis. This is the default behavior for flex containers.
```html theme={null}
01
02
03
```
## Center
`.justify-center` groups items in the center of the container. This is commonly used for centered hero content, modal actions, and single-row centered navigation.
```html theme={null}
01
02
03
```
## End
`.justify-end` packs items toward the end of the main axis. Use this for right-aligned button groups and trailing actions.
```html theme={null}
01
02
03
```
## Between
`.justify-between` places the first item at the start and the last item at the end, with equal space between the rest. This is the go-to for header layouts with a logo on one side and navigation on the other. The live demo above shows that pattern; the snippet below uses three blocks so it matches the minimal style used in the other sections.
```html theme={null}
01
02
03
```
## Around
`.justify-around` distributes equal space around each item. The outer edges get half the space of the gaps between items.
```html theme={null}
01
02
03
```
## Evenly
`.justify-evenly` distributes perfectly equal space between all items and the container edges. Every gap is the same size.
```html theme={null}
01
02
03
```
## Best Practices
* Use justify helpers when the space should be distributed across the main axis.
* Pair with `items-*` when both axes need deliberate control.
* Keep `.gap-*` in the container when you still want fixed spacing between siblings.
## Related Utilities
Control the cross-axis for the full line
Keep consistent spacing while changing distribution
# Order
Source: https://skelementorcss.com/flexbox/order
Use the shipped order helpers to move selected flex items to the start or end of the line.
## Overview
Order utilities let you move individual flex items to the start or end of the visual line without changing DOM order. This is useful for responsive layouts where key content needs to appear first on smaller screens.
| Class | CSS |
| -------------- | ---------------- |
| `.order-first` | `order: -99999;` |
| `.order-last` | `order: 99999;` |
Responsive variants are also shipped as `order-first--on-*` and `order-last--on-*`.
## Order First
`.order-first` pulls an item to the very beginning of the flex line, regardless of its position in the HTML source.
```html theme={null}
01
02
03
04
```
## Order Last
`.order-last` pushes an item to the very end of the flex line. Combine with responsive variants to move items only at specific breakpoints.
```html theme={null}
01
02
03
04
```
## Best Practices
* Prefer semantic markup order first, then use order helpers for targeted visual adjustments.
* Use responsive order variants when the change only matters at one breakpoint.
* Keep reordered items obvious in complex layouts so they are still easy to reason about.
## Related Utilities
Reordering often pairs with wrapped layouts
Control distribution after the order changes
# Flex Wrap
Source: https://skelementorcss.com/flexbox/wrap
Control whether flex items stay on one line or wrap onto new rows.
## Overview
Wrap utilities decide whether flex items stay in a single row or flow onto additional lines. They are especially useful for card collections, tag lists, and horizontally scrollable rails.
| Class | CSS | Behavior |
| -------------------- | -------------------------- | -------------------------- |
| `.flex-nowrap` | `flex-wrap: nowrap;` | Keep items on one line |
| `.flex-wrap` | `flex-wrap: wrap;` | Let items move to new rows |
| `.flex-wrap-reverse` | `flex-wrap: wrap-reverse;` | Reverse row stacking |
## No Wrap
`.flex-nowrap` keeps all items on a single line. Items that overflow the container will scroll horizontally. This is ideal for carousels, horizontal rails, and compact navigation.
```html theme={null}
01
02
03
```
## Wrap
`.flex-wrap` lets items flow onto new rows when they run out of horizontal space. This is the most common wrap behavior for card grids, tag lists, and any dense row that should gracefully break.
```html theme={null}
01
02
03
```
## Wrap Reverse
`.flex-wrap-reverse` wraps items but reverses the stacking order of rows. New rows appear above instead of below. This is helpful when you want bottom-anchored content to push upward.
```html theme={null}
01
02
03
```
## Best Practices
* Use `.flex-wrap` for dense UI rows that should gracefully move onto another line.
* Use `.flex-nowrap` for carousels, rails, and compact navigation.
* Pair wrap behavior with `gap-*` so spacing stays consistent across rows.
* Use the responsive suffix system when wrapping should only change at specific breakpoints, such as `flex-wrap--on-m`.
## Related Utilities
Start with the base flex container utility
Control row and column flow
# FAQ
Source: https://skelementorcss.com/getting-started/faq
Frequently asked questions about Skelementor
## General Questions
**No.** Re-importing the same classes will cause errors. Each class can only be imported **once**. If you need to update a class:
1. Delete it from Elementor's Global Classes panel
2. Re-import the updated CSS
Skelementor does **not** patch Elementor core files. Deactivating the plugin does not remove imported Elementor classes or variables automatically; those remain in Elementor until you delete them.
**Works with both** Elementor Free and Pro, as long as you have v4+ with the Atomic Editor enabled (on by default for new Elementor installs).
## Import Questions
Elementor supports up to **1000 global classes** natively. The built-in **Skelementor Preset** imports **976** classes for Elementor’s default desktop, tablet, and mobile breakpoints, so it stays inside that limit.
The shipped plugin workflow starts with the built-in preset. If you are debugging a reduced custom sample, smaller batches can still help isolate failures faster.
**Try these solutions:**
* Import in smaller batches
* Check for CSS syntax errors (missing units, semicolons)
* Ensure you're not re-importing existing classes
* See our [troubleshooting guide](/getting-started/common-errors)
## Performance Questions
**No.** Global classes are native Elementor features. Skelementor only helps import them, and it doesn't add frontend overhead.
**No.** Skelementor uses Elementor's built-in Global Classes system, so there's no performance impact.
## Compatibility Questions
**Elementor v4.** The **Atomic Editor** (Atomic Elements, Classes, Variables) is stable in 4.x and ships with the normal Elementor plugin. New Elementor installations enable Atomic features by default. If you upgraded from an older setup or turned Atomic off, enable **Atomic Editor** under **Elementor → Editor → Settings** in WordPress admin.
**WordPress 6.9 or higher** is required. 6.9+
**PHP 7.4 or higher** is required. PHP 8.0+ is recommended for better performance. 7.4+
## Usage Questions
**Yes, on atomic elements.** You can use utility classes on:
* Headings (h1-h6)
* Paragraphs
* Div Blocks
* Buttons
* Links
* Images
* Containers
Select an atomic element in the Elementor editor.
Go to the **Advanced** tab in the element settings.
Add classes to the **CSS Classes** field.
See instant results in the editor preview.
**Yes!** You can combine multiple classes for complex designs, such as pairing flex layout, spacing, borders, and button presets on the same Elementor block.
## Customization Questions
**Yes.** To modify an existing class:
1. Delete it from Elementor's Global Classes panel
2. Create your modified version
3. Re-import through Skelementor
Use the bundled `skelementor-utilities.css` file as the reference artifact for the shipped framework. The stable built-in import path in the plugin is the **Skelementor Preset**.
**Most common CSS properties** are supported including:
* Typography (font-size, font-weight, etc.)
* Spacing (margin, padding, gap)
* Layout (display, flexbox, positioning)
* Colors (color, background-color, border-color)
* Borders (width, style, radius)
* Sizing (width, height, max-width)
## Troubleshooting Questions
**Check these:**
* Ensure Elementor **v4** with Atomic Editor enabled
* Verify classes were imported successfully
* Clear Elementor cache: **Elementor → Tools → Regenerate CSS**
* Check that you're using atomic elements
**Try these solutions:**
* Import in smaller batches (20-30 classes)
* Check CSS syntax for errors
* Ensure you're not re-importing existing classes
* Use the nuclear reset method (delete all classes, re-import)
That can be **completely normal**. On Elementor **4.1**, global classes are stored as `e_global_class` posts, while the kit tracks labels, order, and class-to-post mappings in:
* `_elementor_global_classes_labels`
* `_elementor_global_classes_labels_preview`
* `_elementor_global_classes_order`
* `_elementor_global_classes_order_preview`
* `_elementor_global_classes_post_ids`
Skelementor uses internal IDs with the `sk-class-*` prefix, while the visible label in Elementor stays clean, such as `text-2xs`.
## Related Guides
Troubleshooting specific errors
Get help from the Skelementor support team
# Installation
Source: https://skelementorcss.com/getting-started/installation
Installation and environment checklist for the Skelementor plugin.
## System Requirements
### Minimum Requirements
| Requirement | Minimum | Notes |
| ------------- | -------------------- | ---------------------------------------------- |
| **WordPress** | 6.9+ | Multisite supported |
| **PHP** | 7.4+ | 128MB memory recommended |
| **Elementor** | 4.0+ (Atomic Editor) | Atomic features on by default for new installs |
| **MySQL** | 5.6+ | MariaDB 10.1+ also supported |
### Recommended Requirements
* **WordPress:** **6.9+** (latest **6.9.x** recommended)
* **PHP:** 8.0 or higher
* **Memory:** 256MB or higher
* **Elementor:** Current **4.x** with Atomic Editor enabled (default for new Elementor installations)
* **Variables:** Enabled if you plan to import design tokens
## Installation Methods
Choose the option that fits your deployment workflow.
### Method 1: WordPress Admin Upload
Download the [Skelementor plugin package](https://d3o9gc3hm4a6ya.cloudfront.net/css-utility-importer.zip) (.zip).
In WordPress admin, go to **Plugins -> Add New** and click **Upload Plugin**.
Select the ZIP file and click **Install Now**.
Activate the plugin after WordPress finishes installing it.
### Method 2: FTP Upload
Extract the plugin archive on your local machine.
Use your preferred FTP or SFTP client to connect to the WordPress host.
Upload the extracted `skelementor-v4` directory to `/wp-content/plugins/`.
Open **Plugins** in WordPress admin and activate Skelementor.
### Method 3: WP-CLI
If you manage the site with WP-CLI, install from the hosted ZIP or a local copy:
```bash theme={null}
wp plugin install https://d3o9gc3hm4a6ya.cloudfront.net/css-utility-importer.zip --activate
wp plugin install /path/to/css-utility-importer.zip --activate
```
## Pre-Installation Checklist
Before installing Skelementor, verify these points:
Confirm the site is on **WordPress 6.9+** (latest **6.9.x** recommended) via **Dashboard → Updates** or **Tools → Site Health**.
Use **Elementor v4** from the standard plugin release. The **Atomic Editor** is stable; new Elementor installs enable Atomic features by default. Upgraded or legacy sites may need **Atomic Editor** enabled under **Elementor → Editor → Settings**.
Confirm **Elementor v4** is active in **Elementor → System Info**.
In **Elementor → Editor → Settings**, ensure **Atomic Editor** is on (or use Elementor’s prompt in the editor).
Turn on Variables if your import workflow includes reusable design tokens.
Confirm PHP version, available memory, and file permissions are sufficient for plugin installation and larger imports.
## Post-Installation Setup
### 1. Verify Installation
Check **Plugins** in WordPress admin and make sure Skelementor is active.
Find the Skelementor admin screen and confirm the CSS import interface loads.
Verify Elementor still loads normally and the Atomic Editor is available.
### 2. Import the Starter Framework
Open the Skelementor admin screen after activation.
Click **Import Skelementor Preset** to load the built-in default-breakpoints package.
Confirm the imported classes appear in Elementor's class management UI.
The Skelementor Preset imports **976 classes** for Elementor’s default desktop, tablet, and mobile breakpoints. It stays within Elementor’s native **1000 global class** limit, so no core-file patching is required.
### 3. Test in Elementor
Edit a page or post with Elementor.
Add a Heading, Text, or Div Block to the canvas.
Assign a simple class like `text-2xl` or `flex` to verify the import worked.
Make sure the styling appears correctly in the editor preview.
## Troubleshooting Installation
Common causes include low PHP memory, permission issues, or a damaged upload package. Re-upload the ZIP and review server logs if activation fails again.
If Skelementor warns about Elementor, update to **Elementor v4** and confirm **Atomic Editor** is enabled before retrying.
Review PHP memory limits, filesystem permissions, and any web server error logs if imports or activation trigger 500 errors.
### Getting Help
Troubleshoot import failures and class conflicts.
See what information to gather before contacting Skelementor support.
Review the most common setup and usage questions.
Report bugs or request features on GitHub.
## Next Steps
**Installation complete:** Continue with the [quickstart guide](/quickstart) to run your first import.
Import your first utility classes.
Review the utility surface area before importing larger class sets.
# Importing Classes & Variables
Source: https://skelementorcss.com/getting-started/quickstart
Detailed import guide for bringing the Skelementor Preset into Elementor v4.
## Import In 3 Steps
This is the longer import workflow for teams that want more setup detail before bringing classes and variables into Elementor.
### Step 1: Install the Plugin
Download the [Skelementor plugin package](https://d3o9gc3hm4a6ya.cloudfront.net/css-utility-importer.zip) (.zip).
In WordPress admin, go to **Plugins -> Add New -> Upload Plugin** and select the ZIP file.
Activate the plugin after installation completes.
Make sure your environment has WordPress **6.9+**, PHP 7.4+, and Elementor **v4** with the Atomic Editor enabled.
If you plan to import design tokens, enable Elementor Variables too.
### Step 2: Import Your First CSS
Start with the built-in **Skelementor Preset** so you can verify the shipped workflow first.
Open the Skelementor import screen from the WordPress dashboard.
Click **Import Skelementor Preset**.
Wait for the confirmation state, then check the imported classes inside Elementor.
The Skelementor Preset imports **976 classes** for Elementor’s default desktop, tablet, and mobile breakpoints, and stays within Elementor’s native **1000-class** limit.
The bundled `skelementor-utilities.css` file remains useful as a reference artifact when you want to inspect the shipped class definitions or understand how the framework is generated.
### Step 3: Use Classes in Elementor
After import, utility classes are ready to use on Elementor v4 atomic elements.
Edit any page or post with Elementor.
Add a Heading, Text, Div Block, Button, or another supported v4 element.
Add utility classes in Elementor's class field for that element.
Confirm the imported styles render as expected in the editor preview.
## What Happens Next?
Browse the complete framework and decide what to keep or customize.
Learn which bundled families scale smoothly without extra breakpoint layers.
Use `--on-*` suffixes when the change is structural instead of proportional.
## Common Issues
**Important:** Avoid importing the same classes repeatedly without cleaning up or replacing the earlier set.
### Classes Not Working?
* Check that Elementor **v4** and the Atomic Editor are enabled.
* Verify the import completed successfully in the Skelementor admin screen.
* Clear Elementor cache through **Elementor -> Tools -> Regenerate CSS**.
### Import Errors?
* Reduce batch size to isolate the failing classes.
* Check for missing semicolons, unsupported values, or reserved class names.
* Confirm you are not importing duplicates that already exist.
### Need Help?
* Start with the [troubleshooting guide](/getting-started/common-errors)
* Browse the [FAQ](/getting-started/faq)
* Review the [support page](/getting-started/support)
**Success:** Once your first import works, continue with [Framework categories on the Quickstart page](/quickstart#framework-categories) to see what else is available.
# Introduction
Source: https://skelementorcss.com/index
SkelementorCSS is a CSS utility framework for Elementor—importable classes and design tokens that land in Elementor’s native systems.
[Watch on YouTube](https://youtu.be/KMA-bsBlQ-Y?si=klOgFOKQIhjyRQbr)
## SkelementorCSS
**SkelementorCSS** is the CSS side of Skelementor: a utility framework designed for **Elementor v4**. You work from a coherent catalog of small, single-purpose classes—typography, layout, spacing, color, borders, effects, flexbox, and ready-made component patterns—so layouts stay consistent and fast to iterate in the editor.
Instead of hand-writing one-off rules for every block, you **compose** utilities directly on atomic elements. Many families ship with **responsive behavior built into the class names** (for example fluid type and spacing), so you spend less time managing breakpoints manually.
## How it connects to Elementor
Skelementor is a WordPress plugin that imports classes and tokens into Elementor’s native **Global Classes** and **Variables** systems. That means utilities and tokens live where Elementor expects them, with no core-file patching required.
**Elementor v4** ships the **Atomic Editor** as the stable experience; new Elementor installs enable **Atomic Elements** by default. The built-in **Skelementor Preset** imports **976 classes** for Elementor’s default desktop, tablet, and mobile breakpoints.
## What you can do with it
* **Move faster in the editor** — Apply `flex`, `gap-4`, `text-2xl`, `button-primary`, `card`, and hundreds of other helpers without leaving Elementor’s UI.
* **Keep design decisions repeatable** — Shared scales for spacing, type, and color reduce one-off magic numbers.
* **Start from the shipped preset** — Import the Skelementor Preset first, then build from a known-good baseline inside Elementor’s native systems.
* **Stay organized at scale** — Split large sets into manageable imports and validate behavior before you commit to a full design system.
## What ships in the box
The built-in **Skelementor Preset** adds **976 classes** for Elementor’s default responsive breakpoints. The bundled source CSS remains available as a reference artifact when you want to inspect the framework.
## Concepts
Size, weight, leading, alignment, tracking, and text treatments aligned to one scale.
Display, positioning, overflow, object fit, aspect ratio, and z-index utilities.
Margin, padding, and gap built on a shared spacing rhythm.
Width, height, and max-width helpers for common breakpoints and fractions.
Semantic text, background, and border colors tied to bundled tokens.
Opacity and box-shadow helpers for hierarchy, depth, and emphasis.
Blur, contrast, saturation, hue, and color-effect adjustments for media and art.
Border width, style, radius, and color utilities for framing and separation.
Bundled component presets starting with the shipped button families.
The `--on-*` suffix system for responsive structural utilities.
How `clamp()`-based scaling works, why it matters, and which families ship fluid scaling.
CSS custom properties, bundled tokens such as `var(--border-*)`, and Elementor Variables.
## Start here
Install the plugin, import the Skelementor Preset, learn how categories fit together, and apply your first classes in Elementor.
# Aspect Ratio
Source: https://skelementorcss.com/layout/aspect-ratio
Keep media frames consistent with the bundled aspect-ratio utilities.
## Overview
Use aspect ratio utilities when the shape of the frame matters more than the media inside it. The framework ships **`aspect-square`**, **`aspect-video`**, and **`aspect-auto`** (reset), with responsive **`--on-*`** variants where structural utilities support them.
| Class | Ratio | CSS | Usage |
| ---------------- | ----- | ----------------------- | ------------------------------------------------------------ |
| `.aspect-square` | 1:1 | `aspect-ratio: 1 / 1;` | Square frames |
| `.aspect-video` | 16:9 | `aspect-ratio: 16 / 9;` | Video and hero media |
| `.aspect-auto` | — | `aspect-ratio: auto;` | Remove a fixed ratio; use intrinsic or content-driven sizing |
## Example
## Best Practices
Aspect ratio controls shape, but width still determines the overall size.
Use `.object-cover` or `.object-contain` to decide how media behaves inside the frame.
Avatars, product tiles, and thumbnail systems often benefit from `aspect-square`.
`aspect-video` works well for hero media, embeds, and featured content.
## Related Utilities
Control how images fit in containers
Control clipping and scrolling
# Display
Source: https://skelementorcss.com/layout/display
Control how elements participate in layout with the bundled display utilities.
## Overview
Display utilities control how elements render in layout. They are the starting point for most framework composition: block flow, inline layout, flex layout, and visibility toggles.
| Class | CSS | Usage |
| --------------- | ------------------------ | ---------------------------- |
| `.block` | `display: block;` | Full-width block element |
| `.inline-block` | `display: inline-block;` | Inline with box-model sizing |
| `.flex` | `display: flex;` | Flex container |
| `.inline-flex` | `display: inline-flex;` | Inline flex container |
| `.hidden` | `display: none;` | Remove from layout |
## Block
`.block` makes an element start on a new line and fill the full width of its parent. This is the default for divs and section elements.
```html theme={null}
This is a block element
```
## Inline and Inline Block
`.inline-block` gives an element inline flow (it sits alongside text) but lets you control width, height, padding, and margin like a block. Use it for badges, buttons, and compact UI controls.
```html theme={null}
```
## Flex
`.flex` turns an element into a flex container, laying children out in a horizontal row by default. This is the foundation for most modern layout composition.
```html theme={null}
Item 1
Item 2
Item 3
```
## Inline Flex
`.inline-flex` creates a flex container that participates in inline flow. The container sizes to its content and sits alongside surrounding text. Use it for inline tag groups and compact controls.
```html theme={null}
Icon
Label
```
## Hidden
`.hidden` removes an element from layout entirely. It will not be visible or take up space.
The `.hidden` utility removes the element from layout and accessibility trees. Use it intentionally.
## Best Practices
Prefer `.flex` for modern horizontal and vertical layout composition.
Reach for `.block` when the element should start on a new line and fill the row.
Badges, buttons, and compact controls often benefit from inline formatting with layout control.
Display classes also support the bundled `--on-*` suffix pattern when layout behavior needs to change by viewport.
## Related Utilities
Complete flexbox utilities for layouts
Margin, padding, and gap utilities
# Object Fit
Source: https://skelementorcss.com/layout/object-fit
Control how images and video media fit inside fixed frames.
## Overview
Use object-fit utilities on images or videos once the container has a known frame. The bundled set matches Tailwind-style naming: **`object-contain`**, **`object-cover`**, **`object-fill`**, **`object-none`**, and **`object-scale-down`**, with responsive **`--on-*`** variants where structural utilities support them.
| Class | CSS | Usage |
| -------------------- | ------------------------- | ------------------------------------------------------------ |
| `.object-contain` | `object-fit: contain;` | Scale to fit inside the frame; whole asset visible |
| `.object-cover` | `object-fit: cover;` | Fill the frame; crop if aspect ratios differ |
| `.object-fill` | `object-fit: fill;` | Stretch to fill width and height (may distort) |
| `.object-none` | `object-fit: none;` | Ignore the box; use intrinsic size (often with width/height) |
| `.object-scale-down` | `object-fit: scale-down;` | Like `contain` or `none`, whichever yields a smaller size |
## Object Cover
Use `.object-cover` when the frame matters more than seeing every edge of the image. The image fills the entire container and crops anything that doesn't fit.
```html theme={null}
```
## Object Contain
Use `.object-contain` when the whole image or logo needs to stay visible. The image scales to fit inside the container without cropping.
```html theme={null}
```
## Fill and Scale Down
**`.object-fill`** stretches the media to the full width and height of the box. **`.object-scale-down`** never upscales past the intrinsic size; it behaves like **`contain`** or **`none`**, whichever results in a smaller rendered size.
### Object none
**`.object-none`** keeps the replaced element’s default object sizing. Pair it with explicit **`width`**, **`height`**, or max dimensions when you need precise control.
## Best Practices
Object-fit only matters once the container has a known width, height, or aspect ratio.
Card art, hero media, and gallery crops usually work best with `.object-cover`.
Logos and product images often need `.object-contain` so nothing important gets cropped.
Cropped media looks cleaner when the container clips the edges.
## Related Utilities
Control container proportions
Control clipping and scrolling
# Overflow
Source: https://skelementorcss.com/layout/overflow
Control clipping and scrolling with the bundled overflow utilities.
## Overview
Use overflow utilities when content needs to be clipped, scrollable, or explicitly allowed to spill outside its frame. The bundle ships **`overflow-hidden`**, **`overflow-auto`**, and **`overflow-visible`**, each with responsive **`--on-*`** suffix variants like other structural utilities (see [Breakpoints](/concepts/responsive-utilities)).
| Class | CSS | Usage |
| ------------------- | -------------------- | ------------------------------------------------------------- |
| `.overflow-hidden` | `overflow: hidden;` | Clip overflowing content |
| `.overflow-auto` | `overflow: auto;` | Scroll only when needed |
| `.overflow-visible` | `overflow: visible;` | Let content extend past the box; reset clipping from a parent |
## Overflow Visible
Without an overflow class, browsers use **`overflow: visible`** by default. Use **`.overflow-visible`** when you need to **name** that behavior—typically to override an ancestor’s **`overflow-hidden`** or to make overflow explicit in the class list. The demo below illustrates visible overflow; in real markup, apply **`.overflow-visible`** on the element you want to unclip.
## Overflow Hidden
`.overflow-hidden` clips any content that extends beyond the container boundaries. The clipped content is not accessible via scrolling.
```html theme={null}
This content might overflow the container and will be hidden if it does.
```
## Overflow Auto
`.overflow-auto` adds scrollbars only when content overflows. This keeps content reachable without cluttering the UI with unnecessary scrollbars.
```html theme={null}
This content will show scrollbars when it overflows the container.
```
## Best Practices
`overflow-hidden` is ideal for rounded media cards, avatars, and framed layouts.
`overflow-auto` keeps content reachable without forcing scrollbars when they are not needed.
Overflow only becomes visible when the element has constrained size through height, width, or aspect ratio.
Overflow and object-fit work especially well together for media-heavy layouts.
When a parent uses `overflow-hidden` but a child must escape the clip (for example a dropdown or tooltip), `overflow-visible` on the right ancestor restores visible overflow.
## Related Utilities
Display utilities for container behavior
Control how images fit in containers
# Positioning
Source: https://skelementorcss.com/layout/positioning
Control positioning modes with the bundled `static`, `relative`, `absolute`, `fixed`, and `sticky` utilities.
## Overview
The framework ships positioning modes, not a full offset utility system. Use the position classes to establish layout behavior, then add offsets with custom CSS or inline styles when a design needs exact placement.
| Class | CSS | Usage |
| ----------- | --------------------- | ----------------------- |
| `.static` | `position: static;` | Default document flow |
| `.relative` | `position: relative;` | Anchor child overlays |
| `.absolute` | `position: absolute;` | Remove from normal flow |
| `.fixed` | `position: fixed;` | Lock to the viewport |
| `.sticky` | `position: sticky;` | Stick while scrolling |
## Relative and Absolute
`.relative` on a parent creates a positioning context. `.absolute` on a child removes it from normal flow and positions it relative to that parent. This is the core pattern for overlays, badges, and pinned elements.
```html theme={null}
Top right
Bottom left
```
## Sticky
`.sticky` keeps an element in normal flow until the user scrolls past a threshold, then pins it. This is useful for section headers, sidebar navigation, and toolbar strips.
```html theme={null}
Sticky header
Item 1
Item 2
Item 3
```
## Fixed
`.fixed` locks an element to the viewport. It stays in place regardless of scrolling. Use it for sticky headers, floating action buttons, and modal backdrops.
## Z-Index
For the full layering scale and stacking examples, see the Z-Index page.
## Best Practices
Use `static` for normal flow, `relative` for anchoring, `absolute` for overlays, `fixed` for viewport-level UI, and `sticky` for scroll-aware sections.
Since the bundle does not ship `top-*`, `left-*`, `right-*`, `bottom-*`, or `inset-*`, add exact offsets with custom CSS when needed.
Layered interfaces usually need both positioning and z-index utilities.
These patterns are easy to overuse and can become awkward on smaller screens.
## Related Utilities
Control stacking order of positioned elements
Display utilities for positioning patterns
# Z-Index
Source: https://skelementorcss.com/layout/z-index
Control stacking order with the bundled z-index scale.
## Overview
Use `z-*` utilities to keep stacking order predictable without inventing one-off values.
Z-index utilities control which positioned elements sit above others. Higher values paint in front. The bundle ships **`z-0`** through **`z-100`** in **steps of 10** so teams can reserve bands for base content, chrome, overlays, and top-most UI without one-off numbers.
| Class | Value | CSS | Usage |
| -------- | ----- | --------------- | ----------------------------------------- |
| `.z-0` | 0 | `z-index: 0;` | Base stacking within a context |
| `.z-10` | 10 | `z-index: 10;` | Low overlays, scrims, local stacking |
| `.z-20` | 20 | `z-index: 20;` | Content above low overlays |
| `.z-30` | 30 | `z-index: 30;` | Mid-stack UI |
| `.z-40` | 40 | `z-index: 40;` | Elevated panels and popovers |
| `.z-50` | 50 | `z-index: 50;` | Dropdowns, modals, high-priority overlays |
| `.z-60` | 60 | `z-index: 60;` | Above standard modal surfaces |
| `.z-70` | 70 | `z-index: 70;` | Reserved for nested layering |
| `.z-80` | 80 | `z-index: 80;` | Strong emphasis layers |
| `.z-90` | 90 | `z-index: 90;` | Near-top system UI |
| `.z-100` | 100 | `z-index: 100;` | Toasts, tooltips, maximum shipped layer |
## Scale Visualization
Higher z-index values render in front of lower ones. Each circle below overlaps the previous one because of its higher `z-index`.
**Elementor limitation:** Imported **`z-*`** classes only behave reliably when the target element also has **non-**`static` **positioning**—for example **`.relative`**, **`.absolute`**, **`.fixed`**, or **`.sticky`**—on the **same** node you expect to stack. Elementor is set up so **`z-*` must be paired with a position class**; `z-index` alone on `position: static` will not do what you want. That aligns with CSS (`z-index` affects positioned boxes), but the practical rule in Elementor is: **always ship `z-*` together with a position utility.**
In Elementor v4, **`elementor-element`** wrappers for atomic elements often already include **`position: relative`** from the editor, which can satisfy that requirement for descendants. If **`z-*`** seems ignored, add **`relative`** (or another non-static position from the bundle) on the element that should establish or join the stacking context.
## Stacked Cards
A common pattern where cards overlap at increasing z-index values, creating a layered stack effect.
```html theme={null}
Base card
Middle card
Top card
```
## Overlay Pattern
A background image with a semi-transparent backdrop at `z-10` and content above at `z-20`. This is the foundation for hero sections, modals, and lightboxes.
```html theme={null}
Overlay Text
```
## Best Practices
Use the bundled steps from `z-0` to `z-100` (increments of 10) instead of inventing arbitrary values.
Decide which surfaces are base content, overlays, or modal-level UI before assigning classes.
Z-index only works as intended when the element is also positioned.
Deeply nested positioned elements can make layering hard to reason about.
## Related Utilities
Position utilities for z-index to work
Display utilities for layout control
# Prerequisite
Source: https://skelementorcss.com/plugin/prerequisite
Environment and readiness checklist before installing the Skelementor plugin.
## Before You Install
Use this page to confirm the site, Elementor setup, and import workflow are ready before you install Skelementor.
## Minimum Requirements
| Requirement | Minimum | Notes |
| ------------- | -------------------- | ------------------------------------------------------------------------------------------------------ |
| **WordPress** | 6.9+ | Multisite supported |
| **PHP** | 7.4+ | 128MB memory recommended |
| **Elementor** | 4.0+ (Atomic Editor) | Atomic Elements on by default for new installs; enable Atomic Editor manually on older sites if needed |
| **MySQL** | 5.6+ | MariaDB 10.1+ also supported |
## Recommended Setup
* **WordPress:** **6.9+** (keep the site on the latest **6.9.x** release via **Dashboard → Updates**)
* **PHP:** 8.0 or higher
* **Memory:** 256MB or higher
* **Elementor:** Current **4.x** (Atomic Editor is **stable** and ships with the main Elementor plugin). New Elementor installations enable Atomic features by default; upgraded or legacy setups may need **Atomic Editor** turned on under **WordPress Admin → Elementor → Editor → Settings**.
* **Variables:** Enabled if you plan to import design tokens
## Pre-Installation Checklist
Confirm the site is on **WordPress 6.9+** (latest **6.9.x** recommended) from **Dashboard → Updates** or **Tools → Site Health**.
Skelementor targets **Elementor v4**, where the **Atomic Editor** (Atomic Elements, Classes, Variables) is the stable foundation—not a separate beta track. New Elementor installs enable Atomic features by default; if your site was created earlier or Atomic was disabled, turn **Atomic Editor** on before importing.
In WordPress admin, open **Elementor → System Info** and confirm **Elementor v4** is active (install or update from the [Elementor plugin page](https://wordpress.org/plugins/elementor/) if needed).
Go to **Elementor → Editor → Settings** and ensure **Atomic Editor** is enabled, or follow Elementor’s in-editor notice when Atomic is available but off.
Turn on Variables if your import workflow includes reusable design tokens.
Confirm PHP version, available memory, and file permissions are sufficient for plugin installation and larger imports.
## What You Should Have Ready
* the latest Skelementor plugin ZIP
* access to WordPress admin
* Elementor **v4** with Atomic Editor enabled (default on new installs)
* the built-in **Skelementor Preset** for the stable import path
Skelementor’s built-in preset imports **976** classes for Elementor’s default responsive breakpoints and does not patch Elementor core files.
## Next Steps
Install the plugin and verify the environment.
Run the first import once the plugin is active.
Review the first triage steps if setup or import issues appear.
Browse the bundled utility framework before larger imports.
# Quickstart
Source: https://skelementorcss.com/quickstart
Install Skelementor, import the Skelementor Preset, learn how utilities are organized, and apply classes in Elementor.
## Get Started in 3 Steps
Use this page when you want the fastest route from installing Skelementor to working classes inside Elementor.
Need the longer walkthrough? Open the full import guide.
### Step 1: Install the Plugin
Download, upload, and activate the Skelementor ZIP in WordPress. Use the
full [installation guide](/getting-started/installation) if you need the
detailed requirements, upload methods, or troubleshooting steps.
**Requirements:** WordPress **6.9+**, PHP 7.4+, and Elementor **v4** with the Atomic Editor enabled.
### Step 2: Import Your First CSS
Use the built-in **Skelementor Preset** for the standard first import. It
adds **976 classes** for Elementor’s default desktop, tablet, and mobile
breakpoints while staying within Elementor’s native **1000-class** limit.
### Step 3: Use Classes in Elementor
Open any page with Elementor, add an atomic element, and assign imported
utility classes in the class field to confirm the styles render correctly.
## One Framework
Skelementor ships one stable built-in import path for day-one setup: the **Skelementor Preset**. It adds **976 classes** for Elementor’s default desktop, tablet, and mobile breakpoints.
The bundled `skelementor-utilities.css` file remains the source artifact for reference, inspection, and regeneration workflows. Where a class family uses responsive `clamp()` values (for example **`text-*`**), that behavior is built in and does not need a separate naming layer. **`leading-*`** uses fixed pixel `line-height` in the bundle, not `clamp()`.
## Framework Categories
Responsive `text-*` scale, fixed pixel `leading-*`, weights, tracking, alignment, and text styling.
Display, overflow, object-fit, aspect-ratio, positioning, z-index, and responsive structural suffixes.
Margin, padding, and gap utilities built around the bundled spacing tokens.
Fractional widths, screen-height helpers, and responsive max-width utilities.
Text, background, and border color helpers aligned with the bundled tokens.
Border widths, styles, radius utilities, and the shipped border color set.
Full opacity scale for layering, disabled states, and visual depth.
Blur, brightness, contrast, saturation, and color-shift utilities.
Direction, wrap, alignment, order, grow/shrink, gap, and responsive structural variants.
Preset button classes and the broader component patterns they support.
The shipped `--on-*` suffix system for structural classes at each breakpoint.
How `clamp()`-based scaling works across bundled typography and spacing families.
CSS custom properties, bundled tokens, and how variables fit into imports.
## Related Guides
Full installation methods, requirements, and setup checks.
Detailed class and variable import walkthrough.
# Height
Source: https://skelementorcss.com/sizing/height
Control height with size, fraction, and keyword height utilities.
## Overview
Height utilities cover fixed size steps, fractions, and keyword heights in one suffix system.
| Pattern | Supported values |
| ------------------- | ------------------------------------------------------------------------------------ |
| `height-` | `3xs`, `2xs`, `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl`, `5xl`, `6xl`, `7xl` |
| `height-` | `1-2`, `1-3`, `2-3`, `1-4`, `3-4` |
| `height-` | `px`, `auto`, `full`, `screen` |
## Examples
### Using the size scale
Use the t-shirt height scale when you want a predictable fixed height for media blocks, panels, and feature shells.
```html theme={null}
height-xl
```
| Pattern | Supported classes | What it controls |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| `height-` | `height-3xs`, `height-2xs`, `height-xs`, `height-sm`, `height-md`, `height-lg`, `height-xl`, `height-2xl`, `height-3xl`, `height-4xl`, `height-5xl`, `height-6xl`, `height-7xl` | Fixed heights based on the size ladder |
### Using a percentage
Use fractional height utilities when height should be relative to a parent container instead of fixed to the t-shirt scale.
```html theme={null}
height-1-3
height-2-3
```
| Pattern | Supported classes | What it controls |
| ------------------- | -------------------------------------------------------------------- | ------------------------------------ |
| `height-` | `height-1-2`, `height-1-3`, `height-2-3`, `height-1-4`, `height-3-4` | Height as a percentage of the parent |
### Filling the available height
Use `height-full` when an element should stretch to match the height of a parent that already defines its own height.
```html theme={null}
height-full
```
| Pattern | Supported classes | What it controls |
| ------------- | ----------------- | --------------------------------- |
| `height-full` | `height-full` | Fills the available parent height |
### Matching the viewport
Use `height-screen` when a page shell, hero, or empty-state layout should match the viewport height.
```html theme={null}
height-screen
```
| Pattern | Supported classes | What it controls |
| --------------- | ----------------- | --------------------------- |
| `height-screen` | `height-screen` | Matches the viewport height |
### Resetting the height
Use `height-auto` when height should fall back to the content instead of staying fixed or inherited from another rule.
```html theme={null}
height-auto
```
| Pattern | Supported classes | What it controls |
| ------------- | ----------------- | ---------------------------------------------- |
| `height-auto` | `height-auto` | Sizes to content or surrounding layout context |
## Best Practices
* Use `height-full` only when a parent already establishes height.
* Use `height-screen` for full-view shells, splash sections, and empty states.
* Use `height-` when the layout itself defines the parent height.
* Use `height-auto` to remove a fixed height and let content determine the block size.
## Related Utilities
Control element width
Use matching minimum-height helpers
# Max Height
Source: https://skelementorcss.com/sizing/max-height
Control maximum height with size, fraction, and keyword max-height utilities.
## Overview
Max-height utilities cap height with the same suffix families used by height and min-height.
| Pattern | Supported values |
| --------------------------- | ------------------------------------------------------------------------------------ |
| `maximum-height-` | `3xs`, `2xs`, `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl`, `5xl`, `6xl`, `7xl` |
| `maximum-height-` | `1-2`, `1-3`, `2-3`, `1-4`, `3-4` |
| `maximum-height-` | `px`, `auto`, `full`, `screen` |
## Examples
### Using the size scale
Use the t-shirt scale when a surface should stop growing after it reaches a predictable vertical rhythm.
```html theme={null}
maximum-height-xl
```
| Pattern | Supported classes | What it controls |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| `maximum-height-` | `maximum-height-3xs`, `maximum-height-2xs`, `maximum-height-xs`, `maximum-height-sm`, `maximum-height-md`, `maximum-height-lg`, `maximum-height-xl`, `maximum-height-2xl`, `maximum-height-3xl`, `maximum-height-4xl`, `maximum-height-5xl`, `maximum-height-6xl`, `maximum-height-7xl` | Maximum heights based on the size ladder |
### Using a percentage
Use fractional max-height utilities when a child should stay fluid but stop growing beyond a percentage of the parent height.
```html theme={null}
maximum-height-1-2
```
| Pattern | Supported classes | What it controls |
| --------------------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
| `maximum-height-` | `maximum-height-1-2`, `maximum-height-1-3`, `maximum-height-2-3`, `maximum-height-1-4`, `maximum-height-3-4` | Maximum height as a percentage of the parent |
### Keeping content inside the parent
Use `maximum-height-full` when a child should stay inside the full height of a parent container.
```html theme={null}
maximum-height-full
```
| Pattern | Supported classes | What it controls |
| --------------------- | --------------------- | ------------------------------------- |
| `maximum-height-full` | `maximum-height-full` | Caps height at the full parent height |
### Matching the viewport cap
Use `maximum-height-screen` when a panel can grow tall but should still stay capped to the viewport height.
```html theme={null}
maximum-height-screen
```
| Pattern | Supported classes | What it controls |
| ----------------------- | ----------------------- | ---------------------------------- |
| `maximum-height-screen` | `maximum-height-screen` | Caps height at the viewport height |
### Removing a height cap
Use `maximum-height-auto` when you need to remove a previous max-height constraint and let content grow naturally again.
```html theme={null}
maximum-height-auto
```
| Pattern | Supported classes | What it controls |
| --------------------- | --------------------- | ------------------------------------------- |
| `maximum-height-auto` | `maximum-height-auto` | Removes a previously applied max-height cap |
## Best Practices
* Use `maximum-height-` for panels that should stop growing after a fixed vertical threshold.
* Use `maximum-height-` when a child should stay proportional to the parent height.
* Pair `maximum-height-full` or `maximum-height-screen` with overflow utilities when content may need to scroll.
* Use `maximum-height-auto` to remove an inherited height cap instead of stacking conflicting rules.
## Related Utilities
Bundled height utilities
Bundled minimum-height helpers
# Max Width
Source: https://skelementorcss.com/sizing/max-width
Control maximum width with size, fraction, and keyword max-width utilities.
## Overview
Max-width utilities cap width with the same suffix families used by width and min-width.
| Pattern | Supported values |
| -------------------------- | ------------------------------------------------------------------------------------ |
| `maximum-width-` | `3xs`, `2xs`, `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl`, `5xl`, `6xl`, `7xl` |
| `maximum-width-` | `1-2`, `1-3`, `2-3`, `1-4`, `3-4` |
| `maximum-width-` | `px`, `auto`, `full`, `screen` |
## Examples
### Using the size scale
Use the t-shirt scale when content should stop growing after it reaches a predictable readable width.
```html theme={null}
maximum-width-xl
```
| Pattern | Supported classes | What it controls |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| `maximum-width-` | `maximum-width-3xs`, `maximum-width-2xs`, `maximum-width-xs`, `maximum-width-sm`, `maximum-width-md`, `maximum-width-lg`, `maximum-width-xl`, `maximum-width-2xl`, `maximum-width-3xl`, `maximum-width-4xl`, `maximum-width-5xl`, `maximum-width-6xl`, `maximum-width-7xl` | Maximum widths based on the size ladder |
### Using a percentage
Use fractional max-width utilities when a block should stay fluid but stop growing past a fixed percentage of its parent.
```html theme={null}
maximum-width-1-2
```
| Pattern | Supported classes | What it controls |
| -------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
| `maximum-width-` | `maximum-width-1-2`, `maximum-width-1-3`, `maximum-width-2-3`, `maximum-width-1-4`, `maximum-width-3-4` | Maximum width as a percentage of the parent |
### Keeping content inside the parent
Use `maximum-width-full` when a child should never exceed the width of its parent container.
```html theme={null}
maximum-width-full
```
| Pattern | Supported classes | What it controls |
| -------------------- | -------------------- | ----------------------------------- |
| `maximum-width-full` | `maximum-width-full` | Caps width at the full parent width |
### Matching the viewport cap
Use `maximum-width-screen` when an element can grow wide, but its cap should still align to the viewport instead of the document container.
```html theme={null}
maximum-width-screen
```
| Pattern | Supported classes | What it controls |
| ---------------------- | ---------------------- | -------------------------------- |
| `maximum-width-screen` | `maximum-width-screen` | Caps width at the viewport width |
### Removing a width cap
Use `maximum-width-auto` when you need to remove a previous max-width limit and let content grow naturally again.
```html theme={null}
maximum-width-auto
```
| Pattern | Supported classes | What it controls |
| -------------------- | -------------------- | ------------------------------------------ |
| `maximum-width-auto` | `maximum-width-auto` | Removes a previously applied max-width cap |
## Best Practices
* Use `maximum-width-` for readable content rails and fixed shells that should stop expanding.
* Use `maximum-width-` when a block should stay fluid inside a parent layout.
* Use `maximum-width-full` for children that must not overflow their parent.
* Use `maximum-width-auto` when you intentionally need to remove a previous width cap.
## Related Utilities
Pair width and max-width for responsive layouts
Container-scale and keyword minimum widths
# Min Height
Source: https://skelementorcss.com/sizing/min-height
Control minimum height with size, fraction, and keyword min-height utilities.
## Overview
Min-height utilities set a floor while still allowing content to grow past that baseline.
| Pattern | Supported values |
| --------------------------- | ------------------------------------------------------------------------------------ |
| `minimum-height-` | `3xs`, `2xs`, `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl`, `5xl`, `6xl`, `7xl` |
| `minimum-height-` | `1-2`, `1-3`, `2-3`, `1-4`, `3-4` |
| `minimum-height-` | `px`, `auto`, `full`, `screen` |
## Examples
### Using the size scale
Use the t-shirt scale when a section or card needs a reliable minimum height before content starts growing it taller.
```html theme={null}
minimum-height-xl
```
| Pattern | Supported classes | What it controls |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| `minimum-height-` | `minimum-height-3xs`, `minimum-height-2xs`, `minimum-height-xs`, `minimum-height-sm`, `minimum-height-md`, `minimum-height-lg`, `minimum-height-xl`, `minimum-height-2xl`, `minimum-height-3xl`, `minimum-height-4xl`, `minimum-height-5xl`, `minimum-height-6xl`, `minimum-height-7xl` | Minimum heights based on the size ladder |
### Using a percentage
Use fractional min-height utilities when an element should keep a minimum share of the parent's height.
```html theme={null}
minimum-height-1-2
```
| Pattern | Supported classes | What it controls |
| --------------------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
| `minimum-height-` | `minimum-height-1-2`, `minimum-height-1-3`, `minimum-height-2-3`, `minimum-height-1-4`, `minimum-height-3-4` | Minimum height as a percentage of the parent |
### Matching the parent height floor
Use `minimum-height-full` when a child should always stay at least as tall as the parent that contains it.
```html theme={null}
minimum-height-full
```
| Pattern | Supported classes | What it controls |
| --------------------- | --------------------- | ---------------------------------------------- |
| `minimum-height-full` | `minimum-height-full` | Uses the full parent height as a minimum floor |
### Matching the viewport floor
Use `minimum-height-screen` when a section should always reach the viewport height, even if its content is short.
```html theme={null}
minimum-height-screen
```
| Pattern | Supported classes | What it controls |
| ----------------------- | ----------------------- | ------------------------------------------- |
| `minimum-height-screen` | `minimum-height-screen` | Uses the viewport height as a minimum floor |
### Resetting the minimum height
Use `minimum-height-auto` when you want the browser to calculate the baseline height automatically again.
```html theme={null}
minimum-height-auto
```
| Pattern | Supported classes | What it controls |
| --------------------- | --------------------- | ----------------------------------------------------- |
| `minimum-height-auto` | `minimum-height-auto` | Resets the minimum height to automatic browser sizing |
## Best Practices
* Use `minimum-height-` when a surface needs a reliable baseline height but should still grow with content.
* Use `minimum-height-full` only when a parent already establishes height.
* Use `minimum-height-screen` for page shells, hero sections, and empty states.
* Use `minimum-height-auto` when you need to remove a previous minimum-height rule.
## Related Utilities
Fixed and viewport height helpers
Pair minimum and maximum height constraints
# Min Width
Source: https://skelementorcss.com/sizing/min-width
Control minimum width with size, fraction, and keyword min-width utilities.
## Overview
Min-width utilities use the same suffix families as width, so you can add a floor without switching naming systems.
| Pattern | Supported values |
| -------------------------- | ------------------------------------------------------------------------------------ |
| `minimum-width-` | `3xs`, `2xs`, `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl`, `5xl`, `6xl`, `7xl` |
| `minimum-width-` | `1-2`, `1-3`, `2-3`, `1-4`, `3-4` |
| `minimum-width-` | `px`, `auto`, `full`, `screen` |
## Examples
### Using the size scale
Use the t-shirt scale when an element should never shrink below a predictable readable width.
```html theme={null}
minimum-width-xl
```
| Pattern | Supported classes | What it controls |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| `minimum-width-` | `minimum-width-3xs`, `minimum-width-2xs`, `minimum-width-xs`, `minimum-width-sm`, `minimum-width-md`, `minimum-width-lg`, `minimum-width-xl`, `minimum-width-2xl`, `minimum-width-3xl`, `minimum-width-4xl`, `minimum-width-5xl`, `minimum-width-6xl`, `minimum-width-7xl` | Minimum widths based on the size ladder |
### Using a percentage
Use fractional min-width utilities when a child should keep a minimum share of the row, even as the layout compresses.
```html theme={null}
minimum-width-1-2
minimum-width-1-2
```
| Pattern | Supported classes | What it controls |
| -------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
| `minimum-width-` | `minimum-width-1-2`, `minimum-width-1-3`, `minimum-width-2-3`, `minimum-width-1-4`, `minimum-width-3-4` | Minimum width as a percentage of the parent |
### Matching the parent width floor
Use `minimum-width-full` when an element should never shrink below the full width of its parent.
```html theme={null}
minimum-width-full
```
| Pattern | Supported classes | What it controls |
| -------------------- | -------------------- | --------------------------------------------- |
| `minimum-width-full` | `minimum-width-full` | Uses the full parent width as a minimum floor |
### Matching the viewport floor
Use `minimum-width-screen` when an element should keep a viewport-width floor instead of collapsing with a narrower parent container.
```html theme={null}
minimum-width-screen
```
| Pattern | Supported classes | What it controls |
| ---------------------- | ---------------------- | ------------------------------------------ |
| `minimum-width-screen` | `minimum-width-screen` | Uses the viewport width as a minimum floor |
### Resetting the minimum width
Use `minimum-width-auto` when an element should fall back to the browser's default minimum-width behavior.
```html theme={null}
minimum-width-auto
```
| Pattern | Supported classes | What it controls |
| -------------------- | -------------------- | ---------------------------------------------------- |
| `minimum-width-auto` | `minimum-width-auto` | Resets the minimum width to automatic browser sizing |
## Best Practices
* Use `minimum-width-` when a panel, card, or rail should never collapse below a readable width.
* Use `minimum-width-` when flex items should keep a minimum share of the row.
* Use `minimum-width-full` for children that must stay as wide as their parent.
* Use `minimum-width-screen` carefully because it can force horizontal overflow inside narrow containers.
## Related Utilities
Bundled width utilities
Constrain maximum size alongside minimum width
# Width
Source: https://skelementorcss.com/sizing/width
Control width with size, fraction, and keyword width utilities.
## Overview
Width utilities cover fixed size steps, fractions, and keyword widths in one suffix system.
| Pattern | Supported values |
| ------------------ | ------------------------------------------------------------------------------------ |
| `width-` | `3xs`, `2xs`, `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl`, `5xl`, `6xl`, `7xl` |
| `width-` | `1-2`, `1-3`, `2-3`, `1-4`, `3-4` |
| `width-` | `px`, `auto`, `full`, `screen` |
## Examples
### Using the size scale
Use the t-shirt width scale when you want a predictable fixed content width for cards, panels, and shells.
```html theme={null}
width-xl
```
| Pattern | Supported classes | What it controls |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- |
| `width-` | `width-3xs`, `width-2xs`, `width-xs`, `width-sm`, `width-md`, `width-lg`, `width-xl`, `width-2xl`, `width-3xl`, `width-4xl`, `width-5xl`, `width-6xl`, `width-7xl` | Fixed widths based on the size ladder |
### Using a percentage
Use fractional width utilities when the layout itself is column-based and width should be relative to the parent.
```html theme={null}
width-1-3
width-2-3
```
| Pattern | Supported classes | What it controls |
| ------------------ | --------------------------------------------------------------- | ----------------------------------- |
| `width-` | `width-1-2`, `width-1-3`, `width-2-3`, `width-1-4`, `width-3-4` | Width as a percentage of the parent |
### Filling the available width
Use `width-full` when an element should stretch across the full available width of its parent.
```html theme={null}
width-full
```
| Pattern | Supported classes | What it controls |
| ------------ | ----------------- | -------------------------------- |
| `width-full` | `width-full` | Fills the available parent width |
### Matching the viewport
Use `width-screen` when an element should span the full viewport width instead of just the width of its parent container.
```html theme={null}
width-screen
```
| Pattern | Supported classes | What it controls |
| -------------- | ----------------- | -------------------------- |
| `width-screen` | `width-screen` | Matches the viewport width |
### Resetting the width
Use `width-auto` when an element should size itself to its content or when you need to remove a previously assigned width.
```html theme={null}
width-auto
```
| Pattern | Supported classes | What it controls |
| ------------ | ----------------- | ---------------------------------------------- |
| `width-auto` | `width-auto` | Sizes to content or surrounding layout context |
## Best Practices
* Use `width-full` for forms, rows, and blocks that should stretch with their parent.
* Use `width-` when the layout itself is column-based.
* Use `width-` for fixed shells and readable content rails.
* Use `width-screen` sparingly because it ignores the document container width.
## Related Utilities
Constrain maximum element width
Control element height
# Margin
Source: https://skelementorcss.com/spacing/margin
Control external spacing with the shipped Skelementor margin utilities.
## Overview
Margin adds space outside an element, so it is the utility you use when Elementor sections, cards, buttons, or content blocks need breathing room from whatever sits around them. Skelementor ships the classic physical margin families only: `margin`, `margin-horizontal`, `margin-vertical`, `margin-top`, `margin-right`, `margin-bottom`, and `margin-left`.
This page documents only the bundled Skelementor margin families, so every example and table below maps directly to classes you can use today.
| Pattern | Supported values |
| ---------------------------- | ----------------------------------------------------- |
| `margin-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12`, `auto` |
| `margin-horizontal-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12`, `auto` |
| `margin-vertical-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12`, `auto` |
| `margin-top-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12`, `auto` |
| `margin-right-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12`, `auto` |
| `margin-bottom-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12`, `auto` |
| `margin-left-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12`, `auto` |
| `-margin-` | `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `-margin-horizontal-` | `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `-margin-vertical-` | `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `-margin-top-` | `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `-margin-right-` | `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `-margin-bottom-` | `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `-margin-left-` | `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
Positive families support `auto`; negative families support numeric steps plus
`px` only.
## Examples
### Basic example
Use `margin-*` when the same amount of outside space should apply on every side of an Elementor block. This is the quickest way to give a card, notice, or promo tile equal breathing room from all directions.
```html theme={null}
margin-8
```
| Pattern | Supported classes | What it controls |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| `margin-` | `margin-0`, `margin-px`, `margin-1`, `margin-2`, `margin-3`, `margin-4`, `margin-6`, `margin-8`, `margin-12`, `margin-auto` | All four margins at once |
### Adding margin to a single side
Use the single-side families when only one edge of an element needs separation. In Elementor this is the common case for stacked headings (`margin-bottom-*`), buttons sitting next to each other (`margin-right-*`), or blocks that need a controlled nudge from one direction without disturbing the other three sides.
```html theme={null}
margin-top-6
margin-right-4
margin-bottom-8
margin-left-2
```
| Pattern | Supported classes | What it controls |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| `margin-top-` | `margin-top-0`, `margin-top-px`, `margin-top-1`, `margin-top-2`, `margin-top-3`, `margin-top-4`, `margin-top-6`, `margin-top-8`, `margin-top-12`, `margin-top-auto` | Top margin only |
| `margin-right-` | `margin-right-0`, `margin-right-px`, `margin-right-1`, `margin-right-2`, `margin-right-3`, `margin-right-4`, `margin-right-6`, `margin-right-8`, `margin-right-12`, `margin-right-auto` | Right margin only |
| `margin-bottom-` | `margin-bottom-0`, `margin-bottom-px`, `margin-bottom-1`, `margin-bottom-2`, `margin-bottom-3`, `margin-bottom-4`, `margin-bottom-6`, `margin-bottom-8`, `margin-bottom-12`, `margin-bottom-auto` | Bottom margin only |
| `margin-left-` | `margin-left-0`, `margin-left-px`, `margin-left-1`, `margin-left-2`, `margin-left-3`, `margin-left-4`, `margin-left-6`, `margin-left-8`, `margin-left-12`, `margin-left-auto` | Left margin only |
### Adding horizontal margin
Use `margin-horizontal-*` when the left and right sides should move together. This is useful for centering or spacing contained content inside a wider Elementor wrapper while keeping the top and bottom relationship unchanged.
```html theme={null}
margin-horizontal-8
```
| Pattern | Supported classes | What it controls |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
| `margin-horizontal-` | `margin-horizontal-0`, `margin-horizontal-px`, `margin-horizontal-1`, `margin-horizontal-2`, `margin-horizontal-3`, `margin-horizontal-4`, `margin-horizontal-6`, `margin-horizontal-8`, `margin-horizontal-12`, `margin-horizontal-auto` | Left and right margins together |
### Adding vertical margin
Use `margin-vertical-*` when an Elementor item needs more room above and below but should stay anchored horizontally. This works well for callout rows, media blocks, and repeated content items that need stronger vertical rhythm.
```html theme={null}
margin-vertical-8
```
| Pattern | Supported classes | What it controls |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
| `margin-vertical-` | `margin-vertical-0`, `margin-vertical-px`, `margin-vertical-1`, `margin-vertical-2`, `margin-vertical-3`, `margin-vertical-4`, `margin-vertical-6`, `margin-vertical-8`, `margin-vertical-12`, `margin-vertical-auto` | Top and bottom margins together |
### Using negative values
Use a leading dash when you deliberately want one element to pull into the space of another. In Elementor this is usually a controlled overlap move: a card rising into a hero area, a badge sitting partly over an image, or a caption tucking upward toward the block above it.
```html theme={null}
reference
-margin-top-8
```
| Pattern | Supported classes | What it controls |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------ |
| `-margin-` | `-margin-px`, `-margin-1`, `-margin-2`, `-margin-3`, `-margin-4`, `-margin-6`, `-margin-8`, `-margin-12` | Pulls all four margins inward |
| `-margin-horizontal-` | `-margin-horizontal-px`, `-margin-horizontal-1`, `-margin-horizontal-2`, `-margin-horizontal-3`, `-margin-horizontal-4`, `-margin-horizontal-6`, `-margin-horizontal-8`, `-margin-horizontal-12` | Pulls left and right margins inward |
| `-margin-vertical-` | `-margin-vertical-px`, `-margin-vertical-1`, `-margin-vertical-2`, `-margin-vertical-3`, `-margin-vertical-4`, `-margin-vertical-6`, `-margin-vertical-8`, `-margin-vertical-12` | Pulls top and bottom margins inward |
| `-margin-top-` | `-margin-top-px`, `-margin-top-1`, `-margin-top-2`, `-margin-top-3`, `-margin-top-4`, `-margin-top-6`, `-margin-top-8`, `-margin-top-12` | Pulls the top edge upward |
| `-margin-right-` | `-margin-right-px`, `-margin-right-1`, `-margin-right-2`, `-margin-right-3`, `-margin-right-4`, `-margin-right-6`, `-margin-right-8`, `-margin-right-12` | Pulls the right edge outward |
| `-margin-bottom-` | `-margin-bottom-px`, `-margin-bottom-1`, `-margin-bottom-2`, `-margin-bottom-3`, `-margin-bottom-4`, `-margin-bottom-6`, `-margin-bottom-8`, `-margin-bottom-12` | Pulls the bottom edge upward into the next block |
| `-margin-left-` | `-margin-left-px`, `-margin-left-1`, `-margin-left-2`, `-margin-left-3`, `-margin-left-4`, `-margin-left-6`, `-margin-left-8`, `-margin-left-12` | Pulls the left edge outward |
## Best Practices
* Use `margin-*` when the whole element needs separation from its surroundings.
* Use single-side classes for headings, buttons, and stacked Elementor content where only one edge needs adjustment.
* Use `margin-horizontal-auto` when a constrained block should center inside a wider wrapper.
* Treat negative margins as a layout effect, not a default spacing strategy.
# Padding
Source: https://skelementorcss.com/spacing/padding
Control internal spacing with the bundled Skelementor padding utilities.
## Overview
Padding adds space inside an element, between its content and its edge. In Elementor this is what makes cards feel roomy, buttons feel clickable, and content blocks stop hugging their borders. Skelementor currently ships `padding`, `padding-horizontal`, `padding-vertical`, `padding-top`, and `padding-bottom`.
This page documents only the bundled Skelementor padding families, so every example and table below maps directly to classes you can use today.
| Pattern | Supported values |
| ---------------------------- | --------------------------------------------- |
| `padding-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `padding-horizontal-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `padding-vertical-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `padding-top-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
| `padding-bottom-` | `0`, `px`, `1`, `2`, `3`, `4`, `6`, `8`, `12` |
## Examples
### Basic example
Use `padding-` when the same amount of inner space should apply on every side of a card, panel, or Elementor content box. It is the most direct way to give content breathing room without changing the element’s outer footprint.
```html theme={null}
padding-8
```
| Pattern | Supported classes | What it controls |
| ----------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| `padding-` | `padding-0`, `padding-px`, `padding-1`, `padding-2`, `padding-3`, `padding-4`, `padding-6`, `padding-8`, `padding-12` | Padding on all four sides |
### Adding padding to one side
Skelementor currently includes the top and bottom single-side padding families only. Use `padding-top-` when content needs more room above it, and `padding-bottom-` when the extra breathing room belongs below it.
```html theme={null}
padding-top-6
padding-bottom-8
```
| Pattern | Supported classes | What it controls |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- |
| `padding-top-` | `padding-top-0`, `padding-top-px`, `padding-top-1`, `padding-top-2`, `padding-top-3`, `padding-top-4`, `padding-top-6`, `padding-top-8`, `padding-top-12` | Top padding only |
| `padding-bottom-` | `padding-bottom-0`, `padding-bottom-px`, `padding-bottom-1`, `padding-bottom-2`, `padding-bottom-3`, `padding-bottom-4`, `padding-bottom-6`, `padding-bottom-8`, `padding-bottom-12` | Bottom padding only |
### Adding horizontal padding
Use `padding-horizontal-` when left and right spacing should move together. This is useful for buttons, content rows, and boxed text where the horizontal rhythm needs to be stronger than the vertical rhythm.
```html theme={null}
padding-horizontal-8
```
| Pattern | Supported classes | What it controls |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------- |
| `padding-horizontal-` | `padding-horizontal-0`, `padding-horizontal-px`, `padding-horizontal-1`, `padding-horizontal-2`, `padding-horizontal-3`, `padding-horizontal-4`, `padding-horizontal-6`, `padding-horizontal-8`, `padding-horizontal-12` | Left and right padding together |
### Adding vertical padding
Use `padding-vertical-` when the top and bottom should expand together without making the element wider. This works well for stacked callouts, promo boxes, and button styles that need a taller silhouette.
```html theme={null}
padding-vertical-8
```
| Pattern | Supported classes | What it controls |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------- |
| `padding-vertical-` | `padding-vertical-0`, `padding-vertical-px`, `padding-vertical-1`, `padding-vertical-2`, `padding-vertical-3`, `padding-vertical-4`, `padding-vertical-6`, `padding-vertical-8`, `padding-vertical-12` | Top and bottom padding together |
## Best Practices
* Use `padding-` for cards and wrappers that need even inner spacing on every side.
* Use `padding-horizontal-` and `padding-vertical-` when horizontal and vertical rhythm should be different.
* Use `padding-top-` and `padding-bottom-` when only the top or bottom edge needs extra room.
* Keep the same padding values across the same component family so Elementor layouts feel consistent.
# Font Size
Source: https://skelementorcss.com/typography/font-size
The bundled responsive text scale from `.text-2xs` through `.text-9xl`.
## Overview
The bundled `text-*` classes are Skelementor's default font-size scale.
For how fluid `clamp()` scaling relates to breakpoint suffixes, see [Fluid scaling](/concepts/fluid-scaling).
| Class | Range | CSS |
| ------------ | -------------- | ------------------------------------------------- |
| `.text-2xs` | 10px -> 11px | `clamp(0.58rem, calc(0.49rem + 0.09vw), 0.64rem)` |
| `.text-xs` | 12px -> 13px | `clamp(0.69rem, calc(0.59rem + 0.16vw), 0.8rem)` |
| `.text-sm` | 14px -> 16px | `clamp(0.83rem, calc(0.71rem + 0.25vw), 1rem)` |
| `.text-base` | 16px -> 20px | `clamp(1rem, calc(0.85rem + 0.37vw), 1.25rem)` |
| `.text-lg` | 18px -> 25px | `clamp(1.2rem, calc(1.02rem + 0.53vw), 1.56rem)` |
| `.text-xl` | 20px -> 31px | `clamp(1.44rem, calc(1.22rem + 0.75vw), 1.95rem)` |
| `.text-2xl` | 24px -> 39px | `clamp(1.73rem, calc(1.47rem + 1.05vw), 2.44rem)` |
| `.text-3xl` | 30px -> 49px | `clamp(2.07rem, calc(1.76rem + 1.45vw), 3.05rem)` |
| `.text-4xl` | 36px -> 61px | `clamp(2.49rem, calc(2.12rem + 1.97vw), 3.82rem)` |
| `.text-5xl` | 48px -> 76px | `clamp(2.99rem, calc(2.54rem + 2.63vw), 4.77rem)` |
| `.text-6xl` | 60px -> 95px | `clamp(3.59rem, calc(3.08rem + 3.47vw), 5.96rem)` |
| `.text-7xl` | 72px -> 119px | `clamp(4.31rem, calc(3.74rem + 4.58vw), 7.45rem)` |
| `.text-8xl` | 96px -> 149px | `clamp(5.17rem, calc(4.51rem + 6.05vw), 9.31rem)` |
| `.text-9xl` | 128px -> 186px | `clamp(6.2rem, calc(5.45rem + 7.98vw), 11.64rem)` |
## Example
```html theme={null}
Bundled scale
One text system
Use the default `text-*` names directly. The responsive behavior is already built into the framework.
```
Use `text-base` to `text-lg` for running copy, and step into `text-xl` to `text-3xl` for section headings. Reserve the largest sizes for hero statements and high-emphasis moments. Pair `text-*` with `.leading-*` and `.font-*` utilities instead of looking for a separate naming scheme.
# Font Weight
Source: https://skelementorcss.com/typography/font-weight
Dial in typographic emphasis using `.font-*` utilities from ultra-thin to ultra-black.
## Overview
Use `font-*` classes to control emphasis without changing the size scale.
| Class | Weight | CSS | Usage notes |
| ------------------ | ------ | ------------------- | ---------------------------- |
| `.font-thin` | 100 | `font-weight: 100;` | Ultra-fine display use |
| `.font-extralight` | 200 | `font-weight: 200;` | Light editorial accents |
| `.font-light` | 300 | `font-weight: 300;` | Subtle supporting text |
| `.font-normal` | 400 | `font-weight: 400;` | Default body copy |
| `.font-medium` | 500 | `font-weight: 500;` | Labels and UI controls |
| `.font-semibold` | 600 | `font-weight: 600;` | Section headings |
| `.font-bold` | 700 | `font-weight: 700;` | Primary headings and buttons |
| `.font-extrabold` | 800 | `font-weight: 800;` | Strong emphasis |
| `.font-black` | 900 | `font-weight: 900;` | Display typography |
## Example
```html theme={null}
Designed for Elementor
Craft polished typographic systems
Mix `.font-medium` for UI labels with `.font-semibold` or `.font-bold` for headings.
```
## Recommendations
* Pair font weights with font files that are actually loaded on the site.
* Use heavier weights for small UI labels and lighter weights only when contrast and size support them.
* Keep most pages to two or three weight choices for a cleaner voice.
Combine `.font-semibold` with `.text-3xl` or `.text-4xl` for marketing headlines. The bundled text scale already handles responsive sizing behavior where it ships.
# Letter Spacing
Source: https://skelementorcss.com/typography/letter-spacing
Control tracking with `.tracking-*` utilities that tighten or loosen character spacing.
## Overview
Use `tracking-*` classes to tighten or open text without changing the font size.
| Class | CSS | Effect |
| ----------------------- | --------------------------- | ---------------------------- |
| `.tracking-tightest` | `letter-spacing: -0.1em;` | Ultra-condensed for logos |
| `.tracking-extra-tight` | `letter-spacing: -0.075em;` | Tight headings |
| `.tracking-tighter` | `letter-spacing: -0.05em;` | Compact subheads |
| `.tracking-tight` | `letter-spacing: -0.025em;` | Slightly condensed body copy |
| `.tracking-normal` | `letter-spacing: 0em;` | Default spacing |
| `.tracking-wide` | `letter-spacing: 0.025em;` | Labels and uppercase text |
| `.tracking-wider` | `letter-spacing: 0.05em;` | Buttons and navigation |
| `.tracking-widest` | `letter-spacing: 0.1em;` | Section labels |
| `.tracking-extra-wide` | `letter-spacing: 0.15em;` | Display typography |
| `.tracking-ultra-wide` | `letter-spacing: 0.2em;` | Dramatic headlines |
## Example
```html theme={null}
Changelog
Unified bundled framework
```
Tracking compounds with uppercase transforms. Start at `.tracking-wide` for `.uppercase` text so characters do not feel cramped.
# Line Height
Source: https://skelementorcss.com/typography/line-height
Fixed pixel leading utilities that ship as `.leading-*` in the bundle.
## Overview
Use `leading-*` classes for fixed line-height steps that stay easy to pair with any text size.
| Class | Line height | Best for |
| ------------------ | -------------- | ----------------------------------- |
| `.leading-tight` | `20px / 1.25` | Compact headings and stacked titles |
| `.leading-snug` | `22px / 1.375` | Subheads and UI copy |
| `.leading-normal` | `24px / 1.5` | Everyday body copy |
| `.leading-relaxed` | `26px / 1.625` | Long-form paragraphs |
| `.leading-loose` | `32px / 2` | Spacious display copy |
## Example
```html theme={null}
Built-in rhythm for bundled typography
Use `.leading-tight` when you want multi-line headings to stay compact. Swap to `.leading-relaxed` when paragraphs need more room to breathe.
```
## Best Practices
* Use `.leading-tight` for headings and labels that should feel compact.
* Use `.leading-snug` when tight feels cramped but normal feels too open (subheads, short descriptions).
* Use `.leading-normal` for UI copy and shorter paragraphs.
* Use `.leading-relaxed` for body copy, summaries, and longer text blocks.
* Use `.leading-loose` sparingly for quotes and roomy display copy.
# Text Alignment
Source: https://skelementorcss.com/typography/text-alignment
Apply semantic alignment utilities that respect document direction and layout context.
## Overview
Use alignment utilities to place copy where it belongs without breaking logical reading direction.
| Class | CSS | When to use |
| -------------- | --------------------- | ------------------------------------------ |
| `.text-start` | `text-align: start;` | Default reading alignment |
| `.text-center` | `text-align: center;` | Headlines, testimonials, CTA sections |
| `.text-end` | `text-align: end;` | Metadata, side notes, number-heavy content |
### Start Alignment
```html theme={null}
Long-form content stays easiest to scan when it follows the reading edge.
```
Use `.text-start` for long-form copy and default reading flow.
### Center Alignment
```html theme={null}
Center alignment puts the spotlight on the message.
```
Combine `.text-center` with a constrained width when you want the message to sit in the middle of the layout.
### End Alignment
```html theme={null}
Updated: April 2026
```
Use `.text-end` for side notes, timestamps, and compact metadata that should sit against the far edge.
# Text Style
Source: https://skelementorcss.com/typography/text-style
Use transform and decoration utilities to add emphasis without writing custom CSS.
## Overview
Use text-style utilities for simple emphasis and casing changes without extra CSS.
| Class | CSS | Typical use |
| --------------- | ----------------------------- | ------------------------------------ |
| `.uppercase` | `text-transform: uppercase;` | Section labels, badges, navigation |
| `.lowercase` | `text-transform: lowercase;` | Code identifiers, stylistic headings |
| `.underline` | `text-decoration: underline;` | Link emphasis, inline callouts |
| `.no-underline` | `text-decoration: none;` | Remove default link underline |
| `.italic` | `font-style: italic;` | Quotes, citations, calls to action |
## Example
```html theme={null}
Release notes
Version 1.4.0 sharpens the bundled typography system
```
Combine `.uppercase` with `.tracking-wide` or `.tracking-wider` to prevent capped text from feeling cramped.
## Style Guardrails
* Reserve `.uppercase` for short labels; long uppercase paragraphs quickly lose readability.
* Use `.no-underline` alongside a hover state (e.g. `.underline` on hover) so links remain discoverable.
* Italic text can appear faint at lighter weights—bump to `.font-medium` or higher if contrast is low.
Inline emphasis should come from utility classes, not manual HTML elements. This keeps your Elementor global styles consistent and easy to audit.