纯css将admin_bar子节点的子节点数“浮动”到右侧

时间:2018-09-02 作者:Paul \'Sparrow Hawk\' Biron

我添加了一个admin\\u bar节点。该节点中的每个项都有数量可变的子项。我想在项目标题右侧显示每个“浮动”项目的子项目数(项目标题和子项目数之间有一些空格),如所示:

node display with short item titles

我可以做到以下几点:

PHP

add_action( \'admin_bar_menu\', \'add_my_admin_bar_node\' );
function add_my_admin_bar_node() {
    global $wp_admin_bar;

    $args =  array(
        \'id\'    => \'my-admin-bar-node\',
        \'parent\' => \'top-secondary\',
        \'title\' => \'My Admin Bar Node\',
    );
    $wp_admin_bar->add_node( $args );
    $children = array(
        \'item-1\' => array(
            \'child-1\',
            \'child-2\',
        ),
        \'item-2\' => array(
            \'child-1\',
            \'child-2\',
            \'child-3\',
        ),
    );
    foreach ( $children as $child => $node ) {
        $title = ucfirst( str_replace( \'-\', \' \', $child ) );
        // append the number of children to the title
        $title .= "<span class=\'num_children\'>" . count( $node ) . \'</span>\';
        $args = array(
            \'id\' => $child,
            \'parent\' => \'my-admin-bar-node\',
            \'title\' => $title,
        );
        $wp_admin_bar->add_node( $args );
        foreach ( $node as $inner_child ) {
            $title = ucfirst( str_replace( \'-\', \' \', $inner_child ) );
            $args = array(
                \'id\' => $child . \'-\' . $inner_child,
                \'parent\' => $child,
                \'title\' => $title,
            );
            $wp_admin_bar->add_node( $args );
        }
    }
}

CSS

#wpadminbar #wp-admin-bar-my-admin-bar-node {
    float: left;
}
#wpadminbar #wp-admin-bar-my-admin-bar-node .num_children {
    /* using float: right; doesn\'t work */
    margin: 0 1em;
    position: absolute;
    right: 0;
    top: -3px;
}
这一切都很好。

但是,如果任何节点的项目标题比min-width 这是WP设定的.ab-item (140px)长项目标题与子项计数重叠。在我的实际应用程序中,项目标题是从数据库中提取的,其中许多标题的宽度超过140px,如:

node display with long item titles

当然,使用javascript,我可以设置显式宽度#wp-admin-bar-my-admin-bar-node-default 并制作我想要的显示器:

node display with long item titles and javascript to set width

但必须有一个纯CSS来做这件事,我只是不知道它是什么。据我所知,问题是WP设置position: relative;position: absolute; admin\\u栏标记中的各种元素使我的简单CSS无法处理长项目标题。

有人能建议更改我的CSS和/或添加到项目标题中的标记吗(<span class=\'num_children\'>xxx</span>) 无论项目标题有多宽,都能做到这一点?

1 个回复
SO网友:David Sword

在文本标题上加上与绝对数字宽度大致相同的空白,可以防止重叠。

#wpadminbar #wp-admin-bar-my-admin-bar-node-default > li > .ab-item {
    padding-right: 45px;
}
你也可以把你的标题用一个空格括起来,把两个空格都括起来,然后display:flex; 在父级上使用flex 大小和位置。

结束

相关推荐

将自定义html/css/图像添加到主题

我有一个html文件中的小标题,有自己的css文件和一个图像文件夹(SVG)。我基本上是想把这个放在我网站的标题中,所以我做了一个子主题,然后去编辑这个主题的标题。php和我的html代码,链接到css文件(我添加到主题中),以及主题文件中的SVG文件夹。SVG不会出现,任何样式也不会出现,尽管html本身显示得很好。我甚至将css移到了我的样式中。css的子主题,它没有什么区别。我基本上想知道最简单的方法是合并我的代码/文件结构(html文件、css文件、SVG文件夹)。如果相关的话,我可以包含代码,但