@enjoys/context-engine 1.2.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/codeActions/angular.json +126 -0
- package/data/codeActions/css.json +111 -0
- package/data/codeActions/nestjs.json +124 -0
- package/data/codeActions/nextjs.json +198 -0
- package/data/codeActions/react.json +154 -0
- package/data/codeActions/shadcn.json +112 -0
- package/data/codeActions/shell.json +169 -26
- package/data/codeActions/tailwindcss.json +76 -0
- package/data/codeLens/angular.json +22 -0
- package/data/codeLens/css.json +68 -0
- package/data/codeLens/nestjs.json +21 -0
- package/data/codeLens/nextjs.json +117 -0
- package/data/codeLens/react.json +89 -0
- package/data/codeLens/shadcn.json +89 -0
- package/data/codeLens/shell.json +59 -17
- package/data/codeLens/tailwindcss.json +103 -0
- package/data/color/angular.json +21 -0
- package/data/color/css.json +124 -0
- package/data/color/nestjs.json +18 -0
- package/data/color/nextjs.json +22 -0
- package/data/color/react.json +93 -0
- package/data/color/shadcn.json +66 -0
- package/data/color/shell.json +106 -80
- package/data/color/tailwindcss.json +53 -0
- package/data/commands/angular.json +312 -0
- package/data/commands/css.json +41 -0
- package/data/commands/manifest.json +734 -727
- package/data/commands/nestjs.json +273 -0
- package/data/commands/nextjs.json +123 -0
- package/data/commands/react.json +210 -0
- package/data/commands/shadcn.json +410 -0
- package/data/commands/shell.json +571 -41
- package/data/commands/tailwindcss.json +53 -0
- package/data/completion/angular.json +1490 -0
- package/data/completion/css.json +1176 -0
- package/data/completion/javascript.json +27 -0
- package/data/completion/nestjs.json +1454 -0
- package/data/completion/nextjs.json +1373 -0
- package/data/completion/react.json +1319 -0
- package/data/completion/redis-cli.json +1 -1
- package/data/completion/shadcn.json +1202 -0
- package/data/completion/shell.json +2446 -510
- package/data/completion/tailwindcss.json +284 -0
- package/data/completion/typescript.json +27 -0
- package/data/declaration/angular.json +46 -0
- package/data/declaration/css.json +59 -0
- package/data/declaration/nestjs.json +47 -0
- package/data/declaration/nextjs.json +274 -0
- package/data/declaration/react.json +199 -0
- package/data/declaration/shadcn.json +211 -0
- package/data/declaration/shell.json +343 -24
- package/data/declaration/tailwindcss.json +137 -0
- package/data/definition/angular.json +670 -0
- package/data/definition/css.json +115 -0
- package/data/definition/nestjs.json +684 -0
- package/data/definition/nextjs.json +439 -0
- package/data/definition/react.json +397 -0
- package/data/definition/redis-cli.json +1 -1
- package/data/definition/shadcn.json +99 -0
- package/data/definition/shell.json +820 -0
- package/data/definition/tailwindcss.json +115 -0
- package/data/documentHighlight/angular.json +414 -0
- package/data/documentHighlight/css.json +125 -0
- package/data/documentHighlight/nestjs.json +115 -0
- package/data/documentHighlight/nextjs.json +212 -0
- package/data/documentHighlight/react.json +119 -0
- package/data/documentHighlight/shadcn.json +168 -0
- package/data/documentHighlight/shell.json +664 -334
- package/data/documentHighlight/tailwindcss.json +160 -0
- package/data/documentRangeFormatting/angular.json +45 -0
- package/data/documentRangeFormatting/css.json +101 -0
- package/data/documentRangeFormatting/nestjs.json +17 -0
- package/data/documentRangeFormatting/nextjs.json +17 -0
- package/data/documentRangeFormatting/react.json +78 -0
- package/data/documentRangeFormatting/shadcn.json +45 -0
- package/data/documentRangeFormatting/shell.json +120 -53
- package/data/documentRangeFormatting/tailwindcss.json +55 -0
- package/data/documentSymbol/angular.json +180 -0
- package/data/documentSymbol/css.json +96 -0
- package/data/documentSymbol/nestjs.json +152 -0
- package/data/documentSymbol/nextjs.json +159 -0
- package/data/documentSymbol/react.json +145 -0
- package/data/documentSymbol/shadcn.json +131 -0
- package/data/documentSymbol/shell.json +166 -26
- package/data/documentSymbol/tailwindcss.json +110 -0
- package/data/foldingRange/angular.json +99 -0
- package/data/foldingRange/css.json +66 -0
- package/data/foldingRange/nestjs.json +26 -0
- package/data/foldingRange/nextjs.json +26 -0
- package/data/foldingRange/react.json +120 -0
- package/data/foldingRange/shadcn.json +93 -0
- package/data/foldingRange/shell.json +106 -46
- package/data/foldingRange/tailwindcss.json +60 -0
- package/data/formatting/angular.json +21 -0
- package/data/formatting/css.json +73 -0
- package/data/formatting/nestjs.json +23 -0
- package/data/formatting/nextjs.json +23 -0
- package/data/formatting/react.json +71 -0
- package/data/formatting/shadcn.json +61 -0
- package/data/formatting/shell.json +103 -19
- package/data/formatting/tailwindcss.json +48 -0
- package/data/hover/angular.json +455 -0
- package/data/hover/css.json +300 -0
- package/data/hover/nestjs.json +296 -0
- package/data/hover/nextjs.json +305 -0
- package/data/hover/react.json +173 -0
- package/data/hover/redis-cli.json +1 -1
- package/data/hover/shadcn.json +450 -0
- package/data/hover/shell.json +684 -75
- package/data/hover/tailwindcss.json +968 -0
- package/data/implementation/angular.json +22 -0
- package/data/implementation/css.json +65 -0
- package/data/implementation/nestjs.json +24 -0
- package/data/implementation/nextjs.json +137 -0
- package/data/implementation/react.json +125 -0
- package/data/implementation/shadcn.json +89 -0
- package/data/implementation/shell.json +59 -3
- package/data/implementation/tailwindcss.json +59 -0
- package/data/inlayHints/angular.json +24 -0
- package/data/inlayHints/css.json +87 -0
- package/data/inlayHints/nestjs.json +24 -0
- package/data/inlayHints/nextjs.json +143 -0
- package/data/inlayHints/react.json +177 -0
- package/data/inlayHints/shadcn.json +109 -0
- package/data/inlayHints/shell.json +223 -35
- package/data/inlayHints/tailwindcss.json +111 -0
- package/data/inlineCompletions/angular.json +135 -0
- package/data/inlineCompletions/css.json +125 -0
- package/data/inlineCompletions/javascript.json +12 -0
- package/data/inlineCompletions/nestjs.json +25 -0
- package/data/inlineCompletions/nextjs.json +179 -0
- package/data/inlineCompletions/react.json +203 -0
- package/data/inlineCompletions/shadcn.json +115 -0
- package/data/inlineCompletions/shell.json +185 -35
- package/data/inlineCompletions/tailwindcss.json +411 -0
- package/data/inlineCompletions/typescript.json +12 -0
- package/data/linkedEditingRange/angular.json +23 -0
- package/data/linkedEditingRange/css.json +40 -0
- package/data/linkedEditingRange/nestjs.json +10 -0
- package/data/linkedEditingRange/nextjs.json +11 -0
- package/data/linkedEditingRange/react.json +75 -0
- package/data/linkedEditingRange/shadcn.json +23 -0
- package/data/linkedEditingRange/shell.json +25 -25
- package/data/linkedEditingRange/tailwindcss.json +30 -0
- package/data/links/angular.json +95 -0
- package/data/links/css.json +55 -0
- package/data/links/nestjs.json +130 -0
- package/data/links/nextjs.json +91 -0
- package/data/links/react.json +75 -0
- package/data/links/shadcn.json +98 -0
- package/data/links/shell.json +56 -0
- package/data/links/tailwindcss.json +65 -0
- package/data/manifest.json +399 -150
- package/data/onTypeFormatting/angular.json +14 -0
- package/data/onTypeFormatting/css.json +82 -0
- package/data/onTypeFormatting/nestjs.json +16 -0
- package/data/onTypeFormatting/nextjs.json +17 -0
- package/data/onTypeFormatting/react.json +127 -0
- package/data/onTypeFormatting/shadcn.json +54 -0
- package/data/onTypeFormatting/shell.json +72 -68
- package/data/onTypeFormatting/tailwindcss.json +63 -0
- package/data/rangeSemanticTokens/angular.json +140 -0
- package/data/rangeSemanticTokens/css.json +125 -0
- package/data/rangeSemanticTokens/nestjs.json +27 -0
- package/data/rangeSemanticTokens/nextjs.json +28 -0
- package/data/rangeSemanticTokens/react.json +216 -0
- package/data/rangeSemanticTokens/shadcn.json +140 -0
- package/data/rangeSemanticTokens/shell.json +247 -69
- package/data/rangeSemanticTokens/tailwindcss.json +186 -0
- package/data/references/angular.json +26 -0
- package/data/references/css.json +65 -0
- package/data/references/nestjs.json +24 -0
- package/data/references/nextjs.json +178 -0
- package/data/references/react.json +192 -0
- package/data/references/shadcn.json +101 -0
- package/data/references/shell.json +323 -92
- package/data/references/tailwindcss.json +125 -0
- package/data/rename/angular.json +131 -0
- package/data/rename/css.json +91 -0
- package/data/rename/nestjs.json +32 -0
- package/data/rename/nextjs.json +31 -0
- package/data/rename/react.json +88 -0
- package/data/rename/shadcn.json +79 -0
- package/data/rename/shell.json +101 -31
- package/data/rename/tailwindcss.json +58 -0
- package/data/selectionRange/angular.json +95 -0
- package/data/selectionRange/css.json +55 -0
- package/data/selectionRange/nestjs.json +21 -0
- package/data/selectionRange/nextjs.json +22 -0
- package/data/selectionRange/react.json +87 -0
- package/data/selectionRange/shadcn.json +89 -0
- package/data/selectionRange/shell.json +65 -35
- package/data/selectionRange/tailwindcss.json +35 -0
- package/data/semanticTokens/angular.json +198 -0
- package/data/semanticTokens/css.json +107 -0
- package/data/semanticTokens/nestjs.json +35 -0
- package/data/semanticTokens/nextjs.json +38 -0
- package/data/semanticTokens/react.json +215 -0
- package/data/semanticTokens/shadcn.json +180 -0
- package/data/semanticTokens/shell.json +238 -65
- package/data/semanticTokens/tailwindcss.json +161 -0
- package/data/signatureHelp/angular.json +182 -0
- package/data/signatureHelp/css.json +137 -0
- package/data/signatureHelp/nestjs.json +128 -0
- package/data/signatureHelp/nextjs.json +127 -0
- package/data/signatureHelp/react.json +281 -0
- package/data/signatureHelp/shadcn.json +237 -0
- package/data/signatureHelp/shell.json +797 -104
- package/data/signatureHelp/tailwindcss.json +64 -0
- package/data/typeDefinition/angular.json +362 -0
- package/data/typeDefinition/css.json +53 -0
- package/data/typeDefinition/nestjs.json +334 -0
- package/data/typeDefinition/nextjs.json +285 -0
- package/data/typeDefinition/react.json +236 -0
- package/data/typeDefinition/shadcn.json +292 -0
- package/data/typeDefinition/shell.json +104 -40
- package/data/typeDefinition/tailwindcss.json +47 -0
- package/package.json +1 -1
- package/data/codeActions/bash.json +0 -169
- package/data/codeActions/zsh.json +0 -49
- package/data/codeLens/bash.json +0 -75
- package/data/codeLens/zsh.json +0 -19
- package/data/color/bash.json +0 -100
- package/data/color/zsh.json +0 -80
- package/data/commands/bash.json +0 -102
- package/data/commands/zsh.json +0 -166
- package/data/completion/bash.json +0 -1184
- package/data/completion/zsh.json +0 -973
- package/data/declaration/bash.json +0 -301
- package/data/declaration/zsh.json +0 -205
- package/data/definition/bash.json +0 -565
- package/data/definition/zsh.json +0 -350
- package/data/documentHighlight/bash.json +0 -393
- package/data/documentHighlight/zsh.json +0 -266
- package/data/documentRangeFormatting/bash.json +0 -41
- package/data/documentRangeFormatting/zsh.json +0 -59
- package/data/documentSymbol/bash.json +0 -124
- package/data/documentSymbol/zsh.json +0 -26
- package/data/foldingRange/bash.json +0 -76
- package/data/foldingRange/zsh.json +0 -46
- package/data/formatting/bash.json +0 -88
- package/data/formatting/zsh.json +0 -28
- package/data/hover/bash.json +0 -579
- package/data/hover/zsh.json +0 -96
- package/data/implementation/bash.json +0 -44
- package/data/implementation/zsh.json +0 -41
- package/data/inlayHints/bash.json +0 -207
- package/data/inlayHints/zsh.json +0 -43
- package/data/inlineCompletions/bash.json +0 -155
- package/data/inlineCompletions/zsh.json +0 -17
- package/data/linkedEditingRange/bash.json +0 -25
- package/data/linkedEditingRange/zsh.json +0 -25
- package/data/links/bash.json +0 -56
- package/data/links/zsh.json +0 -15
- package/data/onTypeFormatting/bash.json +0 -68
- package/data/onTypeFormatting/zsh.json +0 -68
- package/data/rangeSemanticTokens/bash.json +0 -90
- package/data/rangeSemanticTokens/zsh.json +0 -76
- package/data/references/bash.json +0 -221
- package/data/references/zsh.json +0 -166
- package/data/rename/bash.json +0 -37
- package/data/rename/zsh.json +0 -31
- package/data/selectionRange/bash.json +0 -35
- package/data/selectionRange/zsh.json +0 -35
- package/data/semanticTokens/bash.json +0 -71
- package/data/semanticTokens/zsh.json +0 -71
- package/data/signatureHelp/bash.json +0 -111
- package/data/signatureHelp/zsh.json +0 -118
- package/data/typeDefinition/bash.json +0 -95
- package/data/typeDefinition/zsh.json +0 -40
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "css",
|
|
3
|
+
"hovers": {
|
|
4
|
+
"display": {
|
|
5
|
+
"contents": [{ "value": "```css\ndisplay: block | inline | inline-block | flex | grid | none | contents | flow-root | inline-flex | inline-grid | table | list-item;\n```\n\nSets the display type of an element.\n\n- `block` — takes full width, stacks vertically\n- `inline` — flows with text, no width/height\n- `inline-block` — inline flow with block properties\n- `flex` — enables flexbox layout\n- `grid` — enables grid layout\n- `none` — removes from rendering\n- `contents` — element box replaced by children\n- `flow-root` — creates new block formatting context" }]
|
|
6
|
+
},
|
|
7
|
+
"position": {
|
|
8
|
+
"contents": [{ "value": "```css\nposition: static | relative | absolute | fixed | sticky;\n```\n\nSets how an element is positioned.\n\n- `static` — default; normal flow\n- `relative` — offset from normal position; creates positioning context\n- `absolute` — removed from flow; relative to nearest positioned ancestor\n- `fixed` — relative to viewport; stays in place on scroll\n- `sticky` — acts as `relative` until a scroll threshold, then `fixed`\n\nWorks with `top`, `right`, `bottom`, `left`, `inset` and `z-index`." }]
|
|
9
|
+
},
|
|
10
|
+
"flex-direction": {
|
|
11
|
+
"contents": [{ "value": "```css\nflex-direction: row | row-reverse | column | column-reverse;\n```\n\nDefines the main axis direction for a flex container.\n\n- `row` (default) — left to right\n- `row-reverse` — right to left\n- `column` — top to bottom\n- `column-reverse` — bottom to top\n\nChanging direction also swaps `justify-content` and `align-items` axes." }]
|
|
12
|
+
},
|
|
13
|
+
"justify-content": {
|
|
14
|
+
"contents": [{ "value": "```css\njustify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;\n```\n\nDistributes space along the main axis (flex) or inline axis (grid).\n\n- `flex-start` — items packed to start\n- `center` — items centered\n- `space-between` — equal space between items, no edge space\n- `space-around` — equal space around items\n- `space-evenly` — equal space between and around items" }]
|
|
15
|
+
},
|
|
16
|
+
"align-items": {
|
|
17
|
+
"contents": [{ "value": "```css\nalign-items: stretch | flex-start | flex-end | center | baseline;\n```\n\nAligns flex/grid items along the cross axis.\n\n- `stretch` (default) — fill the container\n- `center` — centered in cross axis\n- `flex-start` — aligned to start of cross axis\n- `baseline` — aligned by text baselines" }]
|
|
18
|
+
},
|
|
19
|
+
"grid-template-columns": {
|
|
20
|
+
"contents": [{ "value": "```css\ngrid-template-columns: <track-size>+ | repeat(<count>, <track-size>) | minmax(<min>, <max>);\n```\n\nDefines column sizes in a grid container.\n\nExamples:\n```css\ngrid-template-columns: 200px 1fr 2fr;\ngrid-template-columns: repeat(3, 1fr);\ngrid-template-columns: repeat(auto-fill, minmax(250px, 1fr));\ngrid-template-columns: [start] 1fr [center] 2fr [end];\n```\n\nUnits: `fr` (fraction), `px`, `%`, `em`, `rem`, `auto`, `min-content`, `max-content`, `fit-content()`." }]
|
|
21
|
+
},
|
|
22
|
+
"margin": {
|
|
23
|
+
"contents": [{ "value": "```css\nmargin: <length> | <percentage> | auto;\n/* 1-4 values: top right bottom left */\n```\n\nSets the margin area around an element.\n\n- 1 value: all sides\n- 2 values: vertical | horizontal\n- 3 values: top | horizontal | bottom\n- 4 values: top | right | bottom | left\n\n`margin: 0 auto;` centers a block element horizontally.\nMargins can collapse vertically between adjacent block elements." }]
|
|
24
|
+
},
|
|
25
|
+
"padding": {
|
|
26
|
+
"contents": [{ "value": "```css\npadding: <length> | <percentage>;\n/* 1-4 values: top right bottom left */\n```\n\nSets the padding area between content and border.\n\nSame shorthand pattern as `margin`. Cannot be negative.\nPercentages are relative to the **width** of the containing block (even for top/bottom)." }]
|
|
27
|
+
},
|
|
28
|
+
"box-sizing": {
|
|
29
|
+
"contents": [{ "value": "```css\nbox-sizing: content-box | border-box;\n```\n\n- `content-box` (default) — `width`/`height` apply to content only. Padding and border are added on top.\n- `border-box` — `width`/`height` include content, padding, and border.\n\nBest practice:\n```css\n*, *::before, *::after {\n box-sizing: border-box;\n}\n```" }]
|
|
30
|
+
},
|
|
31
|
+
"background": {
|
|
32
|
+
"contents": [{ "value": "```css\nbackground: <color> <image> <position>/<size> <repeat> <origin> <clip> <attachment>;\n```\n\nShorthand for all background properties. Supports multiple backgrounds separated by commas.\n\nExamples:\n```css\nbackground: #f5f5f5;\nbackground: url('img.png') no-repeat center/cover;\nbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n```" }]
|
|
33
|
+
},
|
|
34
|
+
"border-radius": {
|
|
35
|
+
"contents": [{ "value": "```css\nborder-radius: <length-percentage>{1,4} [ / <length-percentage>{1,4} ]?;\n```\n\nRounds the corners of an element's border box.\n\n- 1 value: all corners\n- 2 values: top-left+bottom-right | top-right+bottom-left\n- 4 values: top-left | top-right | bottom-right | bottom-left\n\nOptional `/` syntax for elliptical radii.\n\n`border-radius: 50%;` creates a circle on equal-dimension elements." }]
|
|
36
|
+
},
|
|
37
|
+
"transition": {
|
|
38
|
+
"contents": [{ "value": "```css\ntransition: <property> <duration> <timing-function>? <delay>?;\n```\n\nEnables smooth property changes over time.\n\nExamples:\n```css\ntransition: all 0.3s ease;\ntransition: opacity 200ms, transform 300ms ease-out;\ntransition: background-color 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n```\n\nTiming functions: `ease`, `linear`, `ease-in`, `ease-out`, `ease-in-out`, `cubic-bezier()`, `steps()`.\n\nNote: Not all properties are animatable (e.g., `display` is not)." }]
|
|
39
|
+
},
|
|
40
|
+
"animation": {
|
|
41
|
+
"contents": [{ "value": "```css\nanimation: <name> <duration> <timing-function>? <delay>? <count>? <direction>? <fill-mode>? <play-state>?;\n```\n\nExamples:\n```css\nanimation: fadeIn 0.3s ease-in-out;\nanimation: slide 1s ease infinite alternate;\nanimation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n```\n\n`fill-mode`: `none`, `forwards` (retain end state), `backwards` (apply start state during delay), `both`.\n`direction`: `normal`, `reverse`, `alternate`, `alternate-reverse`." }]
|
|
42
|
+
},
|
|
43
|
+
"transform": {
|
|
44
|
+
"contents": [{ "value": "```css\ntransform: <transform-function>+;\n```\n\n2D functions: `translate(x, y)`, `rotate(angle)`, `scale(x, y)`, `skew(x, y)`, `matrix()`.\n3D functions: `translate3d()`, `rotate3d()`, `scale3d()`, `perspective()`.\n\nExamples:\n```css\ntransform: translateX(-50%) translateY(-50%);\ntransform: rotate(45deg) scale(1.2);\ntransform: perspective(500px) rotateY(30deg);\n```\n\nMultiple transforms are applied right-to-left. Creates a new stacking context." }]
|
|
45
|
+
},
|
|
46
|
+
"z-index": {
|
|
47
|
+
"contents": [{ "value": "```css\nz-index: auto | <integer>;\n```\n\nSets the stacking order for positioned elements (`position` not `static`).\n\nHigher values appear in front. Negative values are allowed.\nCreates a new stacking context when applied to a positioned element.\n\nCommon convention: use increments of 10 or 100 for maintainability." }]
|
|
48
|
+
},
|
|
49
|
+
"var()": {
|
|
50
|
+
"contents": [{ "value": "```css\nvar(--custom-property, fallback-value)\n```\n\nAccesses CSS custom properties (CSS variables).\n\nDefined with `--` prefix:\n```css\n:root {\n --primary: #3490dc;\n --spacing: 1rem;\n}\n.btn {\n color: var(--primary);\n padding: var(--spacing, 0.5rem);\n}\n```\n\nCustom properties are inherited. Fallback is used when the property is undefined. Fallbacks can be nested: `var(--a, var(--b, #000))`." }]
|
|
51
|
+
},
|
|
52
|
+
"@media": {
|
|
53
|
+
"contents": [{ "value": "```css\n@media <type>? [and <feature>]* { ... }\n```\n\nConditional style rules based on device/viewport characteristics.\n\nCommon features:\n- `width`, `min-width`, `max-width`\n- `height`, `min-height`, `max-height`\n- `orientation: portrait | landscape`\n- `prefers-color-scheme: light | dark`\n- `prefers-reduced-motion: reduce | no-preference`\n- `hover: hover | none`\n- `pointer: fine | coarse | none`\n\nRange syntax (Level 4): `@media (400px <= width <= 800px) { }`" }]
|
|
54
|
+
},
|
|
55
|
+
"@keyframes": {
|
|
56
|
+
"contents": [{ "value": "```css\n@keyframes <name> {\n from { /* 0% */ }\n <percentage> { /* intermediate */ }\n to { /* 100% */ }\n}\n```\n\nDefines animation keyframes. Referenced by `animation-name`.\n\nExample:\n```css\n@keyframes slideIn {\n 0% { transform: translateX(-100%); opacity: 0; }\n 100% { transform: translateX(0); opacity: 1; }\n}\n```\n\nMultiple keyframes can share percentages: `0%, 100% { opacity: 1; }`." }]
|
|
57
|
+
},
|
|
58
|
+
"calc()": {
|
|
59
|
+
"contents": [{ "value": "```css\ncalc(<expression>)\n```\n\nPerforms math with mixed CSS units.\n\nOperators: `+`, `-`, `*`, `/`\n\nExamples:\n```css\nwidth: calc(100% - 2rem);\nfont-size: calc(1rem + 0.5vw);\nheight: calc(100vh - var(--header-height));\nmargin: calc(var(--spacing) * 2);\n```\n\nNote: `+` and `-` require spaces around them. `*` and `/` do not.\nCan be nested: `calc(calc(100% - 1rem) / 2)`." }]
|
|
60
|
+
},
|
|
61
|
+
"clamp()": {
|
|
62
|
+
"contents": [{ "value": "```css\nclamp(MIN, VAL, MAX)\n```\n\nReturns the middle value, clamped between MIN and MAX.\n\nEquivalent to `max(MIN, min(VAL, MAX))`.\n\nExample:\n```css\nfont-size: clamp(1rem, 2.5vw, 2rem);\nwidth: clamp(200px, 50%, 600px);\n```\n\nIdeal for fluid typography and responsive sizing without media queries." }]
|
|
63
|
+
},
|
|
64
|
+
"container-type": {
|
|
65
|
+
"contents": [{ "value": "```css\ncontainer-type: normal | size | inline-size;\n```\n\nEstablishes an element as a containment context for container queries.\n\n- `normal` — no containment (default)\n- `inline-size` — containment on the inline axis only\n- `size` — containment on both axes\n\nUsed with `@container` queries:\n```css\n.card { container-type: inline-size; }\n@container (min-width: 400px) {\n .card-body { display: flex; }\n}\n```" }]
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
"width": {
|
|
69
|
+
"contents": [{ "value": "```css\nwidth: <length> | <percentage> | auto | min-content | max-content | fit-content(<length>);\n```\n\nSets the width of an element's content box (or border box with `box-sizing: border-box`).\n\n- `auto` — determined by content and containment\n- `min-content` — shrink to narrowest content\n- `max-content` — expand to widest content\n- `fit-content()` — clamp between min-content and max-content" }]
|
|
70
|
+
},
|
|
71
|
+
"height": {
|
|
72
|
+
"contents": [{ "value": "```css\nheight: <length> | <percentage> | auto | min-content | max-content | fit-content(<length>);\n```\n\nSets the height of the element. Percentages resolve against the containing block's height.\n\n`height: 100vh` fills the full viewport height.\n`height: 100dvh` uses dynamic viewport height (adjusts for mobile browser chrome)." }]
|
|
73
|
+
},
|
|
74
|
+
"min-width": {
|
|
75
|
+
"contents": [{ "value": "```css\nmin-width: <length> | <percentage> | auto | min-content | max-content | fit-content(<length>);\n```\n\nSets the minimum width. The element will never be narrower than this value.\n\nOverrides `width` and `max-width` when they would result in a smaller value." }]
|
|
76
|
+
},
|
|
77
|
+
"max-width": {
|
|
78
|
+
"contents": [{ "value": "```css\nmax-width: <length> | <percentage> | none | min-content | max-content | fit-content(<length>);\n```\n\nSets the maximum width. The element will never be wider than this value.\n\nOverrides `width` but is overridden by `min-width`. Common pattern: `max-width: 1200px; margin: 0 auto;` for centered layouts." }]
|
|
79
|
+
},
|
|
80
|
+
"min-height": {
|
|
81
|
+
"contents": [{ "value": "```css\nmin-height: <length> | <percentage> | auto | min-content | max-content | fit-content(<length>);\n```\n\nSets the minimum height. Useful for ensuring content areas fill available space: `min-height: 100vh;` for full-page layouts." }]
|
|
82
|
+
},
|
|
83
|
+
"max-height": {
|
|
84
|
+
"contents": [{ "value": "```css\nmax-height: <length> | <percentage> | none | min-content | max-content;\n```\n\nSets the maximum height. Commonly used with `overflow: auto` for scrollable regions." }]
|
|
85
|
+
},
|
|
86
|
+
"top": {
|
|
87
|
+
"contents": [{ "value": "```css\ntop: <length> | <percentage> | auto;\n```\n\nSpecifies the vertical position of a positioned element. Behavior depends on `position`:\n- `relative` — offsets from normal position\n- `absolute` — distance from top edge of containing block\n- `fixed` — distance from top of viewport\n- `sticky` — threshold for sticking" }]
|
|
88
|
+
},
|
|
89
|
+
"right": {
|
|
90
|
+
"contents": [{ "value": "```css\nright: <length> | <percentage> | auto;\n```\n\nSpecifies the horizontal position from the right edge of a positioned element's containing block." }]
|
|
91
|
+
},
|
|
92
|
+
"bottom": {
|
|
93
|
+
"contents": [{ "value": "```css\nbottom: <length> | <percentage> | auto;\n```\n\nSpecifies the vertical position from the bottom edge of a positioned element's containing block." }]
|
|
94
|
+
},
|
|
95
|
+
"left": {
|
|
96
|
+
"contents": [{ "value": "```css\nleft: <length> | <percentage> | auto;\n```\n\nSpecifies the horizontal position from the left edge of a positioned element's containing block." }]
|
|
97
|
+
},
|
|
98
|
+
"inset": {
|
|
99
|
+
"contents": [{ "value": "```css\ninset: <length> | <percentage> | auto;\n/* Shorthand for: top right bottom left */\n```\n\nShorthand for `top`, `right`, `bottom`, `left`. Follows the same 1-to-4 value pattern as `margin`.\n\n`inset: 0;` fills the containing block completely (equivalent to `top: 0; right: 0; bottom: 0; left: 0;`)." }]
|
|
100
|
+
},
|
|
101
|
+
"flex-wrap": {
|
|
102
|
+
"contents": [{ "value": "```css\nflex-wrap: nowrap | wrap | wrap-reverse;\n```\n\n- `nowrap` (default) — all items on one line, may overflow\n- `wrap` — items wrap to new lines from top to bottom\n- `wrap-reverse` — items wrap from bottom to top\n\nWhen wrapping, `align-content` controls spacing between lines." }]
|
|
103
|
+
},
|
|
104
|
+
"flex-grow": {
|
|
105
|
+
"contents": [{ "value": "```css\nflex-grow: <number>;\n```\n\nSpecifies how much a flex item grows relative to siblings when positive free space is distributed.\n\n- `0` (default) — don't grow\n- `1` — grow equally\n- `2` — grow twice as much as items with `flex-grow: 1`" }]
|
|
106
|
+
},
|
|
107
|
+
"flex-shrink": {
|
|
108
|
+
"contents": [{ "value": "```css\nflex-shrink: <number>;\n```\n\nSpecifies how much a flex item shrinks relative to siblings when there isn't enough space.\n\n- `1` (default) — shrink equally\n- `0` — don't shrink (useful for fixed-width sidebars)" }]
|
|
109
|
+
},
|
|
110
|
+
"flex-basis": {
|
|
111
|
+
"contents": [{ "value": "```css\nflex-basis: <length> | <percentage> | auto | content;\n```\n\nSets the initial main size of a flex item before free space is distributed.\n\n- `auto` — uses `width`/`height` value\n- `0` — ignores content size, distributes all space via `flex-grow`\n- A specific length — sets an explicit starting size" }]
|
|
112
|
+
},
|
|
113
|
+
"align-content": {
|
|
114
|
+
"contents": [{ "value": "```css\nalign-content: stretch | flex-start | flex-end | center | space-between | space-around | space-evenly;\n```\n\nDistributes space between and around flex/grid lines along the cross axis.\n\nOnly applies when there are multiple lines (flex-wrap: wrap or grid with multiple rows)." }]
|
|
115
|
+
},
|
|
116
|
+
"align-self": {
|
|
117
|
+
"contents": [{ "value": "```css\nalign-self: auto | flex-start | flex-end | center | baseline | stretch;\n```\n\nOverrides `align-items` for a specific flex/grid item. Aligns this item independently on the cross axis." }]
|
|
118
|
+
},
|
|
119
|
+
"gap": {
|
|
120
|
+
"contents": [{ "value": "```css\ngap: <row-gap> <column-gap>?;\n```\n\nShorthand for `row-gap` and `column-gap`. Sets gutters between flex/grid items.\n\n- `gap: 1rem;` — uniform gap\n- `gap: 1rem 2rem;` — row gap | column gap\n\nReplaces the older `grid-gap` property. Works in both Flexbox and Grid." }]
|
|
121
|
+
},
|
|
122
|
+
"grid-template-rows": {
|
|
123
|
+
"contents": [{ "value": "```css\ngrid-template-rows: <track-size>+ | repeat(<count>, <track-size>) | auto;\n```\n\nDefines row sizes in a grid container.\n\nExamples:\n```css\ngrid-template-rows: auto 1fr auto;\ngrid-template-rows: repeat(3, minmax(100px, auto));\ngrid-template-rows: [header] auto [content] 1fr [footer] auto;\n```" }]
|
|
124
|
+
},
|
|
125
|
+
"grid-column": {
|
|
126
|
+
"contents": [{ "value": "```css\ngrid-column: <start-line> / <end-line>;\n```\n\nShorthand for `grid-column-start` / `grid-column-end`. Places a grid item horizontally.\n\nExamples:\n- `grid-column: 1 / 3;` — spans columns 1 and 2\n- `grid-column: 1 / -1;` — spans all columns\n- `grid-column: span 2;` — spans 2 columns from auto-placement" }]
|
|
127
|
+
},
|
|
128
|
+
"grid-row": {
|
|
129
|
+
"contents": [{ "value": "```css\ngrid-row: <start-line> / <end-line>;\n```\n\nShorthand for `grid-row-start` / `grid-row-end`. Places a grid item vertically.\n\nExamples:\n- `grid-row: 1 / 3;` — spans rows 1 and 2\n- `grid-row: span 2;` — spans 2 rows" }]
|
|
130
|
+
},
|
|
131
|
+
"grid-auto-flow": {
|
|
132
|
+
"contents": [{ "value": "```css\ngrid-auto-flow: row | column | dense | row dense | column dense;\n```\n\nControls how auto-placed items flow into the grid.\n\n- `row` (default) — fill rows first\n- `column` — fill columns first\n- `dense` — fill gaps in earlier cells (may reorder visually)" }]
|
|
133
|
+
},
|
|
134
|
+
"place-items": {
|
|
135
|
+
"contents": [{ "value": "```css\nplace-items: <align-items> <justify-items>?;\n```\n\nShorthand for `align-items` and `justify-items`. Centers grid/flex items:\n\n`place-items: center;` centers items both horizontally and vertically." }]
|
|
136
|
+
},
|
|
137
|
+
"place-content": {
|
|
138
|
+
"contents": [{ "value": "```css\nplace-content: <align-content> <justify-content>?;\n```\n\nShorthand for `align-content` and `justify-content`. Distributes space in both axes at once." }]
|
|
139
|
+
},
|
|
140
|
+
|
|
141
|
+
"font-size": {
|
|
142
|
+
"contents": [{ "value": "```css\nfont-size: <absolute> | <relative> | <length> | <percentage>;\n```\n\nAbsolute keywords: `xx-small`, `x-small`, `small`, `medium`, `large`, `x-large`, `xx-large`.\nRelative: `smaller`, `larger`.\n\nBest practice for responsive text: `font-size: clamp(1rem, 2.5vw, 2rem);`\n\n`em` is relative to parent font-size. `rem` is relative to root (`<html>`) font-size." }]
|
|
143
|
+
},
|
|
144
|
+
"font-weight": {
|
|
145
|
+
"contents": [{ "value": "```css\nfont-weight: normal | bold | bolder | lighter | 100-900;\n```\n\nNumeric scale (100–900 in increments of 100):\n- 100: Thin\n- 300: Light\n- 400: Normal (= `normal`)\n- 500: Medium\n- 700: Bold (= `bold`)\n- 900: Black\n\nVariable fonts support any integer in the 1–1000 range." }]
|
|
146
|
+
},
|
|
147
|
+
"font-family": {
|
|
148
|
+
"contents": [{ "value": "```css\nfont-family: <family-name> | <generic-family>;\n```\n\nGeneric families: `serif`, `sans-serif`, `monospace`, `cursive`, `fantasy`, `system-ui`, `ui-serif`, `ui-sans-serif`, `ui-monospace`.\n\nAlways end with a generic fallback:\n```css\nfont-family: 'Inter', 'Segoe UI', system-ui, sans-serif;\n```\n\nQuote family names containing spaces or special characters." }]
|
|
149
|
+
},
|
|
150
|
+
"line-height": {
|
|
151
|
+
"contents": [{ "value": "```css\nline-height: normal | <number> | <length> | <percentage>;\n```\n\nSets the height of a line box. Unitless values (like `1.5`) are recommended as they scale with font-size.\n\n- `normal` — browser default (~1.2)\n- `1.5` — 1.5× the font-size\n- `24px` — fixed line height\n\nAffects vertical rhythm and readability. WCAG recommends at least 1.5 for body text." }]
|
|
152
|
+
},
|
|
153
|
+
"letter-spacing": {
|
|
154
|
+
"contents": [{ "value": "```css\nletter-spacing: normal | <length>;\n```\n\nSets the space between characters. Negative values tighten text.\n\nCommon usage:\n- Headings: `letter-spacing: -0.025em;` (tighter)\n- Uppercase text: `letter-spacing: 0.05em;` (wider)\n- Body text: `letter-spacing: normal;`" }]
|
|
155
|
+
},
|
|
156
|
+
"text-align": {
|
|
157
|
+
"contents": [{ "value": "```css\ntext-align: left | right | center | justify | start | end;\n```\n\nAligns inline content within a block element.\n\n- `start`/`end` — logical values that respect writing direction (RTL-safe)\n- `justify` — stretches lines to fill width; last line is left-aligned" }]
|
|
158
|
+
},
|
|
159
|
+
"text-decoration": {
|
|
160
|
+
"contents": [{ "value": "```css\ntext-decoration: <line> <style>? <color>? <thickness>?;\n```\n\nShorthand for `text-decoration-line`, `text-decoration-style`, `text-decoration-color`, `text-decoration-thickness`.\n\nLines: `none`, `underline`, `overline`, `line-through`.\nStyles: `solid`, `double`, `dotted`, `dashed`, `wavy`.\n\n`text-underline-offset` adjusts position of underlines." }]
|
|
161
|
+
},
|
|
162
|
+
"text-transform": {
|
|
163
|
+
"contents": [{ "value": "```css\ntext-transform: none | capitalize | uppercase | lowercase | full-width;\n```\n\n- `capitalize` — first letter of each word uppercased\n- `uppercase` — all characters uppercased\n- `lowercase` — all characters lowercased\n\nNote: Doesn't change the actual content, only the visual presentation." }]
|
|
164
|
+
},
|
|
165
|
+
"text-overflow": {
|
|
166
|
+
"contents": [{ "value": "```css\ntext-overflow: clip | ellipsis;\n```\n\nSpecifies how overflowed text that is not displayed is signaled.\n\nRequires `overflow: hidden` and `white-space: nowrap` to take effect.\n\nClassic truncation pattern:\n```css\noverflow: hidden;\nwhite-space: nowrap;\ntext-overflow: ellipsis;\n```" }]
|
|
167
|
+
},
|
|
168
|
+
"white-space": {
|
|
169
|
+
"contents": [{ "value": "```css\nwhite-space: normal | nowrap | pre | pre-wrap | pre-line | break-spaces;\n```\n\n- `normal` — collapse whitespace, wrap at available width\n- `nowrap` — collapse whitespace, no wrapping\n- `pre` — preserve whitespace and newlines, no wrapping\n- `pre-wrap` — preserve whitespace, wrap at available width\n- `pre-line` — collapse whitespace, preserve newlines, wrap" }]
|
|
170
|
+
},
|
|
171
|
+
"word-break": {
|
|
172
|
+
"contents": [{ "value": "```css\nword-break: normal | break-all | keep-all | break-word;\n```\n\n- `normal` — break at allowed break points\n- `break-all` — break anywhere (for CJK text or long strings)\n- `keep-all` — don't break CJK characters\n- `break-word` — break at word boundaries, then anywhere if needed (deprecated, use `overflow-wrap: anywhere` instead)" }]
|
|
173
|
+
},
|
|
174
|
+
"overflow-wrap": {
|
|
175
|
+
"contents": [{ "value": "```css\noverflow-wrap: normal | break-word | anywhere;\n```\n\nAllows unbreakable strings to be broken to prevent overflow.\n\n- `break-word` — break long words at arbitrary points if needed\n- `anywhere` — like `break-word` but also considers soft wrap opportunities for min-content sizing" }]
|
|
176
|
+
},
|
|
177
|
+
|
|
178
|
+
"color": {
|
|
179
|
+
"contents": [{ "value": "```css\ncolor: <color>;\n```\n\nSets the foreground color for text content and text decorations.\n\nColor formats:\n- Named: `red`, `rebeccapurple`\n- Hex: `#ff0000`, `#f00`, `#ff000080`\n- RGB: `rgb(255 0 0)`, `rgb(255 0 0 / 50%)`\n- HSL: `hsl(0 100% 50%)`, `hsl(0 100% 50% / 50%)`\n- OKLCH: `oklch(70% 0.25 30)`\n- Keywords: `currentColor`, `transparent`, `inherit`" }]
|
|
180
|
+
},
|
|
181
|
+
"background-color": {
|
|
182
|
+
"contents": [{ "value": "```css\nbackground-color: <color>;\n```\n\nSets the background color. Painted behind `background-image`.\n\nSupports all color formats including alpha transparency:\n`background-color: rgb(0 0 0 / 50%);`" }]
|
|
183
|
+
},
|
|
184
|
+
"background-image": {
|
|
185
|
+
"contents": [{ "value": "```css\nbackground-image: none | <image>+;\n```\n\nSets one or more background images. Supports gradients as images.\n\nExamples:\n```css\nbackground-image: url('bg.jpg');\nbackground-image: linear-gradient(to right, #000, #fff);\nbackground-image: radial-gradient(circle, #000, transparent);\nbackground-image: conic-gradient(from 45deg, red, blue);\n```\n\nMultiple backgrounds are layered: first declared is on top." }]
|
|
186
|
+
},
|
|
187
|
+
"background-size": {
|
|
188
|
+
"contents": [{ "value": "```css\nbackground-size: auto | <length> | <percentage> | cover | contain;\n```\n\n- `cover` — scales image to fill element (may crop)\n- `contain` — scales image to fit entirely (may leave gaps)\n- `auto` — natural image dimensions\n\nTwo values: `background-size: width height;`" }]
|
|
189
|
+
},
|
|
190
|
+
"background-position": {
|
|
191
|
+
"contents": [{ "value": "```css\nbackground-position: <position>;\n```\n\nSets the initial position of a background image.\n\nKeywords: `top`, `right`, `bottom`, `left`, `center`.\nValues: `background-position: 50% 50%;` (centered)\nMulti-value: `background-position: right 10px bottom 20px;`" }]
|
|
192
|
+
},
|
|
193
|
+
"linear-gradient()": {
|
|
194
|
+
"contents": [{ "value": "```css\nlinear-gradient(<angle> | to <side>, <color-stop>, ...)\n```\n\nCreates a linear color transition.\n\nAngles: `0deg` (up), `90deg` (right), `180deg` (down), `270deg` (left).\nKeywords: `to right`, `to bottom right`, etc.\n\nExamples:\n```css\nlinear-gradient(135deg, #667eea 0%, #764ba2 100%);\nlinear-gradient(to right, red, transparent);\nlinear-gradient(to bottom, #000 0%, #000 50%, #fff 50%, #fff 100%);\n```" }]
|
|
195
|
+
},
|
|
196
|
+
"radial-gradient()": {
|
|
197
|
+
"contents": [{ "value": "```css\nradial-gradient(<shape> <size> at <position>, <color-stop>, ...)\n```\n\nCreates a radial color transition from a center point.\n\nShapes: `circle`, `ellipse` (default).\nSizes: `closest-side`, `farthest-side`, `closest-corner`, `farthest-corner`.\n\nExample: `radial-gradient(circle at top left, #667eea, transparent);`" }]
|
|
198
|
+
},
|
|
199
|
+
|
|
200
|
+
"border-width": {
|
|
201
|
+
"contents": [{ "value": "```css\nborder-width: <length>{1,4};\n```\n\nSets the width of all four borders. Uses the same 1-to-4 value shorthand as `margin`.\n\nKeywords: `thin` (~1px), `medium` (~3px), `thick` (~5px).\n\nIndividual sides: `border-top-width`, `border-right-width`, etc." }]
|
|
202
|
+
},
|
|
203
|
+
"border-style": {
|
|
204
|
+
"contents": [{ "value": "```css\nborder-style: none | solid | dashed | dotted | double | groove | ridge | inset | outset | hidden;\n```\n\nSets the line style of all four borders. `none` and `hidden` both render no border, but `hidden` wins in border-collapsing table cells." }]
|
|
205
|
+
},
|
|
206
|
+
"border-color": {
|
|
207
|
+
"contents": [{ "value": "```css\nborder-color: <color>{1,4};\n```\n\nSets the color of all four borders. Uses 1-to-4 value shorthand.\n\nDefaults to `currentColor` if not specified." }]
|
|
208
|
+
},
|
|
209
|
+
"outline": {
|
|
210
|
+
"contents": [{ "value": "```css\noutline: <width> <style> <color>;\n```\n\nDraws a line outside the element's border. Does NOT affect layout (no space taken).\n\nUnlike `border`, `outline` doesn't have corners — use `outline-offset` to push it away from the element.\n\n`outline: 2px solid blue;` is the default focus indicator in many browsers.\n`outline: none;` removes it (only do this with a visible alternative)." }]
|
|
211
|
+
},
|
|
212
|
+
"box-shadow": {
|
|
213
|
+
"contents": [{ "value": "```css\nbox-shadow: <inset>? <offset-x> <offset-y> <blur> <spread>? <color>;\n```\n\nAdds shadow effects. Supports multiple shadows separated by commas.\n\nExamples:\n```css\nbox-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);\nbox-shadow: inset 0 2px 4px rgba(0,0,0,0.1);\nbox-shadow: 0 0 0 3px rgba(66,153,225,0.5); /* ring effect */\n```" }]
|
|
214
|
+
},
|
|
215
|
+
"filter": {
|
|
216
|
+
"contents": [{ "value": "```css\nfilter: <filter-function>+;\n```\n\nFunctions: `blur()`, `brightness()`, `contrast()`, `grayscale()`, `hue-rotate()`, `invert()`, `opacity()`, `saturate()`, `sepia()`, `drop-shadow()`.\n\nExamples:\n```css\nfilter: blur(4px);\nfilter: grayscale(100%) brightness(0.8);\nfilter: drop-shadow(2px 4px 6px rgba(0,0,0,0.3));\n```\n\n`drop-shadow()` follows the alpha shape (unlike `box-shadow`)." }]
|
|
217
|
+
},
|
|
218
|
+
"backdrop-filter": {
|
|
219
|
+
"contents": [{ "value": "```css\nbackdrop-filter: <filter-function>+;\n```\n\nApplies filter effects to the area behind an element. Uses the same functions as `filter`.\n\nGlass morphism pattern:\n```css\nbackdrop-filter: blur(10px);\nbackground-color: rgba(255, 255, 255, 0.3);\n```\n\nRequires a transparent/semi-transparent background to be visible." }]
|
|
220
|
+
},
|
|
221
|
+
"mix-blend-mode": {
|
|
222
|
+
"contents": [{ "value": "```css\nmix-blend-mode: normal | multiply | screen | overlay | darken | lighten | color-dodge | color-burn | hard-light | soft-light | difference | exclusion | hue | saturation | color | luminosity;\n```\n\nDefines how an element's content blends with the content behind it.\n\n`isolation: isolate;` on a parent creates a new stacking context, preventing blend from affecting ancestors." }]
|
|
223
|
+
},
|
|
224
|
+
"object-fit": {
|
|
225
|
+
"contents": [{ "value": "```css\nobject-fit: fill | contain | cover | none | scale-down;\n```\n\nSets how `<img>`, `<video>`, or other replaced elements resize to fit their container.\n\n- `cover` — fill container, maintain aspect ratio (may crop)\n- `contain` — fit entirely, maintain aspect ratio (may letterbox)\n- `fill` — stretch to fill (may distort)\n- `none` — natural size\n- `scale-down` — `none` or `contain`, whichever is smaller\n\nUsed with `object-position` to control placement." }]
|
|
226
|
+
},
|
|
227
|
+
"object-position": {
|
|
228
|
+
"contents": [{ "value": "```css\nobject-position: <position>;\n```\n\nSets the alignment of replaced content within its box. Uses the same syntax as `background-position`.\n\nDefault: `50% 50%` (centered).\nExample: `object-position: top center;`" }]
|
|
229
|
+
},
|
|
230
|
+
"aspect-ratio": {
|
|
231
|
+
"contents": [{ "value": "```css\naspect-ratio: auto | <width> / <height>;\n```\n\nSets a preferred aspect ratio for the element's box.\n\nExamples:\n- `aspect-ratio: 16 / 9;` — widescreen video\n- `aspect-ratio: 1;` — square\n- `aspect-ratio: 4 / 3;` — classic photo\n\nWorks with `width: 100%;` to create responsive containers that maintain their ratio." }]
|
|
232
|
+
},
|
|
233
|
+
"overflow-x": {
|
|
234
|
+
"contents": [{ "value": "```css\noverflow-x: visible | hidden | clip | scroll | auto;\n```\n\nControls horizontal overflow behavior.\n`overflow-x: auto;` adds a scrollbar only when content overflows horizontally." }]
|
|
235
|
+
},
|
|
236
|
+
"overflow-y": {
|
|
237
|
+
"contents": [{ "value": "```css\noverflow-y: visible | hidden | clip | scroll | auto;\n```\n\nControls vertical overflow behavior.\n`overflow-y: auto;` adds a scrollbar only when content overflows vertically." }]
|
|
238
|
+
},
|
|
239
|
+
"visibility": {
|
|
240
|
+
"contents": [{ "value": "```css\nvisibility: visible | hidden | collapse;\n```\n\n- `visible` — element is visible\n- `hidden` — element is invisible but still occupies space (unlike `display: none`)\n- `collapse` — for table elements, removes row/column; behaves like `hidden` for others\n\nHidden elements still receive events and can be tab-focused." }]
|
|
241
|
+
},
|
|
242
|
+
"pointer-events": {
|
|
243
|
+
"contents": [{ "value": "```css\npointer-events: auto | none;\n```\n\n- `auto` — element responds to pointer events normally\n- `none` — element is \"transparent\" to pointer events; clicks pass through to elements below\n\nUseful for overlays, disabled states, and decorative elements." }]
|
|
244
|
+
},
|
|
245
|
+
"user-select": {
|
|
246
|
+
"contents": [{ "value": "```css\nuser-select: auto | text | none | all | contain;\n```\n\nControls whether text can be selected.\n\n- `none` — prevents text selection (useful for UI elements)\n- `all` — entire element selected on click (useful for code blocks)\n- `text` — text can be selected normally" }]
|
|
247
|
+
},
|
|
248
|
+
"resize": {
|
|
249
|
+
"contents": [{ "value": "```css\nresize: none | both | horizontal | vertical | block | inline;\n```\n\nSets whether an element is resizable by the user.\n\nRequires `overflow` other than `visible`. `<textarea>` is resizable by default." }]
|
|
250
|
+
},
|
|
251
|
+
"scroll-behavior": {
|
|
252
|
+
"contents": [{ "value": "```css\nscroll-behavior: auto | smooth;\n```\n\nSets whether scrolling is instant or animated.\n\n`html { scroll-behavior: smooth; }` enables smooth scrolling for all anchor links and `scrollTo()` calls." }]
|
|
253
|
+
},
|
|
254
|
+
"scroll-snap-type": {
|
|
255
|
+
"contents": [{ "value": "```css\nscroll-snap-type: none | <axis> <strictness>?;\n```\n\nAxis: `x`, `y`, `block`, `inline`, `both`.\nStrictness: `mandatory`, `proximity`.\n\nCarousel pattern:\n```css\n.container { scroll-snap-type: x mandatory; overflow-x: auto; }\n.item { scroll-snap-align: start; }\n```" }]
|
|
256
|
+
},
|
|
257
|
+
"will-change": {
|
|
258
|
+
"contents": [{ "value": "```css\nwill-change: auto | <property>+;\n```\n\nHints to the browser about upcoming changes for optimization.\n\nExamples:\n- `will-change: transform;` — optimizes for transform animations\n- `will-change: opacity;` — optimizes for opacity changes\n\nUse sparingly — add before animation, remove after. Excessive use wastes GPU memory." }]
|
|
259
|
+
},
|
|
260
|
+
"contain": {
|
|
261
|
+
"contents": [{ "value": "```css\ncontain: none | strict | content | size | layout | style | paint;\n```\n\nIndicates containment restrictions to the browser for performance optimization.\n\n- `layout` — element's layout is independent of the rest of the page\n- `paint` — descendants are not rendered outside the element's bounds\n- `size` — element's size is not affected by its descendants\n- `content` — shorthand for `layout paint style`\n- `strict` — shorthand for `layout paint size style`" }]
|
|
262
|
+
},
|
|
263
|
+
"accent-color": {
|
|
264
|
+
"contents": [{ "value": "```css\naccent-color: auto | <color>;\n```\n\nSets the accent color for form controls: checkboxes, radio buttons, range sliders, and progress bars.\n\n`accent-color: auto;` uses the browser/OS default.\n\nSimplifies form theming without custom styling." }]
|
|
265
|
+
},
|
|
266
|
+
"color-scheme": {
|
|
267
|
+
"contents": [{ "value": "```css\ncolor-scheme: normal | light | dark | light dark;\n```\n\nIndicates which color schemes the element supports.\n\n`:root { color-scheme: light dark; }` tells the browser both are supported, enabling native dark mode for form controls, scrollbars, and other UA-rendered elements." }]
|
|
268
|
+
},
|
|
269
|
+
"::placeholder": {
|
|
270
|
+
"contents": [{ "value": "```css\n::placeholder {\n color: <color>;\n opacity: <number>;\n font-style: <style>;\n}\n```\n\nStyles the placeholder text of `<input>` and `<textarea>` elements.\n\nNote: Default opacity varies by browser (Firefox uses 0.54). Set `opacity: 1;` for consistent rendering." }]
|
|
271
|
+
},
|
|
272
|
+
"@container": {
|
|
273
|
+
"contents": [{ "value": "```css\n@container <name>? (<condition>) { ... }\n```\n\nApplies styles based on the size of a containing element (not the viewport).\n\nConditions: `min-width`, `max-width`, `min-height`, `max-height`, `width`, `inline-size`, `block-size`.\n\nRequires `container-type` on ancestor:\n```css\n.parent { container-type: inline-size; container-name: card; }\n@container card (min-width: 400px) { .child { flex-direction: row; } }\n```" }]
|
|
274
|
+
},
|
|
275
|
+
"@layer": {
|
|
276
|
+
"contents": [{ "value": "```css\n@layer <name>;\n@layer <name> { ... }\n@layer <name1>, <name2>, <name3>;\n```\n\nDeclares cascade layers to control specificity ordering.\n\n- Layers declared earlier have **lower** priority\n- Unlayered styles have **higher** priority than layered styles\n- Layers can be nested: `@layer framework.components { }`\n\nUseful for managing third-party CSS specificity conflicts." }]
|
|
277
|
+
},
|
|
278
|
+
"@supports": {
|
|
279
|
+
"contents": [{ "value": "```css\n@supports (<condition>) { ... }\n@supports not (<condition>) { ... }\n@supports (<condition>) and (<condition>) { ... }\n```\n\nFeature queries — conditionally applies styles based on browser support.\n\nExamples:\n```css\n@supports (display: grid) { .layout { display: grid; } }\n@supports selector(:has()) { .parent:has(.child) { color: red; } }\n@supports (backdrop-filter: blur(10px)) { .glass { backdrop-filter: blur(10px); } }\n```" }]
|
|
280
|
+
},
|
|
281
|
+
"@import": {
|
|
282
|
+
"contents": [{ "value": "```css\n@import url(<path>) <media>? <layer>?;\n```\n\nImports an external stylesheet. Must appear before all rules except `@charset` and `@layer`.\n\nExamples:\n```css\n@import url('reset.css');\n@import url('print.css') print;\n@import url('lib.css') layer(lib);\n@import url('dark.css') (prefers-color-scheme: dark);\n```\n\nNote: Multiple `@import` rules create sequential blocking requests. Consider bundling instead." }]
|
|
283
|
+
},
|
|
284
|
+
"min()": {
|
|
285
|
+
"contents": [{ "value": "```css\nmin(<value>, <value>, ...)\n```\n\nReturns the smallest value from a comma-separated list.\n\nExample: `width: min(100%, 600px);` — never exceeds 600px but also never exceeds parent width.\n\nEquivalent to `max-width`-like behavior without a separate property." }]
|
|
286
|
+
},
|
|
287
|
+
"max()": {
|
|
288
|
+
"contents": [{ "value": "```css\nmax(<value>, <value>, ...)\n```\n\nReturns the largest value from a comma-separated list.\n\nExample: `width: max(300px, 50%);` — at least 300px but grows with parent.\n\nEquivalent to `min-width`-like behavior without a separate property." }]
|
|
289
|
+
},
|
|
290
|
+
":has()": {
|
|
291
|
+
"contents": [{ "value": "```css\n:has(<selector>)\n```\n\nThe \"parent selector\" — matches an element if any of its descendants match the argument selector.\n\nExamples:\n```css\n.card:has(img) { padding: 0; }\n.form:has(:invalid) { border-color: red; }\nh2:has(+ p) { margin-bottom: 0; } /* h2 followed by p */\n```\n\nHighly powerful but use carefully for performance — browser evaluates from the subject outward." }]
|
|
292
|
+
},
|
|
293
|
+
":is()": {
|
|
294
|
+
"contents": [{ "value": "```css\n:is(<selector-list>)\n```\n\nMatches any element that can be matched by one of the selectors in the list. Simplifies complex selectors.\n\n```css\n:is(h1, h2, h3) { color: blue; }\n:is(.card, .panel) :is(h2, h3) { margin: 0; }\n```\n\nSpecificity: takes the **most specific** selector in the list. Use `:where()` for zero-specificity version." }]
|
|
295
|
+
},
|
|
296
|
+
":where()": {
|
|
297
|
+
"contents": [{ "value": "```css\n:where(<selector-list>)\n```\n\nSame as `:is()` but with **zero specificity**. Ideal for default stylesheets that should be easily overridable.\n\n```css\n:where(.dialog, .modal) { margin: auto; }\n```" }]
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|