initial‑letter CSS Playground - Online Drop Caps
Style a drop cap using the initial‑letter property. Set size and sink. Modern alternative to pseudo‑element hacks.
UD5 Toolkit
Interactively explore and test the CSS user-select property.
Control how users select text — disable selection, enable one-click select-all, and more.
user-select: none.
/* Apply to target element */
-webkit-user-select: auto;
-moz-user-select: auto;
-ms-user-select: auto;
user-select: auto;
Always include vendor prefixes for maximum cross-browser compatibility.
Stop users from accidentally selecting button labels during rapid clicking.
Make code blocks fully selectable with a single click for easy copying.
Allow selection in specific child elements even when the parent disables it.
| Browser | auto | text | none | all | Prefix Needed |
|---|---|---|---|---|---|
| Chrome 54+ | ✓ | ✓ | ✓ | ✓ | -webkit- |
| Firefox 69+ | ✓ | ✓ | ✓ | ✓ | -moz- |
| Safari 16+ | ✓ | ✓ | ✓ | ✓ | -webkit- |
| Edge 79+ | ✓ | ✓ | ✓ | ✓ | -ms- (legacy) |
| iOS Safari 16+ | ✓ | ✓ | ✓ | ✓ | -webkit- |
| Android Chrome | ✓ | ✓ | ✓ | ✓ | -webkit- |
Data sourced from MDN & Can I Use. Always test in your target browsers.
user-select CSS property controls whether and how users can select text within an element. It determines if text can be highlighted, copied, or interacted with via cursor selection. This property is especially useful for improving UX on interactive elements like buttons, drag-and-drop interfaces, code snippets, and any scenario where accidental text selection could degrade the experience. Supported values include auto (browser default), text (selection enabled), none (selection disabled), and all (one-click select-all).
user-select: none; along with browser vendor prefixes for full coverage. The complete CSS rule is:-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;user-select: all makes the entire text content of an element selectable in a single action. When a user starts selecting anywhere inside the element, the browser automatically expands the selection to encompass all text within that element. This is ideal for:user-select: none — Only prevents text selection. The element still receives clicks, hover states, focus, and all other pointer interactions. It's purely about text highlighting.pointer-events: none — Makes the element completely transparent to mouse/touch events. Clicks pass through to elements behind it. The element won't receive hover, focus, or any interaction. Text inside may still be selectable if the selection starts from a neighboring element.user-select: none for buttons and UI elements. Use pointer-events: none for decorative overlays or when you need clicks to pass through.
user-select: none, all child elements inherit this behavior. To re-enable selection for specific children, apply user-select: text (with prefixes) to those child elements:
.unselectable-card { user-select: none; }
.unselectable-card .copyable-content { user-select: text; }
user-select works on mobile browsers including iOS Safari and Android Chrome. However, mobile behavior has some nuances:user-select: none prevents the text selection popup from appearing.-webkit- prefix since iOS 16.-webkit- prefix.all value on mobile: A tap or long-press within the element should select all text, though behavior may vary slightly across browsers.
-webkit-user-select: <value>; /* Chrome, Safari, Opera, Edge */
-moz-user-select: <value>; /* Firefox */
-ms-user-select: <value>; /* Internet Explorer / legacy Edge */
user-select: <value>; /* Standard syntax */
-ms- prefix is largely unnecessary for modern browsers, but it's still recommended for legacy Edge (versions 12-18) and Internet Explorer support. If you don't need IE/legacy Edge support, you can safely omit the -ms- prefix.
user-select: none only prevents visual text selection via cursor/touch. It does not prevent determined users from copying content through other methods:user-select: contain was part of an early draft of the CSS UI Level 4 specification. The idea was that selection would be confined to the element's boundary — you couldn't accidentally extend selection into neighboring elements. However, this value was removed from the specification and is not supported by any modern browser. The current valid values are auto, text, none, and all. If you encounter code using contain, it's outdated and should be replaced with one of the standard values.
user-select is a discrete property — it has distinct, non-interpolable values. You cannot smoothly transition or animate between none and text because there are no intermediate states. If you need a visual transition effect (e.g., fading in selectable text), consider animating other properties like opacity, color, or using CSS transitions on a wrapper element while toggling user-select instantly via JavaScript at the appropriate moment.
Style a drop cap using the initial‑letter property. Set size and sink. Modern alternative to pseudo‑element hacks.
Style a drop cap using the initial‑letter property. Set size and sink. Modern alternative to pseudo‑element hacks.
Design a pure CSS tooltip with custom text, position (top/bottom/left/right), and arrow. Copy the clean code.
Design a fully styled scrollbar with colors, width, and border radius. Get the CSS for Chrome and Firefox.
Test overscroll‑behavior: contain to prevent background scroll or pull‑to‑refresh. See the effect in a live demo.
Paste long text and split it into 2, 3, or 4 balanced CSS columns. Preview and copy HTML/CSS. For magazine layouts.
Select a ratio (1.25, 1.333, 1.5) and a base size to generate a full typographic scale for h1‑h6. Copy CSS variables.
Enter min and max font sizes and viewport widths to generate a perfect CSS clamp() expression. Fluid typography without media queries.
Toggle OpenType features like liga, smcp, tnum, and see the text update. Support for variable fonts. Typography nerds.
Beautify and format your CSS stylesheets instantly. Organize, minify, or prettify CSS code for better readability. Processed securely on client-side.
Explore the new two‑value display syntax like `display: block flex`. See what each inner/outer pair does visually.
Define min and max font sizes and viewport widths. Generate a complete fluid type scale using CSS clamp() for all headings.
Test the new HTML popover attribute for creating accessible tooltips, menus, and dialogs without JavaScript. Copy code snippets.
Make your JavaScript code more readable with this online beautifier. Format and indent JS automatically. Works entirely in your browser, protecting your code privacy.
Animate elements as they enter and exit the viewport using view() timeline. Parallax and reveal effects without JS.
Write expressions with clamp(), min(), max(), abs(), sign(), round() and see the computed value. Modern CSS calculations.
Emojis are scrambled; you must reorder them to form the correct phrase or title. Fun word play.
Play the classic Snake game inside your browser. Arrow keys to move, eat the apple, grow longer. High score tracked locally.
A visual guide to common copy‑editing and proofreading symbols. Click a mark to see its meaning. For writers.
Set a short timer with a themed emoji animation (e.g., pizza cooking). A playful visual countdown.
Select your racquet head size, string type, and play style to get a recommended tension range. Find your sweet spot.
Find equivalent colors across DMC, Anchor, and Madeira embroidery floss brands. Enter a code to see matches. Local reference database.
Add player names and tap +/- to track scores. Custom starting points. Works for any game.
Type JavaScript expressions and see output like a real browser console. Supports console.log, error, warn. Use for quick testing without DevTools.
Paste any JavaScript snippet and get a ready‑to‑drag bookmarklet link. Minify and encode automatically. Pure client.
Load a video file and grab any frame as a still image. Navigate frame by frame. Download the snapshot. All done on your device.
Compute Poisson probabilities for a given mean rate. Ideal for call centers, traffic analysis. Instant chart.
Generate a horizontal Code‑128 barcode from any string. Download as PNG or SVG. Works offline. For inventory.
Write a JavaScript snippet and get a ready‑to‑drag bookmarklet link. With minification and encoding. Easy browser tools.
A big button that triggers a colourful confetti cannon full‑screen. Use it to celebrate small wins. Pure joy.