1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
|
---
title: CSS values and units
slug: Web/CSS/CSS_Values_and_Units
translation_of: Web/CSS/CSS_Values_and_Units
---
<div>{{CSSRef}}</div>
<p class="summary"><span class="seoSummary">Jede CSS declaration includes a property / value pair. Depending on the property, the value can include a single integer or keyword, to a series of keywords and values with or without units. There are a common set of data types -- values and units -- that CSS properties accept.</span> Below is an overview of most of these data types. Refer to the page for each value type for more detailed information.</p>
<h2 id="Textual_data_types">Textual data types</h2>
<ul>
<li>{{cssxref("<custom-ident>")}}</li>
<li>Pre-defined keywords as an <code><ident></code></li>
<li>{{cssxref("<string>")}}</li>
<li>{{cssxref("<url>")}}</li>
</ul>
<p>Text data types are either <code><string></code>, a quoted series of characters, or an <code><ident></code>, a "CSS Identifier" which is an unquoted string. A <code><string></code> must be quoted with either single or double quotes. CSS Identifiers, listed in the specifications as <code><ident></code> or <code><custom-ident></code>, must be unquoted.</p>
<p>In the CSS specifications, values that can be defined by the web developer, like keyframe animations, font-family names, or grid areas are listed as a {{cssxref("<custom-ident>")}}, {{cssxref("<string>")}}, or both.</p>
<p>When both quoted and unquoted user defined text values are permitted, the specification will list <code><custom-ident> | <string></code>, meaning quotes are optional, such as is the case with animation names:</p>
<pre class="brush: css notranslate">@keyframe validIdent {
/* keyframes go here */
}
@keyframe 'validString' {
/* keyframes go here */
}</pre>
<p>Some text values are not valid if encompassed in quotes. For example, the value of {{cssxref("grid-area")}} can be a <code><custom-ident></code>, so if we had a grid area named <code>content</code> we would use it without quotes:</p>
<pre class="brush: css notranslate">.item {
grid-area: content;
}
</pre>
<p>In comparison, a data type that is a {{cssxref("<string>")}}, such as a string value of the {{cssxref("content")}} property, must be quoted:</p>
<pre class="brush: css notranslate">.item::after {
content: "This is my content.";
}
</pre>
<p>While you can generally create any name you want, including using emojis, the identifier can't be <code>none</code>, <code>unset</code>, <code>initial</code>, or <code>inherit</code>, start with a digit or two dashes, and generally you don't want it to be any other pre-defined CSS keyword. See the {{cssxref("<custom-ident>")}} and {{cssxref("<string>")}} reference pages for more details.</p>
<h3 id="Pre-defined_keyword_values">Pre-defined keyword values</h3>
<p>Pre-defined keywords are text values defined by the specification for that property. These keywords are also CSS Identifiers and are therefore used without quotes.</p>
<p>When viewing CSS property value syntax in a CSS specification or the MDN property page, allowable keywords will be listed in the following form. The following values are the pre-defined keyword values allowed for {{cssxref("float")}}.</p>
<pre class="syntaxbox notranslate">left <a href="/en-US/docs/CSS/Value_definition_syntax#Single_bar" title="Single bar: exactly one of the entities must be present">|</a> right <a href="/en-US/docs/CSS/Value_definition_syntax#Single_bar" title="Single bar: exactly one of the entities must be present">|</a> none <a href="/en-US/docs/CSS/Value_definition_syntax#Single_bar" title="Single bar: exactly one of the entities must be present">|</a> inline-start <a href="/en-US/docs/CSS/Value_definition_syntax#Single_bar" title="Single bar: exactly one of the entities must be present">|</a> inline-end</pre>
<p>Such values are used without quotes:</p>
<pre class="brush: css notranslate"><code>.box {
float: left;
}
</code></pre>
<h3 id="CSS-wide_values">CSS-wide values</h3>
<p>In addition to the pre-defined keywords that are part of the specification for a property, all CSS properties accept the CSS-wide property values {{cssxref("initial")}}, {{cssxref("inherit")}}, and {{cssxref("unset")}}, which explicitly specify defaulting behaviors.</p>
<p>The <code>initial</code> keyword represents the value specified as the property’s initial value. The <code>inherit</code> keyword represents the computed value of the property on the element’s parent, provided it is inherited.</p>
<p>The <code>unset</code> keyword acts as either <code>inherit</code> or <code>initial</code>, depending on whether the property is inherited or not.</p>
<p>A fourth value of {{cssxref("revert")}} was added in the Cascade Level 4 specification, but it does not currently have good browser support.</p>
<h3 id="URLs">URLs</h3>
<p>A {{cssxref("<url>")}} type uses functional notation, which accepts a <code><string></code> that is a URL. This may be an absolute URL or a relative URL. For example, if you wanted to include a background image, you might use either of the following.</p>
<pre class="brush: css notranslate"><code>.box {
background-image: url("images/my-background.png");
}</code>
<code>.box {
background-image: url("https://www.exammple.com/images/my-background.png");
}</code>
</pre>
<p>The parameter for <code>url()</code> can be either quoted or unquoted. If unquoted, it is parsed as a <code><url-token></code>, which has extra requirements including the escaping of certain characters. See {{cssxref("<url>")}} for more information.</p>
<h2 id="Numeric_data_types">Numeric data types</h2>
<ul>
<li>{{cssxref("<integer>")}}</li>
<li>{{cssxref("<number>")}}</li>
<li>{{cssxref("<dimension>")}}</li>
<li>{{cssxref("<percentage>")}}</li>
</ul>
<h3 id="Integers">Integers</h3>
<p>An integer is one or more decimal digits, <code>0</code> through <code>9</code>, such as <code>1024</code> or <code>-55</code>. An integer may be preceded by a <code>+</code> or <code>-</code> symbol, with no space between the symbol and the integer.</p>
<h3 id="Numbers">Numbers</h3>
<p>A {{cssxref("<number>")}} represents a real number, which may or may not have a decimal point with a fractional component, for example <code>0.255</code>, <code>128</code> or <code>-1.2</code>. Numbers may also be preceded by a <code>+</code> or <code>-</code> symbol.</p>
<h3 id="Dimensions">Dimensions</h3>
<p>A {{cssxref("<dimension>")}} is a <code><number></code> with a unit attached to it, for example <code>45deg</code>, <code>100ms</code>, or <code>10px</code>. The attached unit identifier is case insensitive. There is never a space or any other characters between a the number and the unit identifier: i.e. <code>1 cm</code> is not valid.</p>
<p>CSS uses dimensions to specify:</p>
<ul>
<li>{{cssxref("<length>")}} (Distance units)</li>
<li>{{cssxref("<angle>")}}</li>
<li>{{cssxref("<time>")}}</li>
<li>{{cssxref("<frequency>")}}</li>
<li>{{cssxref("<resolution>")}}</li>
</ul>
<p>These are all covered in subsections below.</p>
<h4 id="Distance_units">Distance units</h4>
<p>Where a distance unit, also known as a length, is allowed as a value for a property, this is described as the {{cssxref("<length>")}} type. There are two types of lengths in CSS: relative and absolute.</p>
<p>Relative length units specify a length in relation to something else. For example, <code>em</code> is relative to the font size on the element and <code>vh</code> is relative to the viewport height.</p>
<table class="standard-table">
<caption>
<h4 id="Relative_length_units">Relative length units</h4>
</caption>
<thead>
<tr>
<th scope="col">Unit</th>
<th scope="col">Relative to</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>em</code></td>
<td>Font size of the element.</td>
</tr>
<tr>
<td><code>ex</code></td>
<td>x-height of the element's font.</td>
</tr>
<tr>
<td><code>cap</code></td>
<td>Cap height (the nominal height of capital letters) of the element's font.</td>
</tr>
<tr>
<td><code>ch</code></td>
<td>Average character advance of a narrow glyph in the element’s font, as represented by the “0” (ZERO, U+0030) glyph.</td>
</tr>
<tr>
<td><code>ic</code></td>
<td>Average character advance of a full width glyph in the element’s font, as represented by the “水” (CJK water ideograph, U+6C34) glyph.</td>
</tr>
<tr>
<td><code>rem</code></td>
<td>Font size of the root element.</td>
</tr>
<tr>
<td><code>lh</code></td>
<td>Line height of the element.</td>
</tr>
<tr>
<td><code>rlh</code></td>
<td>Line height of the root element.</td>
</tr>
<tr>
<td><code>vw</code></td>
<td>1% of viewport's width.</td>
</tr>
<tr>
<td><code>vh</code></td>
<td>1% of viewport's height.</td>
</tr>
<tr>
<td><code>vi</code></td>
<td>1% of viewport's size in the root element's inline axis.</td>
</tr>
<tr>
<td><code>vb</code></td>
<td>1% of viewport's size in the root element's block axis.</td>
</tr>
<tr>
<td><code>vmin</code></td>
<td>1% of viewport's smaller dimension.</td>
</tr>
<tr>
<td><code>vmax</code></td>
<td>1% of viewport's larger dimension.</td>
</tr>
</tbody>
</table>
<p>Absolute length units are fixed to a physical length: either an inch or a centimeter. Many of these units are therefore more useful when the output is a fixed size media, such as print. For example, <code>mm</code> is a physical millimeter, 1/10th of a centimeter.</p>
<table class="standard-table">
<caption>
<h4 id="Absolute_length_units">Absolute length units</h4>
</caption>
<thead>
<tr>
<th scope="col">Unit</th>
<th scope="col">Name</th>
<th scope="col">Equivalent to</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>cm</code></td>
<td>Centimeters</td>
<td>1cm = 96px/2.54</td>
</tr>
<tr>
<td><code>mm</code></td>
<td>Millimeters</td>
<td>1mm = 1/10th of 1cm</td>
</tr>
<tr>
<td><code>Q</code></td>
<td>Quarter-millimeters</td>
<td>1Q = 1/40th of 1cm</td>
</tr>
<tr>
<td><code>in</code></td>
<td>Inches</td>
<td>1in = 2.54cm = 96px</td>
</tr>
<tr>
<td><code>pc</code></td>
<td>Picas</td>
<td>1pc = 1/16th of 1in</td>
</tr>
<tr>
<td><code>pt</code></td>
<td>Points</td>
<td>1pt = 1/72th of 1in</td>
</tr>
<tr>
<td><code>px</code></td>
<td>Pixels</td>
<td>1px = 1/96th of 1in</td>
</tr>
</tbody>
</table>
<p>When including a length value, if the length is <code>0</code>, the unit identifier is not required. Otherwise, the unit identifier is required, is case insensitive, and must come immediately after the numeric part of the value, with no space in-between.</p>
<h4 id="Angle_units">Angle units</h4>
<p>Angle values are represented by the type {{cssxref("<angle>")}} and accept the following values:</p>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Unit</th>
<th scope="col">Name</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>deg</code></td>
<td>Degrees</td>
<td>There are 360 degrees in a full circle.</td>
</tr>
<tr>
<td><code>grad</code></td>
<td>Gradians</td>
<td>There are 400 gradians in a full circle.</td>
</tr>
<tr>
<td><code>rad</code></td>
<td>Radians</td>
<td>There are 2π radians in a full circle.</td>
</tr>
<tr>
<td><code>turn</code></td>
<td>Turns</td>
<td>There is 1 turn in a full circle.</td>
</tr>
</tbody>
</table>
<h4 id="Time_units">Time units</h4>
<p>Time values are represented by the type {{cssxref("<time>")}}. When including a time value, the unit identifier -- the <code>s</code> or <code>ms</code> -- is required. It accepts the following values.</p>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Unit</th>
<th scope="col">Name</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>s</code></td>
<td>Seconds</td>
<td></td>
</tr>
<tr>
<td><code>ms</code></td>
<td>Milliseconds</td>
<td>There are 1,000 milliseconds in a second.</td>
</tr>
</tbody>
</table>
<h4 id="Frequency_units">Frequency units</h4>
<p>Frequency values are represented by the type {{cssxref("<frequency>")}}. It accepts the following values.</p>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Unit</th>
<th scope="col">Name</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Hz</code></td>
<td>Hertz</td>
<td>Represents the number of occurrences per second.</td>
</tr>
<tr>
<td><code>kHz</code></td>
<td>KiloHertz</td>
<td>A kiloHertz is 1000 Hertz.</td>
</tr>
</tbody>
</table>
<p><code>1Hz</code>, which can also be written as <code>1hz</code> or <code>1HZ</code>, is one cycle per second.</p>
<h4 id="Resolution_unit">Resolution unit</h4>
<p>Resolution units are represented by the type {{cssxref("<resolution>")}}. They represent the size of a single dot in a graphical representation, such as a screen, by indicating how many of these dots fit in a CSS inch, centimeter, or pixel. It accepts the following values:</p>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Unit</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>dpi</code></td>
<td>Dots per inch.</td>
</tr>
<tr>
<td><code>dpcm</code></td>
<td>Dots per centimetre.</td>
</tr>
<tr>
<td><code>dppx</code>, <code>x</code></td>
<td>Dots per px unit.</td>
</tr>
</tbody>
</table>
<h3 id="Percentages">Percentages</h3>
<p>A {{cssxref("<percentage>")}} is a type that represents a fraction of some other value.</p>
<p>Percentage values are always relative to another quantity, for example a length. Each property that allows percentages also defines the quantity to which the percentage refers. This quantity can be a value of another property of the same element, the value of a property of an ancestor element, a measurement of a containing block, or something else.</p>
<p>As an example, if you specify the {{cssxref("width")}} of a box as a percentage, it refers to the percentage of the box's parent's computed width:</p>
<pre class="brush: css notranslate">.box {
width: 50%;
}</pre>
<h3 id="Mixing_percentages_and_dimensions">Mixing percentages and dimensions</h3>
<p>Some properties accept a dimension that could be either one of two types, for example a <code><length></code> <strong>or</strong> a <code><percentage></code>. In this case the allowed value is detailed in the specification as a combination unit, e.g. {{cssxref("<length-percentage>")}}. Other possible combinations are as follows:</p>
<ul>
<li>{{cssxref("<frequency-percentage>")}}</li>
<li>{{cssxref("<angle-percentage>")}}</li>
<li>{{cssxref("<time-percentage>")}}</li>
</ul>
<h3 id="Special_data_types_defined_in_other_specs">Special data types (defined in other specs)</h3>
<ul>
<li>{{cssxref("<color>")}}</li>
<li>{{cssxref("<image>")}}</li>
<li>{{cssxref("<position>")}}</li>
</ul>
<h4 id="Color">Color</h4>
<p>The {{cssxref("<color>")}} value specifies the color of an element feature (e.g. it's background color), and is defined in the <a href="https://drafts.csswg.org/css-color-3/">CSS Color Module</a>.</p>
<h4 id="Image">Image</h4>
<p>The {{cssxref("<image>")}} value specifies all the different types of image that can be used in CSS, and is defined in the <a href="https://www.w3.org/TR/css-images-4/">CSS Image Values and Replaced Content Module</a>.</p>
<h4 id="Position">Position</h4>
<p>The {{cssxref("<position>")}} type defines 2D positioning of an object inside a positioning area, for example a background image inside a container. This type is interpreted as a {{cssxref("background-position")}} and therefore specified in the <a href="https://www.w3.org/TR/css-backgrounds-3/">CSS Backgrounds and Borders specification</a>.</p>
<h3 id="Functional_notation">Functional notation</h3>
<ul>
<li>{{cssxref("calc()")}}</li>
<li>{{cssxref("min", "min()")}}</li>
<li>{{cssxref("max", "max()")}}</li>
<li>{{cssxref("clamp", "clamp()")}}</li>
<li>{{cssxref("toggle", "toggle()")}}</li>
<li>{{cssxref("attr", "attr()")}}</li>
</ul>
<p><a href="/en-US/docs/Web/CSS/CSS_Functionals">Functional notation</a> is a type of value that can represent more complex types or invoke special processing by CSS. The syntax starts with the name of the function immediately followed by a left parenthesis <code>(</code> followed by the argument(s) to the notation followed by a right parenthesis <code>)</code>. Functions can take multiple arguments, which are formatted similarly to a CSS property value.</p>
<p>White space is allowed, but optional inside the parentheses. (But see notes regarding whitespace within pages for <code>min()</code>, <code>max()</code> and <code>clamp()</code> functions.)</p>
<p>Some legacy functional notations such as <code>rgba()</code> use commas, but generally commas are only used to separate items in a list. If a comma is used to separate arguments, white space is optional before and after the comma.</p>
<h2 id="Specifications">Specifications</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName("CSS4 Values")}}</td>
<td>{{Spec2("CSS4 Values")}}</td>
<td>Adds the <code>vi</code>, <code>vb</code>, <code>ic</code>, <code>cap</code>, <code>lh</code> and <code>rlh</code> units.<br>
Adds the <code>min()</code>, <code>max()</code> and <code>clamp()</code> functional notation<br>
Adds <code>toggle()</code></td>
</tr>
<tr>
<td>{{SpecName("CSS3 Values")}}</td>
<td>{{Spec2("CSS3 Values")}}</td>
<td>Adds <code>calc()</code>, <code>ch</code>, <code>rem</code>, <code>vw</code>, <code>vw</code>, <code>vmin</code>,<code> vmax</code>, <code>Q</code></td>
</tr>
<tr>
<td>{{SpecName("CSS4 Colors")}}</td>
<td>{{Spec2("CSS4 Colors")}}</td>
<td>Adds commaless syntaxes for the <code>rgb()</code>, <code>rgba()</code>, <code>hsl()</code>, and <code>hsla()</code> functions. Allows alpha values in <code>rgb()</code> and <code>hsl()</code>, turning <code>rgba()</code> and <code>hsla()</code> into (deprecated) aliases for them.<br>
Adds color keyword <code>rebeccapurple</code>.<br>
Adds 4- and 8-digit hex color values, where the last digit(s) represents the alpha value.<br>
Adds <code>hwb()</code>, <code>device-cmyk()</code>, and <code>color()</code> functions.</td>
</tr>
<tr>
<td>{{SpecName("CSS3 Colors")}}</td>
<td>{{Spec2("CSS3 Colors")}}</td>
<td>Deprecates system-colors. Adds SVG colors. Adds the <code>rgba()</code>, <code>hsl()</code>, and <code>hsla()</code> functions.</td>
</tr>
<tr>
<td>{{SpecName("CSS4 Images")}}</td>
<td>{{Spec2("CSS4 Images")}}</td>
<td>
<p>Adds <code>element()</code>, <code>image()</code>, <code>image-set()</code>, <code>conic-gradient()</code></p>
</td>
</tr>
<tr>
<td>{{SpecName("CSS3 Images")}}</td>
<td>{{Spec2("CSS3 Images")}}</td>
<td>Initial definition of image.</td>
</tr>
<tr>
<td>{{SpecName("CSS2.1")}}</td>
<td>{{Spec2("CSS2.1")}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName("CSS1")}}</td>
<td>{{Spec2("CSS1")}}</td>
<td>Initial definition.</td>
</tr>
</tbody>
</table>
<h2 id="See_also">See also</h2>
<ul>
<li><a href="/en-US/docs/Web/CSS/CSS_Types">CSS Basic Data Types</a></li>
<li><a href="/en-US/docs/Learn/CSS/Introduction_to_CSS/Values_and_units">Introduction to CSS: Values and Units </a></li>
</ul>
|