Basic selectors
Element, class, descendant, and pseudo-class selectors.
Edit HTML, CSS, JavaScript, React/TSX, and Web Components with CodeMirror and see the result immediately. Filter by trail or topic.
Trail
Tags
Element, class, descendant, and pseudo-class selectors.
Content, padding, border, and margin — the CSS box model.
Align horizontally and vertically with a few flex utilities.
Automatic responsive grid with repeat and minmax.
Font size that scales between min and max without breakpoints.
Simple @keyframes for smooth element entrance.
Switch themes using only custom properties and system preference.
A card list that rearranges with grid and readable type.
Labels, visible focus, and field states without JavaScript.
A bar that sticks on scroll with position: sticky.
Micro-interaction with transition and :hover / :active.
Adapt layout and typography by viewport width.
Understand containing blocks and overlays.
Stacking contexts and when z-index actually works.
Horizontal scroll with snap points — no library needed.
Style the container based on what is inside — modern CSS.
The card changes layout based on container width, not the viewport.
Frosted glass and depth with backdrop-filter + filter.
column-count for a magazine-like flow without JS.
Light/dark switch driven only by CSS variables.
article with header, headings, and metadata footer.
Associated labels, required, and buttons with the correct type.
Image with a semantic grouped caption.
header, nav, main, and footer forming the page structure.
caption, thead, th with scope — an accessible table.
dl/dt/dd for an HTML term glossary.
Project: profile with landmarks, figure, and contact form.
Simple state, buttons, and DOM updates.
Accessible panel switching with roles and keyboard support.
Open/close sections with a button and aria-expanded.
Check fields on submit and show friendly messages.
Persist light/dark preference in the browser.
Simulates fetch with Promise and renders a list.
Add and remove items with DOM and a simple array.
First React component rendered in the playground.
Reusable component receiving title and children.
Local state, events, and re-render.
Sync the tab title with state.
map + filter + stable keys.
useQuery + cache with JSONPlaceholder.
useMutation + invalidateQueries on a mock list.
Shared store across components.
First custom element with label and Shadow DOM.
Encapsulated CSS: the host does not leak into the component.
image-gallery with Shadow DOM, grid, and gallery-select event.
The same image-gallery used inside a React App via esm.sh.
Custom Element hosted by Vue 3 (global CDN build).
observedAttributes updates the grid when columns changes.
Mental map of a library-mode package — entry, dist, and preview HTML.
register() with guard + auto-register on the entry.
How a Vite app would use the lib: register and mount the gallery.