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
Copy file name to clipboardExpand all lines: 8-web-components/2-custom-elements/article.md
+14-14Lines changed: 14 additions & 14 deletions
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,9 @@
1
1
2
2
# Elementos personalizados
3
3
4
-
Podemos crear elementos HTML personalizados, descritos por nuestra clase, con sus propios métodos, propiedades, eventos y demás.
4
+
Podemos crear elementos HTML personalizados con nuestras propias clases, con sus propios métodos, propiedades, eventos y demás.
5
5
6
-
Una vez que el elemento personalizado es definido, podemos usarlo a la par de elementos HTML nativos.
6
+
Una vez que definimos el elemento personalizado, podemos usarlo a la par de elementos HTML nativos.
7
7
8
8
Esto es grandioso, porque el el diccionario HTML es rico pero no infinito. No hay `<aletas-faciles>`, `<gira-carrusel>`, `<bella-descarga>`... Solo piensa en cualquier otra etiqueta que puedas necesitar.
9
9
@@ -12,7 +12,7 @@ Podemos definirlos con una clase especial, y luego usarlos como si siempre hubie
12
12
Hay dos clases de elementos personalizados:
13
13
14
14
1.**Elementos personalizados autónomos** -- elementos "todo-nuevo", extendiendo la clase abstracta `HTMLElement`.
15
-
2.**Elementos incorporados personalizados** -- extendiendo elementos nativos, por ejemplo un botón personalizado basado en `HTMLButtonElement`.
15
+
2.**Elementos nativos personalizados** -- extendiendo elementos nativos, por ejemplo un botón personalizado basado en `HTMLButtonElement`.
16
16
17
17
Primero cubriremos los elementos autónomos, luego pasaremos a la personalización de elementos nativos.
18
18
@@ -59,21 +59,21 @@ class MyElement extends HTMLElement {
59
59
Después de ello, necesitamos registrar el elemento:
60
60
61
61
```js
62
-
// hacer que el navegador conozca que <my-element> es servido por nuestra nueva clase
62
+
// hacer saber al navegador que <my-element> es servido por nuestra nueva clase
63
63
customElements.define("my-element", MyElement);
64
64
```
65
65
66
-
A partir de ello, para cada elemento HTML con la etiqueta `<my-element>` se crea una instancia de `MyElement` y los métodos mencionados son llamados. También podemos insertarlo con JavaScript: `document.createElement('my-element')`.
66
+
A partir de ello, para cada elemento HTML con la etiqueta `<my-element>` se crea una instancia de `MyElement` y se llaman los métodos mencionados. También podemos insertarlo con JavaScript: `document.createElement('my-element')`.
67
67
68
-
```smart header="Los elementos personalizados deben incluir un guion `-`"
69
-
Los elemento personalizados deben incluir un guion corto `-`. Por ejemplo, `my-element` y `super-button` son nombres válidos, pero `myelement` no lo es.
68
+
```smart header="Los nombres de los elementos personalizados deben incluir un guion `-`"
69
+
Los elemento personalizados deben incluir un guion corto `-` en su nombre. Por ejemplo, `my-element` y `super-button` son nombres válidos, pero `myelement` no lo es.
70
70
71
-
Esto es para asegurar que no haya conflicto de nombres entre los elementos nativos y los personalizados.
71
+
Esto se hace para asegurar que no haya conflicto de nombres entre los elementos nativos y los personalizados.
72
72
```
73
73
74
74
## Ejemplo: "time-formatted"
75
75
76
-
Ejemplo: ya existe un elemento `<time>` en HTML para presentar fecha y hora, pero no hace ningún formateo por sí mismo.
76
+
Ya existe un elemento `<time>` en HTML para presentar fecha y hora, pero este no hace ningún formateo por sí mismo.
77
77
78
78
Construyamos el elemento `<time-formatted>` que muestre la hora en un bonito formato y reconozca la configuración de lengua local:
1. La clase tiene un solo método, `connectedCallback()`, que es llamado por el navegador cuando se agrega el elemento `<time-formatted>` a la página (o cuando el analizador HTML lo detecta). Este método usa el formateador de datos nativo [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat), bien soportado por los navegadores, para mostrar una agradable hora formateada.
118
+
1. La clase tiene un solo método, `connectedCallback()`, que es llamado por el navegador cuando se agrega el elemento `<time-formatted>` a la página o cuando el analizador HTML lo detecta. Este método usa el formateador de datos nativo [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat), bien soportado por los navegadores, para mostrar una agradable hora formateada.
119
119
2. Necesitamos registrar nuestro nuevo elemento con `customElements.define(tag, class)`.
120
120
3. Y podremos usarlo por doquier.
121
121
@@ -128,7 +128,7 @@ Tal elemento "undefined" puede ser estilizado con el selector CSS `:not(:defined
128
128
Una vez que `customElement.define` es llamado, estos elementos son "actualizados": para cada elemento, una nueva instancia de `TimeFormatted`
129
129
es creada y `connectedCallback` es llamado. Se vuelven `:defined`.
130
130
131
-
Para obtener información acerca los elementos personalizados, tenemos los métodos:
131
+
Para obtener información acerca de los elementos personalizados, tenemos los métodos:
132
132
- `customElements.get(name)` -- devuelve la clase del elemento personalizado con el `name` dado,
133
133
- `customElements.whenDefined(name)` -- devuelve una promesa que se resuelve (sin valor) cuando un elemento personalizado con el `name` dado se vuelve `defined`.
134
134
```
@@ -240,7 +240,7 @@ customElements.define('user-info', class extends HTMLElement {
240
240
*/!*
241
241
```
242
242
243
-
Si lo ejecutas, el `alert`está vacío.
243
+
Si lo ejecutas, el `alert`estará vacío.
244
244
245
245
Esto es porque no hay hijos en aquel estadio, pues el DOM no está finalizado. Se conectó el elemento personalizado `<user-info>` y está por proceder con sus hijos, pero no lo hizo aún.
Nuestro nuevo botón extiende el 'button'nativo. Así mantenemos los mismos estilos y características estándar, como el atributo `disabled`.
363
+
Nuestro nuevo botón extiende el 'button'nativo. Así mantenemos los mismos estilos y características estándar, como por ejemplo el atributo `disabled`.
364
364
365
365
## Referencias
366
366
@@ -397,4 +397,4 @@ Los elementos personalizados pueden ser de dos tipos:
397
397
/* <button is="my-button"> */
398
398
```
399
399
400
-
Los elementos personalizados tienen muy buen soporte entre los navegadores. Hay un polyfill <https://github.com/webcomponents/polyfills/tree/master/packages/webcomponentsjs>.
400
+
Los elementos personalizados tienen muy buen soporte entre los navegadores. Existe un polyfill <https://github.com/webcomponents/polyfills/tree/master/packages/webcomponentsjs>.
0 commit comments