Atributos de clase múltiple en HTML

¿Qué sucede cuando un elemento tiene múltiples atributos de class ?

 

Estoy tratando de agregar una clase a la salida de post_class(); en un plugin de WordPress, pero la función en sí está creando toda la parte class="one two three"

¿Es equivalente a class="one two three four" ? ¿O la primera o la segunda victoria? ¿O es un comportamiento indefinido, en cuyo caso, qué hacen los principales navegadores?

Si conoce la forma correcta de agregar una clase a este fragmento (plugin de WordPress), ¡eso también sería apreciado!

 <div id="post-" > 

¿Qué sucede cuando un elemento tiene múltiples atributos de clase?

Cuando un atributo se declara varias veces para un solo elemento (que es, por cierto, HTML no válido), el primer valor sobrepasará todos los valores posteriores para el mismo atributo. Entonces, en este caso, su elemento solo tendrá las clases one two three .

Este comportamiento se explica en la especificación de HTML5, 8.2.4.35 Estado de nombre de atributo , “… si ya hay un atributo en el [elemento] con el mismo nombre exacto, este es un error de análisis y el nuevo atributo debe eliminarse. … ”

Si conoce la forma correcta de agregar una clase a este fragmento (plugin de WordPress), ¡eso también sería apreciado!

Normalmente, si necesita agregar clases personalizadas dinámicamente a sus publicaciones de WordPress, se post_class filtro de post_class y manipula la matriz $classes según sea necesario. Esto es lo que se ve más o menos en mis temas:

 function nv_post_class( $classes ) { // Most recent post on the front page global $count; if ( is_home() && 1 == $count ) $classes[] = 'latest-post'; return $classes; } add_filter( 'post_class', 'nv_post_class' ); 

Si solo necesita agregar una o más clases estáticas, post_class() como una cadena delimitada por espacios directamente a post_class() :

 
>

Más sobre esto en el Codex de WordPress .

Entonces, el documento no será válido y el navegador intentará realizar la recuperación de errores.

A partir de la especificación HTML 5 :

Si el nombre del atributo ya está en la lista de atributos, regrese al paso con los atributos etiquetados.

Por lo tanto, si se usa un analizador HTML 5, se aplicará el primer atributo.