¿Qué etiquetas HTML usaría para este tipo de información?
Nombre: John
Años: 40
Ciudad: Fráncfort
País: Alemania
Estado: Activo
me gusta usar el <label>
etiqueta dentro p
etiquetas aquí, lo que suena como una buena semántica. Sin embargo, esta información NO está dentro de un formulario. Y el W3C dice:
label: The label element represents a caption for a form control.
Entonces, ¿qué debo usar entonces? claramente puedo usar <strong>
pero esto no tiene una “gran importancia” y no se siente correcto.
ACTUALIZAR
Después de notar la sugerencia de LISTA DE DEFINICIONES, me gustaría preguntar si esto sería mejor si tengo varias partes de esta información en la misma página. Significaría que defino “nombre” con una “definición” diferente varias veces. P.ej:
Nombre: John
Años: 40
Ciudad: Fráncfort
País: Alemania
Estado: Activo
Nombre: María
Años: 30
Ciudad: Bonn
País: Alemania
Estado: Inactivo
Es <dl>
sigue siendo la mejor manera de ir?
Wesley Murch
A lista de definiciones podría ser adecuado aquí:
<dl>
<dt>Name</dt>
<dd>John</dd>
<dt>Age</dt>
<dd>40</dd>
<dt>City</dt>
<dd>Frankfurt</dd>
<dt>Country</dt>
<dd>Germany</dd>
<dt>Status</dt>
<dd>Active</dd>
</dl>
http://www.w3.org/TR/html401/struct/lists.html#h-10.3 – Las listas de definiciones, creadas con el elemento DL, generalmente consisten en una serie de pares de términos/definiciones (aunque las listas de definiciones pueden tener otras aplicaciones).
Sin embargo, el hecho de que desee un formato en negrita no significa que esté restringido a <strong>
o <b>
. Puedes usar la no semántica <span>
y simplemente aplique el formato con CSS.
Además, puede usar CSS para agregar los dos puntos, en lugar de ponerlos en su marcado:
dt:after { content:":"; }
Quizás para ayudar a aclarar cierta confusión sobre su uso adecuado, parece que HTML5 se referirá a esta etiqueta como lista de descripciones.
http://www.w3.org/TR/html5/grouping-content.html#the-dl-element – El elemento dl representa una lista de asociaciones que consta de cero o más grupos de nombre-valor (una lista de descripción).
-
+1 porque escribes mucho más rápido que yo… mientras proporcionas mucha más información. 🙂 El único comentario es que si fuera yo y estuviera siendo quisquilloso con la semántica, desecharía el ‘:’ a favor de diseñarlo a través de un selector css dt: after con ‘:’ como contenido.
– John Green
21 de mayo de 2011 a las 22:12
-
Gracias por esta rápida respuesta, pero ¿es realmente una “lista de definiciones” como pretende el W3C? Después de todo, no estoy realmente “definiendo” los términos, solo les estoy dando un valor, que puede cambiar de una página a otra (mientras que una definición sería fija, supongo). Actualicé mi pregunta.
– joh-3
21 de mayo de 2011 a las 22:17
-
@plua: es bastante apropiado para pares de nombre/valor. Mire algunos de los ejemplos en la página a la que me vinculé. DL también se usa para diálogos (como en un script). Además, haga una búsqueda en Google de “semántica de lista de definiciones html” y verá que se usa para una variedad de aplicaciones. Estoy de acuerdo en que es un poco dudoso, pero no creo que haya otra etiqueta html más apropiada para esto.
–Wesley Murch
21 de mayo de 2011 a las 22:24
-
Y aquí hay un buen formato CSS para esta lista de definiciones: el-arte-de-web.com/css/format-dl/#.UnV1fxBBHrg
– Tomás Kubes
2 de noviembre de 2013 a las 22:08
-
Hum… Hoy (2017 y HTML5 con un uso más generalizado semántico) se cambia, puede usar
<label>
consulte stackoverflow.com/a/32408312/287948-Peter Krauss
20 de noviembre de 2017 a las 12:05
Este es el lugar correcto para una estructura DL:
<dl>
<dt>Name</dt>
<dd>John</dd>
<dt>Age</dt>
<dd>40</dd>
<dt>City</dt>
<dd>Frankfurt</dd>
<dt>Country</dt>
<dd>Germany</dd>
<dt>Status</dt>
<dd>Active</dd>
</dl>
Tenga en cuenta que deberá agregar estilo para que se vea así, pero esta es la estructura lógica correcta.
Midas
Tal vez puedas usar una lista de definiciones (dl
, dt
, dd
), pero eso tampoco suena correcto.
Como W3C dice que representa un título para un control de formulario, el texto junto a la etiqueta no es un control, por lo que el for
atributo se vuelve inútil.
simplemente iría con strong
también porque es la mejor representación sin CSS.
Editar:
Dado que se trata de personas, también puede usar el equivalente de vCard para HTML: hTarjeta. Ejemplo:
<div class="vcard">
<div class="fn">
<strong class="type">Name</strong>:
<span class="value">John</span>
</div>
<div class="note">
<strong class="type">Age</strong>:
<span class="value">40</span>
</div>
<div class="adr">
<div class="locality">
<strong class="type">City</strong>:
<span class="value">Frankfurt</span>
</div>
<div class="country-name">
<strong class="type">Country</strong>:
<span class="value">Germany</span>
</div>
</div>
<div class="note">
<strong class="type">Status</strong>:
<span class="value">Active</span>
</div>
</div>
A continuación, puede utilizar tantos de estos en un <ul>
o <ol>
. Algunos navegadores reconocerán estas propiedades y las convertirán en enlaces para usar con una aplicación. por ejemplo el adr
las propiedades podrían vincularse a una herramienta de mapeo.
Esto es solo un estándar, no pretende ser semánticamente correcto. Por lo que sé, puede usar cualquier marcado (etiquetas HTML) que desee dentro de estas hCards. Ver enlace para más detalles.
-
Parece que el W3C ha cambiado
<dl>
de ser sólo “listas de definición” a ser cualquier tipo de “lista de descripción”, por lo que una<dl>
de hecho sería correcto, al menos según la última especificación. ver mi respuesta– Matt Browne
21 de junio de 2014 a las 15:53
matt browne
Estoy de acuerdo con las otras respuestas de que un <dl>
list es la opción más semántica aquí. En el pasado, nunca estaba seguro de si este era un uso correcto de <dl>
porque todas las descripciones oficiales de la <dl>
El elemento que vi lo describió como una “lista de definiciones” que se usará para definir términos como en un glosario (vea mis comentarios sobre la respuesta de @Cristian). Sin embargo, después de mirar el último borrador del editor de la especificación HTML 5, noté que se le ha cambiado el nombre a “lista de descripción” en lugar de “lista de definición”, y el ejemplo dado es en realidad muy similar al ejemplo en la pregunta aquí.
<dfn>
, por otro lado, parece estar destinado solo a definir términos. Aquí hay algunas citas relevantes del enlace anterior:
El elemento dt en sí mismo, cuando se usa en un elemento dl, no indica que su contenido sea un término que se esté definiendo, pero esto puede indicarse usando el elemento dfn.
…
El elemento dfn representa la instancia definitoria de un término. El párrafo, el grupo de lista de descripciones o la sección que es el ancestro más cercano del elemento dfn también debe contener las definiciones del término proporcionado por el elemento dfn.
Entonces, en conclusión, apoyaría la recomendación para el uso de la <dl>
elemento, aunque su estilo predeterminado es diferente del ejemplo del OP.
Aquí hay una clase CSS reutilizable para un <dl>
al estilo del ejemplo:
.dl-inline dt, .dl-inline dd {display:inline; margin:0;}
.dl-inline dt:after {content:': '}
.dl-inline dd + dt:before {content:''; display:block;}
<dl class="dl-inline">
<dt>Name</dt>
<dd>John</dd>
<dt>Age</dt>
<dd>40</dd>
<!-- ... -->
</dl>
O la versión SASS:
.dl-inline {
dt,dd {display:inline; margin:0;}
dt:after {content:': '}
dd + dt:before {content:''; display:block;}
}
Yo argumentaría a favor de usar el <dfn>
etiqueta.
Es corto, semántico y se puede diseñar fácilmente.
El elemento marca el término que se está definiendo; la definición del término debe estar dada por el grupo de lista de definición o
,
que lo rodea (generalmente un par , ).
Fuente: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dfn
-
Por lo que puedo decir (y al leer las especificaciones) parece que
<dfn>
está diseñado para definir términos como en un diccionario o glosario, o dentro del texto de un artículo, donde en realidad está definiendo el significado del término. Así que usarlo para mostrar los valores de archivados como “nombre”, “edad”, etc. no me suena muy semántico… por otro lado, esto sin duda sería mejor que usar<label>
fuera de una forma, ya que<label>
está claramente especificado para ser utilizado sólo en los formularios.– Matt Browne
21 de junio de 2014 a las 14:44
-
Sin embargo, soy ambivalente en esto porque, para ser coherente, el argumento de que este uso de
<dfn>
no es realmente “definir un término” sería un argumento en contra de usar<dt>
y<dd>
tags como en la respuesta aceptada, lo que creo que probablemente limite demasiado la utilidad de esas etiquetas. Y si la desviación de la semántica estricta no es demasiado preocupante, en realidad me gusta la idea de usar<dfn>
lo mejor para el estilo previsto en la pregunta, ya que no tiene que escribir tantas anulaciones de CSS como lo haría con un<dl>
.– Matt Browne
21 de junio de 2014 a las 14:50
-
Por lo que puedo decir (y al leer las especificaciones) parece que
<dfn>
está diseñado para definir términos como en un diccionario o glosario, o dentro del texto de un artículo, donde en realidad está definiendo el significado del término. Así que usarlo para mostrar los valores de archivados como “nombre”, “edad”, etc. no me suena muy semántico… por otro lado, esto sin duda sería mejor que usar<label>
fuera de una forma, ya que<label>
está claramente especificado para ser utilizado sólo en los formularios.– Matt Browne
21 de junio de 2014 a las 14:44
-
Sin embargo, soy ambivalente en esto porque, para ser coherente, el argumento de que este uso de
<dfn>
no es realmente “definir un término” sería un argumento en contra de usar<dt>
y<dd>
tags como en la respuesta aceptada, lo que creo que probablemente limite demasiado la utilidad de esas etiquetas. Y si la desviación de la semántica estricta no es demasiado preocupante, en realidad me gusta la idea de usar<dfn>
lo mejor para el estilo previsto en la pregunta, ya que no tiene que escribir tantas anulaciones de CSS como lo haría con un<dl>
.– Matt Browne
21 de junio de 2014 a las 14:50
Absolutamente el DL es el camino a seguir. No piense en ‘definición’ en sentido estricto, piense en ella como una definición de instancia. Incluso la especificación w3c dice ‘Otra aplicación de DL, por ejemplo, es para marcar diálogos, con cada DT nombrando a un orador y cada DD conteniendo sus palabras’, por lo que también son muy flexibles al respecto.
– John Green
21 de mayo de 2011 a las 22:21
<dl>
sigue siendo apropiado, no está restringido a su uso para definiciones literales. Incluso si era estrictamente para definiciones (por ejemplo, para la definición de una palabra del diccionario), es normal ver varias definiciones para el mismo elemento.–Wesley Murch
21 de mayo de 2011 a las 22:28
De hecho, creo que HTML5 ahora lo llama “lista de descripción”. dev.w3.org/html5/markup/dl.html
–Wesley Murch
21 mayo 2011 a las 22:39
En la actualidad, 2017, HTML5 es una norma consolidada, y adoptamos más semánticano menos… No hay contradicción en el uso de
<label>
para etiquetar (!)… Entonces sí, puedes usarlo. Véase, por ejemplo. Guía/Elemento/etiqueta de Mozilla, “Categorías de contenido: contenido de flujo, contenido de fraseo, …”. Consulte también stackoverflow.com/a/32408312-Peter Krauss
20 de noviembre de 2017 a las 12:20
Vale la pena señalar que mientras
<dl>
etiqueta es semánticamente apropiada, si está creando un sitio receptivo, es bueno saber que no hay forma de mantener<dt>
y<dd>
elementos juntos (evitando rupturas entre el término y la definición) sin utilizar un envoltorio no semántico alrededor de cada par. Si eso le preocupa, es posible que deba usar una estructura HTML diferente.– atasco
17/01/2018 a las 22:00