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
|
---
title: Sintaxis de definición de valor
slug: Web/CSS/Sintaxis_definición_de_valor
translation_of: Web/CSS/Value_definition_syntax
---
<p>{{CSSRef()}}</p>
<p><span class="seoSummary"><strong>La sintaxis de definición de valores CSS</strong>, una gramática formal, se utiliza para definir el conjunto de valores válidos para una propiedad o función CSS. Además de esta sintaxis, el conjunto de valores válidos puede restringirse aún más mediante restricciones semánticas (por ejemplo, para que un número sea estrictamente positivo).</span></p>
<p class="summary">La sintaxis de definición describe qué valores están permitidos y las interacciones entre ellos. Un componente puede ser una <em>palabra clave</em>, algunos caracteres <em>literales</em>, ó un valor de tipo de dato de CSS o propiedad CSS.</p>
<h2 id="Tipos_de_valor_de_los_componentes">Tipos de valor de los componentes</h2>
<h3 id="Palabras_clave">Palabras clave</h3>
<h4 id="Palabras_clave_genéricas">Palabras clave genéricas</h4>
<p>Una palabra clave con significado predefinido aparece literalmente, sin comillas, por ejemplo: <code>auto</code>, <code>smaller</code> or <code>ease-in</code>.</p>
<h4 id="El_caso_específico_de_inherit_e_initial">El caso específico de <code>inherit</code> e <code>initial</code></h4>
<p>Todas las propiedades CSS aceptan las palabras clave <code>inherit</code> e <code>initial</code> que son definidas vía CSS. Estas no son mostradas en la definición del valor y están implícitamente definidas.</p>
<h3 id="Literales">Literales</h3>
<p>En CSS, unos pocos caracteres pueden aparecer por su cuenta, como la barra ('<code>/</code>') o la coma ('<code>,</code>'), y son usadas en una propiedad o definición para separar sus partes. La coma es a menudo usada para separar valores en enumeraciones, o parámetros en funciones de tipo matemático; la barra a menudo separa partes de el valor que es semánticamente diferente, pero que tiene una sintaxis común. Típicamente, la barra es usada a veces en propiedades abreviadas para separar componentes que son del mismo tipo, pero pertenecen a diferentes propiedades.</p>
<p>Ambos símbolos aparecen literalmente en una definición de valor.</p>
<h3 id="Tipos_de_dato">Tipos de dato</h3>
<h4 id="Tipos_de_dato_básicos">Tipos de dato básicos</h4>
<p>Un tipo de dato usado vía CSS es definido una sola vez para todos los valores en la especificación. Se llaman <em>tipos de datos básicos, </em>estan representados por su nombre rodeados del símbolo '<code><</code>' y '<code>></code>': {{ cssxref("<angle>") }}, {{cssxref("<string>")}}, …</p>
<h4 id="Tipos_de_dato_no_terminales">Tipos de dato no terminales</h4>
<p>Tipos de dato poco comunes, llamados <em>tipos de datos no terminales</em>, están también rodeados por '<code><</code>' y '<code>></code>'.</p>
<p>Los tipos de dato no terminales son de dos tipos::</p>
<ul>
<li>tipos de datos <em>que comparten el mismo nombre de propiedad</em>, colocados entre comillas . En este caso el tipo de dato comparte el mismo conjunto de valores de la propiedad. A menudo son usados en la definición de propiedades abreviadas.</li>
<li>tipos de datos <em>que no comparten el mismo nombre de la propiedad</em>. Estos tipos de datos son muy cercanos a sus tipos de datos básicos. Ellos solo difieren de los tipos de datos básicos en la ubicación física de su definición: en este caso la definición es usualmente físicamente muy cercana a la definición de la propiedad que la esta usando.</li>
</ul>
<h2 id="Combinadores_de_los_valores_de_componentes">Combinadores de los valores de componentes</h2>
<h3 id="Corchetes">Corchetes</h3>
<p><em>Corchetes </em>encierran varias entidades, combinadores, y multiplicadores, luego los transforman en un solo componente. Son usados para <strong>agrupar componentes para sobreescribir las reglas de precedencia.</strong></p>
<pre class="syntaxbox"><code>bold [ thin && <length> ]</code></pre>
<p>El ejemplo empareja con los siguientes valores:</p>
<ul>
<li><code>bold thin 2vh</code></li>
<li><code>bold 0 thin</code></li>
<li><code>bold thin 3.5em</code></li>
</ul>
<p>Pero no con:</p>
<ul>
<li><code>thin bold 3em</code>, porque <code>bold</code> esta yuxtapuesto con el componente definido por los corchetes, debe aparecer antes de él.</li>
</ul>
<h3 id="Yuxtaposición">Yuxtaposición</h3>
<p>Colocar varias palabras clave, literales, o tipos de datos, uno al lado del otro, solo separados por uno o varios espacios se llama <em>yuxtaponer. </em>Todos los componentes yuxtapuestos son <strong>obligatorios y deben aparecer en ese orden exacto.</strong></p>
<pre class="syntaxbox">bold <length> , thin
</pre>
<p>El ejemplo empareja con los siguientes valores:</p>
<ul>
<li><code>bold 1em, thin</code></li>
<li><code>bold 0, thin</code></li>
<li><code>bold 2.5cm, thin</code></li>
<li><code>bold 3vh, thin</code></li>
</ul>
<p>Pero no con:</p>
<ul>
<li><code>thin 1em, bold</code> porque las entidades deben aparecer en el orden expresado</li>
<li><code>bold 1em thin</code> porque las entidades son obligatorias; la coma que es un literal debe estar presente</li>
<li><code>bold 0.5ms, thin</code> porque los valores <code>ms</code> no son de tipo {{cssxref("<length>")}}</li>
</ul>
<h3 id="Doble_ampersand">Doble ampersand</h3>
<p>Separar dos o mas componentes por un <em>doble ampersand</em>, <code>&&</code>, significa que todas esas entidades son <strong>obligatorias pero pueden aparecer en cualquier orden.</strong></p>
<pre class="syntaxbox">bold && <length>
</pre>
<p>El ejemplo empareja con los siguientes valores:</p>
<ul>
<li><code>bold 1em</code></li>
<li><code>bold 0</code></li>
<li><code>2.5cm bold</code></li>
<li><code>3vh bold</code></li>
</ul>
<p>Pero no con:</p>
<ul>
<li><code>bold</code> porque ambos componentes deben aparecer en el valor</li>
<li><code>bold 1em bold</code> porque ambos componentes deben aparecer solo una vez</li>
</ul>
<div class="note"><strong>Nota:</strong> yuxtaposición tiene precedencia sobre el doble ampersand, esto quiere decir que <code>bold thin && <length></code> es equivalente a <code>[ </code><code>bold thin ] && <length></code>. Que describe a <code>bold thin <length></code> ó <code><length></code><code> bold thin</code> pero no a <code>bold <length></code><code> thin</code>.</div>
<h3 id="Barra_doble">Barra doble</h3>
<p>Separar dos o mas componentes por una <em>barra doble</em>, <code>||</code>, significa que todas las entidades son opcionales: <strong>al menos una debe estar presente, y pueden aparecer en cualquier orden. </strong>Típicamente ésto es usado para definir los diferentes valores de una <a href="/en-US/docs/CSS/Shorthand_properties" title="/en-US/docs/CSS/Shorthand_properties">propiedad abreviada</a>.</p>
<pre class="syntaxbox"><'border-width'> || <'border-style'> || <'border-color'>
</pre>
<p>El ejemplo empareja con los siguientes valores:</p>
<ul>
<li><code>1em solid blue</code></li>
<li><code>blue 1em</code></li>
<li><code>solid 1px yellow</code></li>
</ul>
<p>Pero no con:</p>
<ul>
<li><code>blue yellow</code> porque un componente debe aparecer al menos una vez.</li>
<li><code>bold</code> porque no es una palabra clave permitida como valor de ninguna de las entidades.</li>
</ul>
<div class="note"><strong>Nota:</strong> el doble ampersand tiene precedencia sobre la barra doble, que significa que <code>bold || thin && <length></code> es equivalente a <code>bold || [ thin && <length> ]</code>. Describe a <code>bold</code>, <code>thin</code>, <code><length></code>, <code>bold thin</code>, <code><length> bold</code>, o <code>thin <length> bold</code> pero no <code>bold <length></code><code> bold thin</code> porque bold, si no es omitido debe colocarse antes o después de el componente<code> thin && <length></code></div>
<h3 id="Barra_simple">Barra simple</h3>
<p>Separar dos o mas componentes con <em>una barra simple</em>, <code>|</code>, quiere decir que todas las entidades son opciones exclusivas: <strong>exactamente una de estas opciones debe estar presente. </strong>Esto es tipicamente usado para separar una lista de posibles palabras clave.</p>
<pre class="syntaxbox"><percentage> | <length> | left | center | right | top | bottom</pre>
<p>El ejemplo empareja con los siguientes valores:</p>
<ul>
<li><code>3%</code></li>
<li><code>0</code></li>
<li><code>3.5em</code></li>
<li><code>left</code></li>
<li><code>center</code></li>
<li><code>right</code></li>
<li><code>top</code></li>
<li><code>bottom</code></li>
</ul>
<p>Pero no</p>
<ul>
<li><code>center 3%</code> porque solo uno de los componentes debe estar presente</li>
<li><code>3em 4.5em</code> porque un componente debe estar presente máximo una vez.</li>
</ul>
<div class="note">
<p><strong>Note:</strong> la barra doble tiene precedencia sobre la barra simple, quiere decir que <code>bold | thin || <length></code> es equivalente a <code>bold | [ thin || <length> ]</code>. Describe <code>bold</code>, <code>thin</code>, <code><length></code>, <code><length> thin</code>, o <code>thin <length> </code>pero no <code>bold <length></code><code> </code>porque solo una entidad de cada lado del combinador <code>|</code> puede estar presente.</p>
</div>
<h2 id="Multiplicadores_de_valores_de_componentes">Multiplicadores de valores de componentes</h2>
<p>Un multiplicador es un símbolo que indica cuantas veces una entidad precedente puede ser repetida. Sin un multiplicador, una entidad debe aparecer exactamente una vez.</p>
<p>Note que los multiplicadores no pueden sumarse y tienen precedencia sobre los combinadores.</p>
<h3 id="Asterisco_(*)">Asterisco (<code>*</code>)</h3>
<p>El <em>multiplicador asterisco </em>indica que la entidad puede aparecer <strong>cero, una o varias veces.</strong></p>
<pre class="syntaxbox"><code>bold smaller*</code></pre>
<p>El ejemplo empareja con los siguientes valores:</p>
<ul>
<li><code>bold</code></li>
<li><code>bold smaller</code></li>
<li><code>bold smaller smaller</code></li>
<li><code>bold smaller smaller smaller</code> y así sucesivamente</li>
</ul>
<p>Pero no:</p>
<ul>
<li><code>smaller</code> porque <code>bold</code> esta yuxtapuesto y debe aparecer antes de la palabra clave <code>smaller</code></li>
</ul>
<h3 id="Suma_()">Suma (<code>+</code>)</h3>
<p>El <em>multiplicador suma </em>indica que la entidad puede aparecer <strong>una o varias veces.</strong></p>
<pre class="syntaxbox"><code>bold smaller+</code></pre>
<p>El ejemplo empareja con los siguientes valores:</p>
<ul>
<li><code>bold smaller</code></li>
<li><code>bold smaller smaller</code></li>
<li><code>bold smaller smaller smaller</code> y sucesivamente</li>
</ul>
<p>Pero no:</p>
<ul>
<li><code>bold</code> porque <code>smaller</code> debe aparecer al menos una vez</li>
<li><code>smaller</code> porque <code>bold</code> esta yuxtapuesto y debe aparecer antes de cualquier palabra clave <code>smaller</code></li>
</ul>
<h3 id="Pregunta_()">Pregunta (<code>?</code>)</h3>
<p>El <em>multiplicador pregunta </em>indica que la entidad es opcional y <strong>debe aparecer cero o una vez</strong></p>
<pre class="syntaxbox"><code>bold smaller?</code></pre>
<p>El ejemplo empareja con los siguientes valores:</p>
<ul>
<li><code>bold</code></li>
<li><code>bold smaller</code></li>
</ul>
<p>Pero no:</p>
<ul>
<li><code>bold smaller smaller</code> porque <code>smaller</code> debe aparecer como máximo una vez</li>
<li><code>smaller bold</code> porque <code>bold</code> esta yuxtapuesto y debe aparecer antes de cualquier palabra clave <code>smaller</code></li>
</ul>
<h3 id="Llaves_(_)">Llaves (<code>{ }</code>)</h3>
<p>El <em>multiplicador llaves, </em>encierra a dos enteros A y B separados por una coma, indica que la entidad <strong>debe aparecer al menos A veces y como mas B veces</strong></p>
<pre class="syntaxbox"><code>bold smaller{1,3}</code></pre>
<p>El ejemplo empareja con los siguientes valores:</p>
<ul>
<li><code>bold smaller</code></li>
<li><code>bold smaller smaller</code></li>
<li><code>bold smaller smaller smaller</code></li>
</ul>
<p>Pero no:</p>
<ul>
<li><code>bold</code> porque <code>smaller</code> debe aparecer al menos una vez</li>
<li><code>bold smaller smaller smaller smaller</code> porque <code>smaller</code> debe aparecer un máximo de tres veces.</li>
<li><code>smaller bold</code> porque <code>bold</code> esta yuxtapuesto u debe aparecer antes de cualquier palabra clave <code>smaller</code></li>
</ul>
<h3 id="Hash_()">Hash (<code>#</code>)</h3>
<p>El <em>multiplicador hash</em> indica que la entidad puede repetirse <strong>una o mas veces </strong>(como con el multiplicador de suma) pero cada ocurrencia se <strong>separa por una coma</strong> ('<code>,</code>').</p>
<pre class="syntaxbox"><code>bold smaller#</code></pre>
<p>El ejemplo empareja con los siguientes valores:</p>
<ul>
<li><code>bold smaller</code></li>
<li><code>bold smaller, smaller</code></li>
<li><code>bold smaller, smaller, smaller</code> y así sucesivamente</li>
</ul>
<p>Pero no:</p>
<ul>
<li><code>bold</code> porque <code>smaller</code> debe aparecer al menos una vez</li>
<li><code>bold smaller smaller smaller</code> porque las diferentes ocurrencias de <code>smaller</code> deben estar separadas por comas</li>
<li><code>smaller</code> porque <code>bold</code> esta yuxtapuesto y debe aparecer antes de cualquier palabra clave <code>smaller</code></li>
</ul>
<h2 id="Sumario">Sumario</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Símbolo</th>
<th scope="col">Nombre</th>
<th scope="col">Descripción</th>
<th scope="col">Ejemplo</th>
</tr>
</thead>
<tbody>
<tr>
<th colspan="4">Combinadores</th>
</tr>
<tr>
<td> </td>
<td>Yuxtaposición</td>
<td>Componentes obligatorios que deben aparecer en el mismo orden</td>
<td><code>solid <length></code></td>
</tr>
<tr>
<td><code>&&</code></td>
<td>Doble ampersand</td>
<td>Componentes obligatorios pero que pueden aparecer en cualquier orden</td>
<td><code>length> && <string></code></td>
</tr>
<tr>
<td><code>||</code></td>
<td>Barra doble</td>
<td>Al menos uno de los componentes debe estar presente, y pueden aparecer en cualquier orden</td>
<td><code><'border-image-outset'> || <'border-image-slice'></code></td>
</tr>
<tr>
<td><code>|</code></td>
<td>Barra simple</td>
<td>Exactamente uno de los componentes debe estar presente</td>
<td><code>smaller | small | normal | big | bigger</code></td>
</tr>
<tr>
<td><code>[ ]</code></td>
<td>Corchetes</td>
<td>Agrupa componentes para sobreescribir las reglas de precedencia</td>
<td><code>bold [ thin && <length> ]</code></td>
</tr>
<tr>
<th colspan="4">Multiplicadores</th>
</tr>
<tr>
<td> </td>
<td>Sin multiplicador</td>
<td>Exactamente 1 vez</td>
<td><code>solid</code></td>
</tr>
<tr>
<td><code>*</code></td>
<td>Asterisco</td>
<td>0 or more times</td>
<td><code>bold smaller*</code></td>
</tr>
<tr>
<td><code>+</code></td>
<td>Suma</td>
<td>1 o mas veces</td>
<td><code>bold smaller+</code></td>
</tr>
<tr>
<td><code>?</code></td>
<td>Pregunta</td>
<td>0 o 1 vez (es <em>opcional)</em></td>
<td><code>bold smaller?</code></td>
</tr>
<tr>
<td><code>{A,B}</code></td>
<td>Llaves</td>
<td>Al menos <code>A</code> veces, como mas <code>B</code> veces</td>
<td><code>bold smaller{1,3}</code></td>
</tr>
<tr>
<td><code>#</code></td>
<td>Hash</td>
<td>1 o mas veces, pero cada ocurrencia separada por una coma ('<code>,</code>')</td>
<td><code>bold smaller#</code></td>
</tr>
</tbody>
</table>
<h2 id="Especificaciones">Especificaciones</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Especificación</th>
<th scope="col">Estado</th>
<th scope="col">Comentario</th>
</tr>
<tr>
<td>{{ SpecName('CSS3 Values', '#value-defs', 'Value definition syntax') }}</td>
<td>{{ Spec2('CSS3 Values') }}</td>
<td>Desde {{ SpecName('CSS2.1', 'about.html#value-defs', 'Value definition syntax') }}, añade el multiplicador hash</td>
</tr>
<tr>
<td>{{ SpecName('CSS2.1', 'about.html#value-defs', 'Value definition syntax') }}</td>
<td>{{ Spec2('CSS2.1') }}</td>
<td>Desde {{ SpecName('CSS1', '#notation-for-property-values', 'Value definition syntax') }}, añade el combinador doble ampersand</td>
</tr>
<tr>
<td>{{SpecName('CSS1', '#notation-for-property-values', 'Value definition syntax') }}</td>
<td>{{ Spec2('CSS1') }}</td>
<td>Definición inicial</td>
</tr>
</tbody>
</table>
<h2 id="Vea_también">Vea también</h2>
<ul>
<li>{{ CSS_key_concepts() }}</li>
</ul>
|