La etiqueta <details> de HTML representa detalles adicionales que el usuario puede ver u ocultar a demanda.

Se usa con la etiqueta <summary> para proporcionar una leyenda en la que se puede hacer clic para expandir/contraer los detalles según sea necesario. Si no hay una etiqueta <summary>, el navegador debería mostrar su propio resumen/leyenda.

El elemento <details> acepta “contenido de flujo”, lo que significa que acepta la mayoría de los elementos HTML que pueden aparecer dentro del <body> de un documento HTML.

Sintaxis

La etiqueta <details> se escribe como <details></details> con una etiqueta <summary> insertada entre la etiqueta de inicio y de fin. El contenido expandible/contraíble sigue a la etiqueta <summary> (pero también está contenido entre las etiquetas de inicio y fin del elemento <details>).

Como esto:

HTML
<details>
<summary>Clic para abrir</summary>
<p>Contenido desplegable...</p>
</details>

Ejemplos

Uso básico de la etiqueta

Aquí, <details> se usa junto con la etiqueta <summary> para crear contenido expandible.

HTML
<details>
<summary>Clic para Expandir</summary>
<p>Si tu navegador admite este elemento, debería permitirte expandir y contraer estos detalles.</p>
</details>

See the Pen DETAILS_basico by Alex (@htmldesdecero) on CodePen.

Leyenda predeterminada

Si omites la etiqueta <summary>, el navegador debería crear su propia leyenda.

HTML
<details>
<p>Contenido colapsable...</p>
</details>

See the Pen DETAILS_leyenda by Alex (@htmldesdecero) on CodePen.

Múltiples elementos <details>

Puedes tener múltiples elementos <details>, todos expandiendo y colapsando su propio contenido. Aquí es donde la etiqueta <summary> puede ser realmente útil, de lo contrario verás un montón de encabezados que dicen “Detalles” sin nada más que los distinga.

La etiqueta <details> se puede utilizar para mostrar/ocultar la mayoría de los elementos que aparecen dentro del elemento <body> de un documento HTML. Esto incluye texto, controles de formulario, imágenes, etc.

El siguiente ejemplo muestra varios elementos que se colocan dentro del elemento <details>.

HTML
<div>
<details>
<summary>General:</summary>
<p>Tipo: Imagen JPEG<br>
Tamaño: 8,697 bytes (12 KB en disco)<br>
Creado: 4 de agosto de 2024 2:20 pm<br>
Modificado: 4 de agosto de 2024 2:20 pm
</p>
</details>
<hr>
<details>
<summary>Nombre y extensión:</summary>
<p><input name="fileName" value="phi-phi-200x150.jpg"></p>
<p><input name="hideExt" type="checkbox" value="">Ocultar extensión</p>
</details>
<hr>
<details>
<summary>Vista previa:</summary>
<img src="/pix/places/phi-phi-200x150" alt="Foto de Phi Phi">
</details>
</div>
CSS
div{
  width:210px;
  padding:5px;
  background:#eee;
  border:1px solid #ccc;
}

See the Pen DETAILS_multiples by Alex (@htmldesdecero) on CodePen.

Aplicando estilos al elemento <details>

Puedes usar CSS para agregar estilos al elemento <details>. No solo eso, puedes usarlo para aplicar estilos al elemento en sus diversos estados (es decir, abierto y cerrado), así como al elemento <summary> dependiendo del estado del elemento <details>.

En otras palabras, puedes especificar diferentes estilos para usar tanto en <details> como en <summary> en función de si el usuario ha expandido o contraído el control.

Como esto:

HTML
<!DOCTYPE html>
<title>Ejemplo</title>
<div>
<details>
<summary>General:</summary>
<p>Tipo: Imagen JPEG<br>
Tamaño: 8,697 bytes (12 KB en disco)<br>
Creado: 4 de agosto de 2024 2:20 pm<br>
Modificado: 4 de agosto de 2024 2:20 pm
</p>
</details>
<hr>
<details>
<summary>Nombre y extensión:</summary>
<p><input name="fileName" value="phi-phi-200x150.jpg"></p>
<p><input name="hideExt" type="checkbox" value="">Ocultar extensión</p>
</details>
<hr>
<details>
<summary>Vista previa:</summary>
<img src="/pix/places/phi-phi-200x150" alt="Foto de Phi Phi">
</details>
</div>
CSS
details {color:#999;}
details > summary {font-size:larger;color:#666;}
details[open] > summary { color:black;font-weight:bold; }
div {width:210px;padding:5px;background:#eee;border:1px solid #ccc;}

See the Pen DETAILS_estilos by Alex (@htmldesdecero) on CodePen.

Atributos

Se pueden agregar atributos a un elemento HTML para proporcionar más información sobre cómo debe aparecer o comportarse el elemento.

El elemento <details> acepta los siguientes atributos.

AtributoDescripción
openEspecifica si los detalles deben estar abiertos (visibles para el usuario) o cerrados (ocultos para el usuario).

Este es un atributo booleano. Si el atributo está presente, su valor debe ser la cadena vacía o un valor que coincida, sin distinción entre mayúsculas y minúsculas ASCII, con el nombre canónico del atributo, sin espacios en blanco iniciales o finales (es decir, open o open="open").

Valores posibles:
[Cadena vacía]
open

Atributos globales

Los siguientes atributos son estándar en todos los elementos HTML. Por lo tanto, puedes utilizar estos atributos con la etiqueta <details>, así como con todas las demás etiquetas HTML.

  • accesskey
  • autocapitalize
  • class
  • contenteditable
  • data-*
  • dir
  • draggable
  • hidden
  • id
  • inputmode
  • is
  • itemid
  • itemprop
  • itemref
  • itemscope
  • itemtype
  • lang
  • part
  • slot
  • spellcheck
  • style
  • tabindex
  • title
  • translate

Para obtener una explicación completa de estos atributos, consulta Atributos globales de HTML 5.

Controladores de eventos

Los atributos de contenido del controlador de eventos te permiten invocar un script desde tu HTML. El script se invoca cuando ocurre un determinado “evento”. Cada atributo de contenido del controlador de eventos se ocupa de un evento diferente.

  • onabort
  • onauxclick
  • onblur
  • oncancel
  • oncanplay
  • oncanplaythrough
  • onchange
  • onclick
  • onclose
  • oncontextmenu
  • oncopy
  • oncuechange
  • oncut
  • ondblclick
  • ondrag
  • ondragend
  • ondragenter
  • ondragexit
  • ondragleave
  • ondragover
  • ondragstart
  • ondrop
  • ondurationchange
  • onemptied
  • onended
  • onerror
  • onfocus
  • onformdata
  • oninput
  • oninvalid
  • onkeydown
  • onkeypress
  • onkeyup
  • onlanguagechange
  • onload
  • onloadeddata
  • onloadedmetadata
  • onloadstart
  • onmousedown
  • onmouseenter
  • onmouseleave
  • onmousemove
  • onmouseout
  • onmouseover
  • onmouseup
  • onpaste
  • onpause
  • onplay
  • onplaying
  • onprogress
  • onratechange
  • onreset
  • onresize
  • onscroll
  • onsecuritypolicyviolation
  • onseeked
  • onseeking
  • onselect
  • onslotchange
  • onstalled
  • onsubmit
  • onsuspend
  • ontimeupdate
  • ontoggle
  • onvolumechange
  • onwaiting
  • onwheel

La mayoría de los atributos de contenido del controlador de eventos se pueden utilizar en todos los elementos HTML, pero algunos controladores de eventos tienen reglas específicas sobre cuándo se pueden utilizar y a qué elementos se aplican.

5/5 - (1 voto)