diff --git a/files/es/web/api/element/animate/index.md b/files/es/web/api/element/animate/index.md index e5b1b88706cf0d..ae2fbc9976896d 100644 --- a/files/es/web/api/element/animate/index.md +++ b/files/es/web/api/element/animate/index.md @@ -4,9 +4,9 @@ slug: Web/API/Element/animate translation_of: Web/API/Element/animate browser-compat: api.Element.animate --- -{{APIRef('Web Animations')}} +{{APIRef}} -El método **`animate()`** de la interfaz {{domxref("Element")}} es un método abreviado el cual crea un nuevo {{domxref("Animation")}}, aplicado al elemento, luego reproduce la animación. Devuelve la instancia creada de un objeto {{domxref("Animation")}}. +El método `animate()` de la interfaz {{domxref("Element")}} es un método abreviado el cual crea un nuevo {{domxref("Animation")}}, aplicado al elemento, luego reproduce la animación. Devuelve la instancia creada de un objeto {{domxref("Animation")}}. > **Nota:** Los elementos pueden tener multiples animaciones aplicadas a ellos. Puedes obtener una > lista de las animaciones que afectan a un elemento llamando a {{domxref("Element.getAnimations()")}}. diff --git a/files/es/web/api/element/animationend_event/index.html b/files/es/web/api/element/animationend_event/index.html deleted file mode 100644 index de41f405169cc9..00000000000000 --- a/files/es/web/api/element/animationend_event/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: animationend -slug: Web/API/Element/animationend_event -translation_of: Web/API/HTMLElement/animationend_event -original_slug: Web/API/HTMLElement/animationend_event ---- -
El evento animationend
es lanzado cuando una animación CSS se ha completado.
Propiedad | -Tipo | -Descripción | -
---|---|---|
target {{ReadOnlyInline}} |
- {{domxref("EventTarget")}} | -The event target (the topmost target in the DOM tree). | -
type {{ReadOnlyInline}} |
- {{domxref("DOMString")}} | -The type of event. | -
bubbles {{ReadOnlyInline}} |
- boolean |
- Does the event normally bubble? | -
cancelable {{ReadOnlyInline}} |
- boolean |
- Is it possible to cancel the event? | -
animationName {{ReadOnlyInline}} |
- {{domxref("DOMString")}} | -The name of the CSS property associated with the transition. | -
elapsedTime {{ReadOnlyInline}} |
- Float | -The amount of time the animation has been running, in seconds, when this event fired, excluding any time the animation was paused. For an "animationstart" event, the elapsedTime is zero unless there was a negative value for animation-delay , in which case the event will be fired with an elapsedTime of (-1 * delay). |
-
El método Element.attachShadow()
adjunta un árbol DOM "sombra" al elemento especificado y devuelve una referencia a su raíz {{domxref("ShadowRoot")}}.
No se puede adjuntar un DOM "sombra" a cualquier tipo de elemento. Hay algunos que no pueden tenerlo por razones de seguridad (por ejemplo {{htmlelement("a")}}), y algunos más. Los siguientes elementos de la lista pueden adjuntar un DOM "sombra":
- -var shadowroot = element.attachShadow(shadowRootInit); -- -
shadowRootInit
ShadowRootInit
, que puede contener los siguientes campos:
- mode
Una cadena que especifique el modo de encapsulación para el árbol DOM "sombra". Este puede tener uno de los siguientes valores:
- -open
: Los elementos del árbol son accesibles desde fuera del elemento, por ejemplo usando {{domxref("Element.shadowRoot")}}:element.shadowRoot; // Returns a ShadowRoot obj-
closed
: Deniega el acceso a lo(s) nodo(s) desde fuera mediante JavaScript:element.shadowRoot; // Returns null --
delegatesFocus
true
, mitiga problemas de comportamiento relativos a la capacidad de tomar el foco. Cuando se hace click en una parte del DOM "sombra" que no puede tomar el foco, la primera parte del árbol que pueda tomar el foco lo hará, y le dará cualquier estilo disponible mediante CSS con :focus
.Devuelve un objeto {{domxref("ShadowRoot")}}.
- -Excepción | -Explicación | -
---|---|
InvalidStateError |
- El elemento que estás intentando adjuntar ya tiene una DOM "sombra". | -
NotSupportedError |
- Estás intentando adjuntar DOM "sombra" a un elemento fuera del espacio de nombres HTML, o el elemento no puede tener una DOM "sombra". adjunta (ver abajo). | -
Los siguientes ejemplos están tomados de la demo word-count-web-component (verlo también en modo live). Puedes ver que usamos attachShadow()
en mitad del código para crear una DOM "sombra", a la que luego adjuntamos el contenido de nuesto elemento personalizado.
// Crear una clase para el elemento -class CuentaPalabras extends HTMLParagraphElement { - constructor() { - // Siemmpre llamar a super en el constructor - super(); - - // contar las palabras en el nodo padre - var cpPadre = this.parentNode; - - function cuentaPalabras(nodo){ - var texto = nodo.innerText || nodo.textContent - return texto.trim().split(/\s+/g).length; - } - - var cuenta = 'Palabras: ' + cuentaPalabras(cpPadre); - - // Crear un DOM "sombra" - var sombra = this.attachShadow({mode: 'open'}); - - // Crear el nodo de texto y añadirle el contador de palabras - var texto = document.createElement('span'); - texto.textContent = count; - - // Añadirlo a la sombra - sombra.appendChild(texto); - - // Actualizar el contador cuando el contenido del elemento cambie - setInterval(function() { - var cuenta = 'Palabras: ' + cuentaPalabras(cpPadre); - texto.textContent = cuenta; - }, 200) - } -} - -// Definir el nuevo elemento -customElements.define('cuenta-palabras', CuentaPalabras , { extends: 'p' });- -
Specification | -Status | -Comment | -
---|---|---|
{{SpecName('DOM WHATWG', '#dom-element-attachshadow', 'attachShadow()')}} | -{{Spec2('DOM WHATWG')}} | -- |
{{Compat("api.Element.attachShadow")}}
diff --git a/files/es/web/api/element/attachshadow/index.md b/files/es/web/api/element/attachshadow/index.md new file mode 100644 index 00000000000000..f25416848937b5 --- /dev/null +++ b/files/es/web/api/element/attachshadow/index.md @@ -0,0 +1,125 @@ +--- +title: Element.attachShadow() +slug: Web/API/Element/attachShadow +translation_of: Web/API/Element/attachShadow +--- +{{APIRef}} + +El método `Element.attachShadow()` adjunta un árbol DOM "sombra" al elemento especificado y devuelve una referencia a su raíz {{domxref("ShadowRoot")}}. + +## Elementos a los que puedes adjuntar un DOM "sombra" + +No se puede adjuntar un DOM "sombra" a cualquier tipo de elemento. Hay algunos que no pueden tenerlo por razones de seguridad (por ejemplo {{htmlelement("a")}}), y algunos más. Los siguientes elementos de la lista **pueden** adjuntar un DOM "sombra": + +- Cualquier elemento autónomo con un [nombre válido](https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name "nombre válido") +- {{htmlelement("article")}} +- {{htmlelement("aside")}} +- {{htmlelement("blockquote")}} +- {{htmlelement("body")}} +- {{htmlelement("div")}} +- {{htmlelement("footer")}} +- {{htmlelement("h1")}} +- {{htmlelement("h2")}} +- {{htmlelement("h3")}} +- {{htmlelement("h4")}} +- {{htmlelement("h5")}} +- {{htmlelement("h6")}} +- {{htmlelement("header")}} +- {{htmlelement("main")}} +- {{htmlelement("nav")}} +- {{htmlelement("p")}} +- {{htmlelement("section")}} +- {{htmlelement("span")}} + +## Syntaxis + +``` +var shadowroot = element.attachShadow(shadowRootInit); +``` + +### Parámetros + +- `shadowRootInit` + + - : Un diccionario `ShadowRootInit` , que puede contener los siguientes campos: + + - `mode` + + - : Una cadena que especifique el _modo de encapsulación_ para el árbol DOM "sombra". Este puede tener uno de los siguientes valores: + + - `open`: Los elementos del árbol son accesibles desde fuera del elemento, por ejemplo usando {{domxref("Element.shadowRoot")}}: + + ``` + element.shadowRoot; // Returns a ShadowRoot obj + ``` + + - `closed`: Deniega el acceso a lo(s) nodo(s) desde fuera mediante JavaScript: + + ``` + element.shadowRoot; // Returns null + ``` + + - `delegatesFocus` + - : Un booleano que, si se establece a `true`, mitiga problemas de comportamiento relativos a la capacidad de tomar el foco. Cuando se hace click en una parte del DOM "sombra" que no puede tomar el foco, la primera parte del árbol que pueda tomar el foco lo hará, y le dará cualquier estilo disponible mediante CSS con `:focus`. + +### Valor retorno + +Devuelve un objeto {{domxref("ShadowRoot")}}. + +### Excepciones + +| Excepción | Explicación | +| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `InvalidStateError` | El elemento que estás intentando adjuntar ya tiene una DOM "sombra". | +| `NotSupportedError` | Estás intentando adjuntar DOM "sombra" a un elemento fuera del espacio de nombres HTML, o el elemento no puede tener una DOM "sombra". adjunta (ver abajo). | + +## Ejemplos + +Los siguientes ejemplos están tomados de la demo [word-count-web-component](https://github.com/mdn/web-components-examples/tree/master/word-count-web-component) ([verlo también en modo live](https://mdn.github.io/web-components-examples/word-count-web-component/)). Puedes ver que usamos `attachShadow()` en mitad del código para crear una DOM "sombra", a la que luego adjuntamos el contenido de nuesto elemento personalizado. + +```js +// Crear una clase para el elemento +class CuentaPalabras extends HTMLParagraphElement { + constructor() { + // Siemmpre llamar a super en el constructor + super(); + + // contar las palabras en el nodo padre + var cpPadre = this.parentNode; + + function cuentaPalabras(nodo){ + var texto = nodo.innerText || nodo.textContent + return texto.trim().split(/\s+/g).length; + } + + var cuenta = 'Palabras: ' + cuentaPalabras(cpPadre); + + // Crear un DOM "sombra" + var sombra = this.attachShadow({mode: 'open'}); + + // Crear el nodo de texto y añadirle el contador de palabras + var texto = document.createElement('span'); + texto.textContent = count; + + // Añadirlo a la sombra + sombra.appendChild(texto); + + // Actualizar el contador cuando el contenido del elemento cambie + setInterval(function() { + var cuenta = 'Palabras: ' + cuentaPalabras(cpPadre); + texto.textContent = cuenta; + }, 200) + } +} + +// Definir el nuevo elemento +customElements.define('cuenta-palabras', CuentaPalabras , { extends: 'p' }); +``` + +## Especificaciones + +{{Specifications}} + +## Compatibilidad con navegadores + +{{Compat}} diff --git a/files/es/web/api/element/attributes/index.html b/files/es/web/api/element/attributes/index.html deleted file mode 100644 index 69ecb19df5fe29..00000000000000 --- a/files/es/web/api/element/attributes/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Element.attributes -slug: Web/API/Element/attributes -translation_of: Web/API/Element/attributes ---- -{{ APIRef("DOM") }}
- -La propiedad Element.attributes
retorna una colección "viva" cuyos nodos son todos los atributos registrados en el nodo especificado. Es un {{domxref("NamedNodeMap")}}, no un Array
, así que no tiene los métodos de {{jsxref("Array")}} y los índices de nodo {{domxref("Attr")}} pueden diferir en cada navegador. Más concretamente attributes
es un conjunto de pares de cadenas nombre/valor que representan la información relativa a cada atributo.
var attr = element.attributes; -- -
// Obtiene el primer elemento <p> en el documento -var para = document.getElementsByTagName("p")[0]; -var atts = para.attributes;- -
La indexación numérica es útil para recorrer de todos los atributos de un elemento.
- El siguiente ejemplo corre a través de los atributors del elemento con id "p1" en el documento, e imprime el valor de cada atributo.
<!DOCTYPE html> - -<html> - - <head> - <title>Attributes example</title> - <script type="text/javascript"> - function listAttributes() { - var paragraph = document.getElementById("paragraph"); - var result = document.getElementById("result"); - - // Primero, verifiquenmos que el párrafo tiene algún atributo - if (paragraph.hasAttributes()) { - var attrs = paragraph.attributes; - var output = ""; - for(var i = attrs.length - 1; i >= 0; i--) { - output += attrs[i].name + "->" + attrs[i].value; - } - result.value = output; - } else { - result.value = "No hay atributos que mostrar"; - } - } - </script> - </head> - -<body> - <p id="paragraph" style="color: green;">Párrafo de ejemplo</p> - <form action=""> - <p> - <input type="button" value="Muestra el nombre cada atributo y su valor" - onclick="listAttributes();"> - <input id="result" type="text" value=""> - </p> - </form> -</body> -</html>- -
Especificación | -Estado | -Observaciones | -
---|---|---|
{{SpecName('DOM WHATWG', '#dom-element-attributes', 'Element.attributes')}} | -{{Spec2('DOM WHATWG')}} | -From {{SpecName('DOM3 Core')}}, moved from {{domxref("Node")}} a {{domxref("Element")}} | -
{{SpecName('DOM3 Core', 'core.html#ID-84CF096', 'Element.attributes')}} | -{{Spec2('DOM3 Core')}} | -Sin cambios desde {{SpecName('DOM2 Core')}} | -
{{SpecName('DOM2 Core', 'core.html#ID-84CF096', 'Element.attributes')}} | -{{Spec2('DOM2 Core')}} | -Sin cambios desde {{SpecName('DOM1')}} | -
{{SpecName('DOM1', 'level-one-core.html#ID-84CF096', 'Element.attributes')}} | -{{Spec2('DOM1')}} | -Definición inicial. | -
en el documento +var para = document.getElementsByTagName("p")[0]; +var atts = para.attributes; +``` + +### Enumerando atributos de elemtentos + +La indexación numérica es útil para recorrer de todos los atributos de un elemento. +El siguiente ejemplo corre a través de los atributors del elemento con id "p1" en el documento, e imprime el valor de cada atributo. + +```html + + + + +
+Párrafo de ejemplo
+ + + +``` + +## Especificaciones + +{{Specifications}} + +## Compatibilidad con navegadores + +{{Compat}} + +## Véase también + +- {{domxref("NamedNodeMap")}}, la interfaz del objeto retornado. +- Consideracións sobre compatibilidad cruzada entre navegadores: en [quirksmode](https://www.quirksmode.org/dom/w3c_core.html#attributes) diff --git a/files/es/web/api/element/blur_event/index.html b/files/es/web/api/element/blur_event/index.html deleted file mode 100644 index 4aad7427720016..00000000000000 --- a/files/es/web/api/element/blur_event/index.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: blur (evento) -slug: Web/API/Element/blur_event -tags: - - DOM -translation_of: Web/API/Element/blur_event -original_slug: Web/Events/blur ---- -El evento blur
es disparado cuando un elemento ha perdido su foco. La diferencia principal entre este evento y focusout
es que sólo el último se propaga (bubbles).
Nota: El valor de {{domxref("Document.activeElement")}} varía a traves de navegadores mientras este evento está siendo manejado ({{bug(452307)}}): IE10 lo agrega al elemento al cual el foco se movera, mientras Firefox y Chrome muy seguido lo agregan al cuerpo del documento.
Propiedad | -Tipo | -Descripción | -
---|---|---|
target {{readonlyInline}} |
- {{domxref("EventTarget")}} | -Objetivo del evento (elemento DOM) | -
type {{readonlyInline}} |
- {{domxref("DOMString")}} | -El tipo de evento. | -
bubbles {{readonlyInline}} |
- {{jsxref("Boolean")}} | -Si el elemento normalmente se propaga o no. | -
cancelable {{readonlyInline}} |
- {{jsxref("Boolean")}} | -Si el evento es cancelable o no. | -
relatedTarget {{readonlyInline}} |
- {{domxref("EventTarget")}} (DOM element) | -null | -
Hay dos maneras de implementar la delegación de eventos para este evento: usando el evento focusout
en exploradores que lo soporten, o cambiando el parámetro "useCapture" de addEventListener
a true
:
<form id="form"> - <input type="text" placeholder="text input"> - <input type="password" placeholder="password"> -</form>- -
var form = document.getElementById("form"); -form.addEventListener("focus", function( event ) { - event.target.style.background = "pink"; -}, true); -form.addEventListener("blur", function( event ) { - event.target.style.background = ""; -}, true);- -
{{EmbedLiveSample('Delegación_de_eventos')}}
- -{{ APIRef("DOM") }}
-La propiedad de sólo lectura ParentNode.childElementCount
devuelve un número del tipo unsigned long
que representa la cantidad de elementos hijo que penden del elemento padre (ParentNode).
Esta propiedad fue inicialmente definida en la interfaz pura {{domxref("ElementTraversal")}}. Como esta interfaz contenía dos conjuntos distintos de propiedades: una apuntaba al {{domxref("Node")}} con hijos y otra a los hijos, fueron trasladados a dos interfaces puras separadas: {{domxref("ParentNode")}} y {{domxref("ChildNode")}}. En este caso, childElementCount
se mudó a {{domxref("ParentNode")}}. Este es un cambio bastante técnico que no debería afectar a la compatibilidad.
var elCount = elementNodeReference.childElementCount; -- -
Espacificación | -Estado | -Comentario | -
---|---|---|
{{SpecName('DOM WHATWG', '#dom-parentnode-childElementCount', 'ParentNode.childElementCount')}} | -{{Spec2('DOM WHATWG')}} | -Dividida la interfaz ElementTraversal en {{domxref("ChildNode")}} y ParentNode . Este método está ahora definido en la segunda.- Se implementaron las nuevas interfaces en {{domxref("Document")}} y {{domxref("DocumentFragment")}}. |
-
{{SpecName('Element Traversal', '#attribute-childElementCount', 'ElementTraversal.childElementCount')}} | -{{Spec2('Element Traversal')}} | -Añadida su definición inicial a la interfaz pura ElementTraversal y se emplea en {{domxref("Element")}}. |
-
La propiedad de sólo lectura Element.classList
devuelve una colección activa de DOMTokenList
de los atributos de clase del elemento.
Usar classList
es una forma práctica de acceder a la lista de clases de un elemento como una cadena de texto delimitada por espacios a través de {{domxref("element.className")}}.
var elementClasses = elementNodeReference.classList; -- -
elementClasses es un DOMTokenList que representa el atributo clase de elementNodeReference. Si el atributo clase no está definido o está vacío, elementClasses.length devuelve 0. element.classList
por sí mismo es de sólo lectura, aunque puede ser modificado usando los métodos add()
y remove()
.
false
, si no, la añade y devuelve true
.true
, se añade la clase indicada, y si se evalúa como false
, la elimina.// div es una referencia de objeto al elemento <div> con class="foo bar" -div.classList.remove("foo"); -div.classList.add("anotherclass"); - -// si visible está presente la elimina, de lo contrario la añade -div.classList.toggle("visible"); - -// añadir/eliminar visible, dependiendo de la condición, i menor que 10 -div.classList.toggle("visible", i < 10 ); - -alert(div.classList.contains("foo")); - -// añadir o eliminar varias clases -div.classList.add("foo", "bar"); -div.classList.remove("foo", "bar"); - -// reemplazar la clase "foo" por "bar" -div.classList.replace("foo", "bar");- -
Las versiones de Firefox anteriores a la 26 no implementan el uso de múltiples argumentos en los métodos add/remove/toggle. Vea https://bugzilla.mozilla.org/show_bug.cgi?id=814014
-Especificación | -Estado | -Comentario | -
---|---|---|
{{SpecName("HTML WHATWG", "dom.html#dom-classlist", "Element.classList")}} | -{{Spec2("HTML WHATWG")}} | -Nota en la especificación de HTML relacionada con el atributo {{htmlattrxref("class")}}. | -
{{SpecName("DOM WHATWG", "#dom-element-classlist", "Element.classList")}} | -{{Spec2("DOM WHATWG")}} | -Definición inicial | -
{{SpecName("DOM4", "#dom-element-classlist", "Element.classList")}} | -{{Spec2("DOM4")}} | -- |
className obtiene y establece el valor del atributo class
del elemento especificado.
var cName = elementNodeReference.className; -elementNodeReference.className = cName;- -
let elm = document.getElementById('item'); - -if(elm.className === 'active'){ - elm.className = 'inactive'; -} else { - elm.className = 'active'; -}- -
El nombre className
es utilizado para esta propiedad en lugar de class
para evitar conflictos con la palabra clave "class" existente en muchos de los lenguages que son usados para manipular el DOM.
className
también puede ser una instancia de {{domxref("SVGAnimatedString")}} si element
es un {{domxref("SVGElement")}}. Es mejor de obtener/establecer la propiedad className
de un elemento utilizando {{domxref("Element.getAttribute")}} y {{domxref("Element.setAttribute")}} si estás tratando con elementos SVG.
elm.setAttribute('class', elm.getAttribute('class'))- -
- -
Especificación | -Estado | -Observaciones | -
---|---|---|
{{SpecName("DOM WHATWG", "#dom-element-classname", "element.className")}} | -{{Spec2("DOM WHATWG")}} | -- |
{{SpecName("DOM4", "#dom-element-classname", "element.className")}} | -{{Spec2("DOM4")}} | -- |
{{SpecName("DOM2 HTML", "html.html#ID-95362176", "element.className")}} | -{{Spec2("DOM2 HTML")}} | -Definición inicial | -
El evento "click" se dispara cuando se presiona el botón de un dispositivo de entrada (Mouse o Mousepad) sobre un elemento.
- -Property | -Type | -Description | -
---|---|---|
target {{readonlyInline}} |
- EventTarget |
- The event target (the topmost target in the DOM tree). | -
type {{readonlyInline}} |
- DOMString |
- The type of event. | -
bubbles {{readonlyInline}} |
- Boolean |
- Whether the event normally bubbles or not | -
cancelable {{readonlyInline}} |
- Boolean |
- Whether the event is cancellable or not? | -
view {{readonlyInline}} |
- WindowProxy |
- document.defaultView (window of the document) |
-
detail {{readonlyInline}} |
- long (float ) |
- A count of consecutive clicks that happened in a short amount of time, incremented by one. | -
currentTarget {{readonlyInline}} |
- EventTarget | -The node that had the event listener attached. | -
relatedTarget {{readonlyInline}} |
- EventTarget | -For mouseover , mouseout , mouseenter and mouseleave events: the target of the complementary event (the mouseleave target in the case of a mouseenter event). null otherwise. |
-
screenX {{readonlyInline}} |
- long | -The X coordinate of the mouse pointer in global (screen) coordinates. | -
screenY {{readonlyInline}} |
- long | -The Y coordinate of the mouse pointer in global (screen) coordinates. | -
clientX {{readonlyInline}} |
- long | -The X coordinate of the mouse pointer in local (DOM content) coordinates. | -
clientY {{readonlyInline}} |
- long | -The Y coordinate of the mouse pointer in local (DOM content) coordinates. | -
button {{readonlyInline}} |
- unsigned short | -The button number that was pressed when the mouse event was fired: Left button=0, middle button=1 (if present), right button=2. For mice configured for left handed use in which the button actions are reversed the values are instead read from right to left. | -
buttons {{readonlyInline}} |
- unsigned short | -The buttons being pressed when the mouse event was fired: Left button=1, Right button=2, Middle (wheel) button=4, 4th button (typically, "Browser Back" button)=8, 5th button (typically, "Browser Forward" button)=16. If two or more buttons are pressed, returns the logical sum of the values. E.g., if Left button and Right button are pressed, returns 3 (=1 | 2). More info. | -
mozPressure {{readonlyInline}} |
- float | -The amount of pressure applied to a touch or tabdevice when generating the event; this value ranges between 0.0 (minimum pressure) and 1.0 (maximum pressure). | -
ctrlKey {{readonlyInline}} |
- boolean | -true if the control key was down when the event was fired. false otherwise. |
-
shiftKey {{readonlyInline}} |
- boolean | -true if the shift key was down when the event was fired. false otherwise. |
-
altKey {{readonlyInline}} |
- boolean | -true if the alt key was down when the event was fired. false otherwise. |
-
metaKey {{readonlyInline}} |
- boolean | -true if the meta key was down when the event was fired. false otherwise. |
-
<div id="prueba"></div> - -<script> - document.getElementById("prueba").addEventListener("click", function( event ) { - // presentar la cuenta de clicks realizados sobre el elemento con id "prueba" - event.target.innerHTML = "Conteo de Clicks: " + event.detail; - }, false); -</script> -- -
Internet Explorer 8 & 9 tiene problemas con elementos con un valor {{cssxref("background-color")}} de transparent que es sobrepuesto a los demas elementos por lo que no les permite recibir el evento.
Un ejemplo aqui
- -¿Cómo evitarlo?
- -{{cssxref("background-color")}}: rgba(0,0,0,0)
{{cssxref("opacity")}}: 0
y asignar explicitamente {{cssxref("background-color")}} un valor diferente a transparent
filter: alpha(opacity=0);
y asignar explicitamente {{cssxref("background-color")}} un valor diferente a transparent
En Safari Mobile 7.0+ ( también algunas versiones anteriores) presenta un problema cuando se da click sobre elementos que no son tipicamente interactivos como es el caso de un div.
- -¿Cómo evitarlo?
- -: pointer;
en el elemento o uno de sus contendores.onclick="void(0)"
al elemento o cualquiera de sus elementos contenedores, menos {{HTMLElement("body")}}.Lo siguientes elementos son considerados por Safari típicamente interactivos
- -href
)href
){{ APIRef("DOM") }}
- -La propiedad de sólo lectura Element.clientHeight
devuelve la altura de un elemento en píxeles, incluyendo el padding pero no las barras horizontales, el borde o el margen.
clientHeight
puede ser calculado como CSS height
+ CSS padding
- alto de la barra horizontal (si existe).
Nota: Esta propiedad redondeará el valor a un entero. Si necesitas un valor fraccional usa {{ domxref("element.getBoundingClientRect()") }}.
-var h = element.clientHeight;- -
h
es un entero que representa el alto de element en píxeles.
- -
- - -
Specification | -Status | -Comment | -
---|---|---|
{{SpecName('CSSOM View', '#dom-htmlelement-clientheight', 'clientheight')}} | -{{Spec2('CSSOM View')}} | -- |
clientHeight
es una propiedad introducida en el modelo de objeto de Internet Explorer.
{{ ApiRef("DOM") }}
- -El ancho del borde izquierdo de un elemento en pixel. Incluye el ancho de la barra de desplazamiento vertical, si la dirección del texto esrtl (derecha a izquierda) y si hay un desbordamiento que provoque la aparición de la barra en el lado izquierdo. clientLeft
NO incluyemargin-left o padding-left. clientLeft
es de sólo lectura.
Las aplicaciones "Gecko-based applications" implementan clientLeft
a partir de Gecko 1.9 (Firefox 3, ver {{ Bug(111207) }}). Esta propiedad no está implementada en Firefox 2 o anteriores.
var left = element.clientLeft; -- -
padding-top
- -Suave, individualista y muy leal, los gatos de Birmania tienen un carácter entre los persas y los siameses. Si le gustan los gatos que no son agresivos, disfrutan estar entre los humanos y son generalmente tranquilos, esta es la raza para usted.
- -Todos los Birmanos tienen pintas y coloración obscura en la cara, orejas, patas y cola.
- -La imagen del gato y el texto vienen de www.best-cat-art.com
- -padding-bottom
-Cuando la propiedad layout.scrollbar.side se establece a 1 o a 3 y la dirección de texto está puesta a RTL, entonces la barra de desplazamiento se pone a la izquierda y esto afecta a la forma en que se calcula clientLeft.
- -No es parte de ninguna especificación W3C.
- -clientLeft
apareció por primera vez en el modelo de objetos de MS IE DHTML.
La posición de la barra de desplazamiento vertical en textosrtl depende de la preferencias de layout.scrollbar.side
- -padding-top
+ +Suave, individualista y muy leal, los gatos de Birmania tienen un carácter entre los persas y los siameses. Si le gustan los gatos que no son agresivos, disfrutan estar entre los humanos y son generalmente tranquilos, esta es la raza para usted.
+ +Todos los Birmanos tienen pintas y coloración obscura en la cara, orejas, patas y cola.
+ +La imagen del gato y el texto vienen de www.best-cat-art.com
+ +padding-bottom
+- -
{{ ApiRef() }}
- -El ancho del borde superior de un elemento en pixel. No incluye ni elmargin-top , ni elpadding-top . clientTop
es de sólo lectura.
Las aplicaciones "Gecko-based applications" implementan el uso de clientTop
a partir de Gecko 1.9 (Firefox 3,ver {{ Bug(111207) }}). Esta propiedad no está disponible en Firefox 2 o anteriores.
vartop = element.clientTop; -- -
padding-top
- -Suave, individualista y muy leal, los gatos de Birmania tienen un carácter entre los persas y los siameses. Si le gustan los gatos que no son agresivos, disfrutan estar entre los humanos y son generalmente tranquilos, esta es la raza para usted.
- -Todos los Birmanos tienen pintas y coloración obscura en la cara, orejas, patas y cola.
- -La imagen del gato y el texto vienen de www.best-cat-art.com
- -padding-bottom
-No es parte de ninguna especificación W3C.
- -clientTop
se presento por primera vez en el modelo de objetos de MS IE DHTML.
padding-top
+ +Suave, individualista y muy leal, los gatos de Birmania tienen un carácter entre los persas y los siameses. Si le gustan los gatos que no son agresivos, disfrutan estar entre los humanos y son generalmente tranquilos, esta es la raza para usted.
+ +Todos los Birmanos tienen pintas y coloración obscura en la cara, orejas, patas y cola.
+ +La imagen del gato y el texto vienen de www.best-cat-art.com
+ +padding-bottom
+{{ APIRef("DOM") }}
- -La propiedad Element.clientWidth
es cero para elementos sin CSS o cajas de diseño (layout), en caso contrario es la anchura interior de un elemento en pixels, incluyendo la anchura de relleno (padding) pero no la anchura de la barra de desplazamiento vertical (si está presente, si está dibujada), el borde o el margen.
El valor de esta propiedad será redondeado a un entero. Si necesita un valor fraccional, use {{ domxref("element.getBoundingClientRect()") }}.
-var intElemClientWidth = element.clientWidth; -- -
intElemClientWidth será un entero que corresponde con el clientWidth del elemento en pixels. clientWidth es de sólo-lectura.
- -- -
- - -
Especificación | -Estado | -Observaciones | -
---|---|---|
{{SpecName('CSSOM View', '#dom-element-clientwidth', 'clientWidth')}} | -{{Spec2("CSSOM View")}} | -- |
clientWidth
fue introducida en el modelo de objetos DHTML de MS IE.
{{Compat("api.Element.clientWidth")}}
- -El método closest()
de la interfaz {{domxref("Element")}} devuelve el ascendiente más cercano al elemento actual (o el propio elemento actual) que coincida con el selector proporcionado por parámetro. Si no existe dicho ascendiente, devuelve null
.
var closestElement = element.closest(selectors); -- -
selectors
es un {{domxref("DOMString")}} que contiene una lista de selectores como "p:hover, .toto + q"
element
es el {{domxref("Element")}} en la parte superior del árbol de elementos a tratar.closestElement
es el {{domxref("Element")}} ascendiente más cercano al elemento actual. Puede ser null
.SyntaxError
si selectors
no es una lista de selectores válida.<article> - <div id="div-01">Here is div-01 - <div id="div-02">Here is div-02 - <div id="div-03">Here is div-03</div> - </div> - </div> -</article>- -
var el = document.getElementById('div-03'); - -var r1 = el.closest("#div-02"); -// returns the element with the id=div-02 - -var r2 = el.closest("div div"); -// returns the closest ancestor which is a div in div, here is div-03 itself - -var r3 = el.closest("article > div"); -// returns the closest ancestor which is a div and has a parent article, here is div-01 - -var r4 = el.closest(":not(div)"); -// returns the closest ancestor which is not a div, here is the outmost article- -
Para los navegadores que no tengan soporte para Element.closest()
, pero sí lo tengan para document.querySelectorAll()
(o un equivalente prefijado, es decir IE9+), existe un polyfill:
if (!Element.prototype.matches) { - Element.prototype.matches = Element.prototype.msMatchesSelector || - Element.prototype.webkitMatchesSelector; -} - -if (!Element.prototype.closest) { - Element.prototype.closest = function(s) { - var el = this; - - do { - if (el.matches(s)) return el; - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === 1); - return null; - }; -}- -
Sin embargo, si realmente se necesita soporte para IE 8, entonces el siguiente polyfill servirá para conseguirlo de forma muy lenta, pero lo hará. Sin embargo, sólo admitirá selectores CSS 2.1 en IE 8, puede causar picos severos de retraso en sitios web en producción.
- -if (window.Element && !Element.prototype.closest) { - Element.prototype.closest = - function(s) { - var matches = (this.document || this.ownerDocument).querySelectorAll(s), - i, - el = this; - do { - i = matches.length; - while (--i >= 0 && matches.item(i) !== el) {}; - } while ((i < 0) && (el = el.parentElement)); - return el; - }; -} -- -
Especificación | -Estado | -Comentario | -
---|---|---|
{{SpecName('DOM WHATWG', '#dom-element-closest', 'Element.closest()')}} | -{{Spec2('DOM WHATWG')}} | -Definición inicial. | -
{{Compat("api.Element.closest")}}
- -document.createElement(element).closest(element)
devolverá null
si el elemento no es el primero del DOM{{APIRef("CSS Typed Object Model API")}}{{SeeCompatTable}}
- -El método computedStyleMap()
de la interfaz {{domxref("Element")}} devuelve una interfaz {{domxref("StylePropertyMapReadOnly")}} que provee una representación de solo-lectura de un bloque de declaración de CSS que es una alternativa a {{domxref("CSSStyleDeclaration")}}.
var stylePropertyMapReadOnly = Element.computedStyleMap()- -
Ninguno.
- -Una interfaz {{domxref("StylePropertyMapReadOnly")}}.
- -Comenzamos con algo de HTML simple: un párrafo con un enlace, y una lista de definición a la cual le añadiremos todos los pares de Propiedad CSS / Valor.
- -<p> - <a href="https://example.com">Link</a> -</p> -<dl id="regurgitation"></dl>- -
Añadimos un poco de CSS
- -a { - --colour: red; - color: var(--colour); -}- -
Añadimos Javascript para tomar nuestro enlace y devolvemos una lista de definición de todos los valores de propiedades CSS usando computedStyleMap().
// obtenemos el elemento -const myElement = document.querySelector('a'); - -// obtenemos la <dl> que llenaremos -const stylesList = document.querySelector('#regurgitation'); - -// recuperamos todos los estilos calculados con computedStyleMap() -const allComputedStyles = myElement.computedStyleMap(); - -// iteramos a través del mapa de todas las propiedades y valores, añadiendo un <dt> y <dd> para cada mapa -for (const [prop, val] of allComputedStyles) { - // propiedades - const cssProperty = document.createElement('dt'); - cssProperty.appendChild(document.createTextNode(prop)); - stylesList.appendChild(cssProperty); - - // valores - const cssValue = document.createElement('dd'); - cssValue.appendChild(document.createTextNode(val)); - stylesList.appendChild(cssValue); -}- -
En navegadores que soportan computedStyleMap()
, verás una lista de todas las propiedades CSS y valores. En otros navegadores verás un enlace.
{{EmbedLiveSample("Examples", 300, 300)}}
- -¿Te diste cuenta cuántas propiedades CSS por defecto tenía un enlace? Actualiza el 'a
' a un 'p
', y notarás una diferencia en los valores calculados por defecto del margin-top
y margin-bottom
.
Especificación | -Estado | -Comentario | -
---|---|---|
{{SpecName('CSS Typed OM','#dom-element-computedstylemap','computedStyleMap()')}} | -{{Spec2('CSS Typed OM')}} | -Definición inicial. | -
{{Compat("api.Element.computedStyleMap")}}
diff --git a/files/es/web/api/element/computedstylemap/index.md b/files/es/web/api/element/computedstylemap/index.md new file mode 100644 index 00000000000000..baa066f08d1df2 --- /dev/null +++ b/files/es/web/api/element/computedstylemap/index.md @@ -0,0 +1,92 @@ +--- +title: Element.computedStyleMap() +slug: Web/API/Element/computedStyleMap +tags: + - API + - CSS Typed Object Model API + - Element + - Experimental + - Houdini + - Method + - Reference + - StylePropertyMapReadOnly + - computedStyleMap() +translation_of: Web/API/Element/computedStyleMap +--- +{{APIRef}}{{SeeCompatTable}} + +El método `computedStyleMap()` de la interfaz {{domxref("Element")}} devuelve una interfaz {{domxref("StylePropertyMapReadOnly")}} que provee una representación de solo-lectura de un bloque de declaración de CSS que es una alternativa a {{domxref("CSSStyleDeclaration")}}. + +## Sintaxis + +```js +var stylePropertyMapReadOnly = Element.computedStyleMap() +``` + +### Parámetros + +Ninguno. + +### Valor de resultado + +Una interfaz {{domxref("StylePropertyMapReadOnly")}}. + +## Ejemplos + +Comenzamos con algo de HTML simple: un párrafo con un enlace, y una lista de definición a la cual le añadiremos todos los pares de Propiedad CSS / Valor. + +```html ++ Link +
+getAttribute()
devuelve el valor del atributo especificado en el elemento. Si el atributo especificado no existe, el valor retornado puede ser tanto null
como ""
(una cadena vacía); ver Notes para más detalles.
var atributo = element.getAttribute(nombreAtributo); -- -
donde
- -atributo
es una cadena que contiene el valor del atributo nombreAtributo
.nombreAtributo
es el nombre del atributo del cual se quiere obtener el valor.var div1 = document.getElementById("div1"); -var align = div1.getAttribute("align"); - -alert(align); // Muestra el valor de la alineación(align) del elemento con id="div1"- -
Cuando es invocado en un elemento HTML desde un DOM marcado como documento HTML, getAttribute()
convierte a minúsculas el argumento antes de proceder.
Esencialmente todos los navegadores (Firefox, Internet Explorer, versiones recientes de Opera, Safari, Konqueror, y iCab, siendo una lista no exhaustiva) devuelven null
cuando el atributo especificado no existe en el elemento especificado y esto es lo que establece el actual borrador de la especificación del DOM. Por otra parte, la antigua especificación del DOM 3 Core dice que el valor correcto de retorno es de hecho una cadena vacía, y algunas implementaciones de DOM aplican este comportamiento. La implementación de getAttribute en XUL (Gecko) sigue la especificación de DOM 3 Core y retorna una cadena vacía. Por consiguiente, es recomendable usar {{domxref("element.hasAttribute()")}} para verificar la existencia de un atributo previo a la utilización de getAttribute()
si es posible que el atributo requerido no exista en el elemento especificado.
{{ APIRef("DOM") }}
- -Dados namespace y nodeName del element, devuelve su Attr
.
attributeNode = element.getAttributeNodeNS(namespace,nodeName) -- -
attributeNode
es el nodo para el atributo especificado.namespace
es la cadena que define el namespace del atributo.nodeName
es la cadena que define el name del atributo.== Example == TBD The example needs to be fixed pre> // html: <div id="top" /> t = document.getElementById("top"); specialNode = t.getAttributeNodeNS( "http://www.mozilla.org/ns/specialspace", "id"); // iNode.value = "full-top" </pre
- -getAttributeNodeNS
es más específica getAttributeNode en el sentido de que puedes especificar atributos de un namespace en particular. Su método setter es setAttributeNodeNS.
{{ DOMAttributeMethods() }}
- -DOM Level 2 Core: getAttributeNodeNS
diff --git a/files/es/web/api/element/getattributenodens/index.md b/files/es/web/api/element/getattributenodens/index.md new file mode 100644 index 00000000000000..c51d0c5c157f27 --- /dev/null +++ b/files/es/web/api/element/getattributenodens/index.md @@ -0,0 +1,39 @@ +--- +title: Element.getAttributeNodeNS() +slug: Web/API/Element/getAttributeNodeNS +tags: + - API + - DOM + - Referencia + - metodo +translation_of: Web/API/Element/getAttributeNodeNS +--- +{{ APIRef }} + +## Sumario + +Dados namespace y nodeName del element, devuelve su `Attr` . + +## Sintaxis + +```js +attributeNode = element.getAttributeNodeNS(namespace,nodeName) +``` + +- `attributeNode` es el nodo para el atributo especificado. +- `namespace` es la cadena que define el namespace del atributo. +- `nodeName` es la cadena que define el name del atributo. + +## Notas + +`getAttributeNodeNS` es más específica [getAttributeNode](en/DOM/element.getAttributeNode) en el sentido de que puedes especificar atributos de un namespace en particular. Su método setter es [setAttributeNodeNS](en/DOM/element.setAttributeNodeNS). + +{{ DOMAttributeMethods() }} + +## Especificaciones + +{{Specifications}} + +## Compatibilidad con navegadores + +{{Compat}} diff --git a/files/es/web/api/element/getboundingclientrect/index.html b/files/es/web/api/element/getboundingclientrect/index.html deleted file mode 100644 index 5cb530440f8115..00000000000000 --- a/files/es/web/api/element/getboundingclientrect/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: element.getBoundingClientRect -slug: Web/API/Element/getBoundingClientRect -tags: - - API - - Boundary - - Bounding - - Bounds - - CSSOM View - - Cliente - - DOM - - Elemento - - Minimo - - Referencia - - metodo -translation_of: Web/API/Element/getBoundingClientRect ---- -El método Element.getBoundingClientRect()
devuelve el tamaño de un elemento y su posición relativa respecto a la ventana de visualización (viewport).
domRect = element.getBoundingClientRect();- -
El valor devuelto es un objeto {{domxref("DOMRect")}} que es la unión de los rectángulos devueltos por {{domxref("Element.getClientRects", "getClientRects()")}}para el elemento, es decir, las CSS border-boxes asociadas con el elemento. El resultado es el rectángulo más pequeño que contiene al elemento completo, con las propiedades de solo lectura left
, top
, right
, bottom
, x
, y
, width
, and height
describiendo la border-box total en pixels. Excepto width
and height
las propiedades son relativas a la esquina superior izquierda (top-left) de la ventana.
Las border-boxes vacías son ignoradas. Si todas las border-boxes del elemento estan vacías, entonces se devuelve un rectángulo con width
and height
iguales a cero donde el top
y el left
son el top-left de la border-box de la primera CSS box (en onden de contenido) para el elemento.
La cantidad de scrolling realizado en la ventana (o cualquier otro elemento scrollable) se tiene en cuenta cuando se calcula el rectángulo. Esto implica que los bordes del rectángulo (top
, left
, bottom
, and right
) cambián sus valores cada vez que la posición de scrolling cambia (ya que sus valores no son absolutos sino relativos a la ventana). Si se necesita el bounding rectangle relativo a la esquina top-left del documento, hay que añadir la posición de scrolling actual a las propiedades top
and left
(dicha posición de scrolling puede obtenerse usando {{domxref("window.scrollX")}} y {{domxref("window.scrollY")}}) para obtener el bounding rectangle independiente de la posición de scrolling.
Los scripts que requieran una alta compatibilidad cross-browser pueden usar {{domxref("window.pageXOffset")}} y {{domxref("window.pageYOffset")}} en lugar de window.scrollX
y window.scrollY.
Si no se tiene acceso a esas propiedades puede usarse el siguiente código:
// Para scrollX -(((t = document.documentElement) || (t = document.body.parentNode)) - && typeof t.scrollLeft == 'number' ? t : document.body).scrollLeft -// Para scrollY -(((t = document.documentElement) || (t = document.body.parentNode)) - && typeof t.scrollTop == 'number' ? t : document.body).scrollTop -- -
// rect es un objeto DOMRect con ocho propiedades: left, top, right, bottom, x, y, width, height -var rect = obj.getBoundingClientRect(); -- -
Especificación | -Estado | -Comentario | -
---|---|---|
{{SpecName("CSSOM View", "#dom-element-getboundingclientrect", "Element.getBoundingClientRect()")}} | -{{Spec2("CSSOM View")}} | -Definición inicial | -
El objeto DOMRect
devuelto puede modificarse en navegadores modernos. Esto no era así en versiones anteriores que devolvían DOMRectReadOnly
de forma efectiva. Con IE y Edge, el hecho de no poder agregar propiedades faltantes a su objeto ClientRect
MSDN: ClientRect
, devuelto impide rellenar los valores x
e y
.
Debido a problemas de compatibilidad (ver a continuación), es más seguro confiar sólo en las propiedades left
, top
, right
, and bottom
.
Las propiedades en el objeto DOMRect
devuelto no son suyas. Mientras que el operador in
y for...in
encontrarán las propiedades devueltas, otras API como Object.keys()
fallarán. Además, e inesperadamente, ES2015 y nuevas características como Object.assign()
y los operadores rest/spread de los objetos, no podrán copiar las propiedades devueltas.
rect = elt.getBoundingClientRect() -// El resultado en emptyObj es {} -emptyObj = Object.assign({}, rect) -emptyObj = { ...rect } -{width, ...emptyObj} = rect -- -
{{Compat("api.Element.getBoundingClientRect")}}
- -getBoundingClientRect
ClientRect
, una versión anterior a DOMRect
{{ ApiRef("DOM") }}
- -El método Element.getClientRects()
devuelve una colección de objetos {{domxref("DOMRect")}} que indican los rectángulos que delimitan el rectángulo de cada línea de texto en el navegador.
var rectCollection = object.getClientRects();
-
-El valor devuelto es una colección de objetos rectangulares {{domxref("DOMRect")}}, uno para cada cuadro borde CSS asociado al elemento. Cada objeto {{domxref("DOMRect")}} contiene las propiedades de sólo lectura: left
, top
, right
y bottom
, que describen la caja, en pixeles, con el valor top-left relativo al valor top-left del viewport. En el caso de tablas con subtítulos, el subtítulo es incluido aún cuado esté fuera del cuadro borde de la tabla. En caso de ser ejecutado en algún elemento SVG que no sea el <svg>
externo, el "viewport" al cual los rectángulos de resultado serán relativos será el "viewport" que establece el <svg>
externo (y serán transformados por las trasnformaciones del <svg>
externo, si estas existen).
{{ fx_minversion_note(3.5, "Firefox 3.5 ha agregado las propiedades width
y height
al objeto TextRectangle.") }}
La cantidad de desplazamiento que ha tenido el área del viewport (o cualquier otro elemento desplazable) se tiene en cuenta al calcular los rectángulos.
- -Los rectángulos devueltos no incluyen los márgenes de ningún elemento hijo que se haya podido haber desbordado.
- -Para los elementos de AREA en HTML, elementos SVG que no renderizen nada por si mismos, los elementos display:none
, y generalmente cualquier elemento que no sea renderizado directamente, se devuelve una lista vacia.
Aún si la caja CSS tiene bordes vacios, se devuelven las coordenadas. Las coordenadas left
, top
, right
y bottom
pueden aún tener significado.
Es posible que los valores de desplazamiento sean fracciones de pixel.
- -var rects = obj.getClientRects(); -var numLines = rects.length; -- -
No forma parte de ninguna especificación W3C.
- -getClientRects()
apareció por primera vez en el modelo de objeto de MS IE DHTML.