You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A built-in`<template>`element serves as a storage for HTML markup templates. The browser ignores it contents, only checks for syntax validity, but we can access and use it in JavaScript, to create other elements.
4
+
Un elemento`<template>`incorporado sirve como almacenamiento para plantillas de HTML markup. El navegador ignora su contenido, solo verifica la validez de la sintaxis, pero podemos acceder a él y usarlo en JavaScript, para crear otros elementos.
5
5
6
-
In theory, we could create any invisible element somewhere in HTML for HTML markup storage purposes. What's special about`<template>`?
6
+
En teoría, podríamos crear cualquier elemento invisible en algún lugar de HTML par fines de almacenamiento de HTML markup. ¿Qué hay de especial en`<template>`?
7
7
8
-
First, its content can be any valid HTML, even if it normally requires a proper enclosing tag.
8
+
En primer lugar, su contenido puede ser cualquier HTML válido, incluso si normalmente requiere una etiqueta adjunta adecuada.
9
9
10
-
For example, we can put there a table row`<tr>`:
10
+
Por ejemplo, podemos poner una fila de tabla`<tr>`:
11
11
```html
12
12
<template>
13
13
<tr>
14
-
<td>Contents</td>
14
+
<td>Contenidos</td>
15
15
</tr>
16
16
</template>
17
17
```
18
18
19
-
Usually, if we try to put `<tr>`inside, say, a `<div>`, the browser detects the invalid DOM structure and "fixes" it, adds `<table>`around. That's not what we want. On the other hand, `<template>`keeps exactly what we place there.
19
+
Normalmente, si intentamos poner `<tr>`dentro, digamos, de un `<div>`, el navegador detecta la estructura DOM como inválida y la “arregla”, y añade un `<table>`alrededor. Eso no es lo que queremos. Sin embargo, `<template>`mantiene exactamente lo que ponemos allí.
20
20
21
-
We can put styles and scripts into `<template>` as well:
21
+
También podemos poner estilos y scripts dentro de `<template>`:
22
22
23
23
```html
24
24
<template>
25
25
<style>
26
26
p { font-weight: bold; }
27
27
</style>
28
28
<script>
29
-
alert("Hello");
29
+
alert("Hola");
30
30
</script>
31
31
</template>
32
32
```
33
33
34
-
The browser considers `<template>`content "out of the document": styles are not applied, scripts are not executed, `<video autoplay>`is not run, etc.
34
+
El navegador considera al contenido `<template>`“fuera del documento”: Los estilos no son aplicados, los scripts no son ejecutados, `<video autoplay>`no es ejecutado, etc.
35
35
36
-
The content becomes live (styles apply, scripts run etc) when we insert it into the document.
36
+
El contenido cobra vida (estilos aplicados, scripts, etc) cuando los insertamos dentro del documento.
37
37
38
-
## Inserting template
38
+
## Insertando template
39
39
40
-
The template content is available in its`content`property as a [DocumentFragment](info:modifying-document#document-fragment) -- a special type of DOM node.
40
+
El contenido template está disponible en su propiedad`content`como un [DocumentFragment](info:modifying-document#document-fragment): un tipo especial de nodo DOM.
41
41
42
-
We can treat it as any other DOM node, except one special property: when we insert it somewhere, its children are inserted instead.
42
+
Podemos tratarlo como a cualquier otro nodo DOM, excepto por una propiedad especial: cuando lo insertamos en algún lugar, sus hijos son insertados en su lugar.
43
43
44
-
For example:
44
+
Por ejemplo:
45
45
46
46
```html run
47
47
<templateid="tmpl">
48
48
<script>
49
-
alert("Hello");
49
+
alert("Hola");
50
50
</script>
51
-
<divclass="message">Hello, world!</div>
51
+
<divclass="message">¡Hola mundo!</div>
52
52
</template>
53
53
54
54
<script>
55
55
let elem =document.createElement('div');
56
56
57
57
*!*
58
-
//Clone the template content to reuse it multiple times
58
+
//Clona el contenido de la plantilla para reutilizarlo múltiples veces
59
59
elem.append(tmpl.content.cloneNode(true));
60
60
*/!*
61
61
62
62
document.body.append(elem);
63
-
//Now the script from <template> runs
63
+
//Ahora el script de <template> se ejecuta
64
64
</script>
65
65
```
66
66
67
-
Let's rewrite a Shadow DOM example from the previous chapter using`<template>`:
67
+
Reescribamos un ejemplo de Shadow DOM del capítulo anterior usando`<template>`:
68
68
69
69
```html run untrusted autorun="no-epub" height=60
70
70
<templateid="tmpl">
71
71
<style>p { font-weight: bold; } </style>
72
72
<pid="message"></p>
73
73
</template>
74
74
75
-
<divid="elem">Click me</div>
75
+
<divid="elem">Haz clic sobre mi</div>
76
76
77
77
<script>
78
78
elem.onclick=function() {
@@ -82,14 +82,14 @@ Let's rewrite a Shadow DOM example from the previous chapter using `<template>`:
elem.shadowRoot.getElementById('message').innerHTML="Hello from the shadows!";
85
+
elem.shadowRoot.getElementById('message').innerHTML="¡Saludos desde las sombras!";
86
86
};
87
87
</script>
88
88
```
89
89
90
-
In the line`(*)` when we clone and insert `tmpl.content`, as its`DocumentFragment`, its children (`<style>`, `<p>`) are inserted instead.
90
+
En la línea`(*)`, cuando clonamos e insertamos `tmpl.content` como su`DocumentFragment`, sus hijos (`<style>`, `<p>`) se insertan en su lugar.
91
91
92
-
They form the shadow DOM:
92
+
Ellos forman el shadow DOM:
93
93
94
94
```html
95
95
<divid="elem">
@@ -99,18 +99,18 @@ They form the shadow DOM:
99
99
</div>
100
100
```
101
101
102
-
## Summary
102
+
## Resumen
103
103
104
-
To summarize:
104
+
Para resumir:
105
105
106
-
-`<template>`content can be any syntactically correct HTML.
107
-
-`<template>`content is considered "out of the document", so it doesn't affect anything.
108
-
-We can access`template.content`from JavaScript, clone it to reuse in a new component.
106
+
-El contenido `<template>`puede ser cualquier HTML sintácticamente correcto.
107
+
-El contenido `<template>`es considerado “fuera del documento”, para que no afecte a nada.
108
+
-Podemos acceder a`template.content`desde JavaScript, y clonarlo para reusarlo en un nuevo componente.
109
109
110
-
The `<template>`tag is quite unique, because:
110
+
La etiqueta `<template>`es bastante única, ya que:
111
111
112
-
-The browser checks HTML syntax inside it (as opposed to using a template string inside a script).
113
-
- ...But still allows use of any top-level HTML tags, even those that don't make sense without proper wrappers (e.g. `<tr>`).
114
-
-The content becomes interactive: scripts run, `<video autoplay>`plays etc, when inserted into the document.
112
+
-El navegador comprueba la sintaxis HTML dentro de él (lo opuesto a usar una plantilla string dentro de un script).
113
+
- ...Pero aún permite el uso de cualquier etiqueta HTML de alto nivel, incluso aquellas que no tienen sentido sin un envoltorio adecuado (por ej.`<tr>`).
114
+
-El contenido se vuelve interactivo: cuando es insertado en el documento los scripts se ejecutan, `<video autoplay>`se reproduce, etc.
115
115
116
-
The `<template>`element does not feature any iteration mechanisms, data binding or variable substitutions, but we can implement those on top of it.
116
+
El elemento `<template>`no ofrece ningún mecanismo de iteración, enlazamiento de datos o sustitución de variables, pero podemos implementar los que están por encima.
0 commit comments