HTML中的多个类属性

Ric*_*iwi 21 html css php wordpress

当元素具有多个class属性时会发生什么?

<div id="test" class="one two three" class="four">
Run Code Online (Sandbox Code Playgroud)

我正在尝试post_class();在WordPress插件的输出中添加一个类,但函数本身正在创建整个部分class="one two three"

它等同于class="one two three four"?或者第一次或第二次获胜?或者它是未定义的行为,在这种情况下主要的浏览器做什么?

如果您知道向此片段(WordPress插件)添加类的正确方法,那么也将不胜感激!

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
Run Code Online (Sandbox Code Playgroud)

Bol*_*ock 25

当元素具有多个类属性时会发生什么?

对于单个元素(顺便说一下,这是无效的HTML)多次声明属性时,行为方面第一个值将覆盖同一属性的所有后续值.所以在这种情况下,你的元素只有类one two three.

HTML5规范8.2.4.35属性名称状态中解释了这种行为,"...如果[元素]上已经有一个具有完全相同名称的属性,那么这是一个解析错误,必须删除新属性......"

如果您知道向此片段(WordPress插件)添加类的正确方法,那么也将不胜感激!

通常,如果您需要动态地向WordPress帖子添加自定义类,您可以挂钩到post_class过滤器并$classes根据需要操作数组.这是我在主题中大致看起来的样子:

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' );
Run Code Online (Sandbox Code Playgroud)

如果只需要添加一个或多个静态类,请将它们作为空格分隔的字符串直接传递给post_class():

<div id="post-<?php the_ID(); ?>" <?php post_class( 'myclass1 myclass2' ); ?>>
Run Code Online (Sandbox Code Playgroud)

更多关于WordPress Codex的内容.


Que*_*tin 8

然后文档将无效,浏览器将尝试执行错误恢复.

HTML 5规范:

如果属性的名称已在属性列表中,则返回标记为属性的步骤.

因此,如果正在使用HTML 5解析器,则应该应用第一个属性.

  • 至少在webkit和Firefox中,这是正确的,优先使用第一类,随后删除。[提琴](http://jsfiddle.net/sBp5Z/) (2认同)