CSS contain Property Demo - Online Layout & Paint Isolation
Toggle contain: strict, content, paint, layout and see how it affects rendering. Understand isolation for faster pages.
UD5 Toolkit
appearance Property Demo
Compare native browser styles with appearance: none across form elements. See exactly what gets reset and learn how to build custom styles on top.
When you remove the native dropdown arrow with appearance: none, add a custom SVG background arrow to maintain usability.
appearance: nonebackground-image: url(...)background-positionpadding-right (space for arrow)
/* Reset a single select element */
select {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
/* Add custom arrow */
background-image: url("arrow.svg");
background-repeat: no-repeat;
background-position: right 0.75rem center;
padding-right: 2.25rem;
}
/* Reset all form elements */
input, select, textarea, button,
progress, meter {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
border: 1px solid #ccc;
border-radius: 0.25rem;
padding: 0.5rem 0.75rem;
font: inherit;
}
/* Checkbox/Radio need custom indicators */
input[type="checkbox"],
input[type="radio"] {
appearance: none;
-webkit-appearance: none;
width: 18px;
height: 18px;
border: 2px solid #666;
cursor: pointer;
}
input[type="checkbox"]:checked {
background: #6c5ce7;
border-color: #6c5ce7;
}
input[type="radio"] {
border-radius: 50%;
}
appearance: none
| Browser | Standard appearance |
-webkit-appearance |
-moz-appearance |
Notes |
|---|---|---|---|---|
| Chrome 84+ | Full | Supported | N/A | Both standard and -webkit- work |
| Firefox 80+ | Full | N/A | Supported | Use -moz- for older versions |
| Safari 15.4+ | Full | Required | N/A | Always include -webkit- for Safari |
| Edge 84+ | Full | Supported | N/A | Chromium-based, same as Chrome |
| iOS Safari 15.4+ | Partial | Required | N/A | Always include -webkit- prefix |
appearance: none and -webkit-appearance: none for maximum compatibility. Add -moz-appearance: none for older Firefox versions.
appearance property controls whether an element uses platform-native styling (browser default) or can be fully customized with CSS. It was originally introduced as a way to make elements look like native UI widgets (e.g., appearance: button makes a <div> look like a button). Today, its most common use is appearance: none to strip away all native browser styling, giving developers a clean slate for custom designs.
appearance: none ensures a uniform starting point.<select>. appearance: none removes these quirks.appearance: none, the native indicator is removed, but no replacement is provided. The input still exists (it's clickable and maintains its checked state), but visually there's nothing there. You must manually style the :checked state using CSS pseudo-elements or background images to create custom indicators. See the Checkbox/Radio Fix code example above.
appearance: none, the native dropdown arrow disappears. To add a custom arrow:
background-image (data URI).background-position: right 0.75rem center.padding-right so the text doesn't overlap the arrow.background-repeat: no-repeat.See the Best Practice example above for a working demonstration with complete CSS.
appearance: none specifically targets platform-native UI styling (the operating system's rendering of form controls). all: unset is much more aggressive—it resets every CSS property (color, font, margin, padding, border, etc.) to its inherited or initial value. Use appearance: none when you want to keep your existing styles but remove browser-specific chrome. Use all: unset (rarely) when you need a complete CSS reset on a specific element.
::-webkit-slider-runnable-track and ::-webkit-slider-thumb.::-moz-range-track and ::-moz-range-thumb.Apply appearance: none to the <input type="range"> itself, then style the pseudo-elements separately. Note that you'll need vendor-prefixed pseudo-elements for each browser engine.
appearance: none, always:
:focus-visible outline or ring.The underlying HTML semantics remain intact, so screen readers still recognize checkboxes, buttons, and selects correctly—even with custom styling.
appearance property accepts values like button, textfield, menulist-button, checkbox, radio, push-button, and more. For example, applying appearance: button to a <div> makes it render with native button styling. However, this usage is less common and somewhat inconsistent across browsers. The primary practical use today is appearance: none for resetting styles. If you need a button, just use a <button> element—it's semantically correct and accessible by default.
Toggle contain: strict, content, paint, layout and see how it affects rendering. Understand isolation for faster pages.
Manipulate CSS values as typed objects using attributeStyleMap. Convert between CSSUnitValue, CSSMathSum, etc. Futuristic CSS‑in‑JS.
Design a layout where nested grids share track sizes with their parent via subgrid. Copy the complete CSS.
Create a pure CSS scroll progress indicator using animation‑timeline: scroll(). No JavaScript. Copy the complete code.
Paste your CSS and see warnings for properties that have limited browser support. Links to CanIUse. Modernize safely.
Query the permission state of camera, microphone, geolocation, and more. See the response and learn the API.
Limit browser gestures on an element: pan‑x, pinch‑zoom, manipulation. Draw on a canvas to test. Mobile dev helper.
Acquire and release locks across tabs. Prevent race conditions in IndexedDB or localStorage. Visual queue and lock state.
Test the Fullscreen API: request fullscreen on a colored div, detect changes, and copy the JavaScript boilerplate.
Create complex linear gradients with any number of color stops, exact angles, and length units. Live preview and CSS code.
Style underlines, overlines, and strike-throughs with colors, wavy styles, and thickness. Modern CSS text‑decoration.
Design a button or card that glows on hover. Adjust shadow color, spread, and transition. Copy the CSS. Rich UI.
Create a realistic letterpress (debossed) text effect using CSS text‑shadow and background. Adjust depth and light direction. Copy code.
Generate a subtle noise/grain texture as a CSS background pattern. Adjust opacity and size. For that film look.
Create a customizable checkerboard or grid background using pure CSS gradients. Adjust cell size and colors. Copy the code.
Upload two images and apply CSS blend modes (multiply, screen, overlay, etc.). See the result and copy the filter CSS. Pure frontend.
Add print styles like removing backgrounds, adding page breaks, setting margins. See print preview instantly.
Create a pure CSS countdown timer with a flipping number effect. Adjust duration and style. No JavaScript needed for display.
Create a glowing or rotating border animation around an element. Copy the CSS keyframes. Pure CSS magic.
Create a custom HTML/CSS progress bar with percentage, colors, and animation. Copy the code. Modern UI element.
Design a realistic neon sign text with multiple layers of glow. Copy the CSS and HTML. Perfect for headers.
A replica of the famous Flexbox Froggy game: solve alignment puzzles by writing CSS. Progress saved locally. Fun frontend learning.
Fetch a website's CSS and extract :root custom properties (‑‑color) to reveal its design token palette. For learning and inspiration.
Find safe mixing ratios for the classic elephant toothpaste demonstration. Volume adjustments for different container sizes.
Recreate the target CSS linear gradient by adjusting stops and colors. A unique game for front‑end developers to master gradients.
Browse and search all Font Awesome 6 icons with preview, class name, and unicode. Copy the HTML snippet. Perfect for web developers.
Create text with a gradient fill using CSS background-clip. Configure colors and direction. Copy the code. Works in modern browsers.
A complete, searchable list of all 140+ named HTML/CSS colors with their hex codes and color previews. Click to copy code. Essential web reference.
Visually experiment with Flexbox container and item properties. See the layout update in real time and copy the CSS. Learn by doing, fully interactive.
Minify JavaScript and CSS code to reduce file size for production. Remove whitespace and comments instantly. Run locally, your code stays private.