在导航菜单父母和孩子上更改CSS

时间:2014-05-30 13:27:52

标签: php html css wordpress

我有一个PHP脚本,它会根据标题显示的标题项为标题分配CSS属性。

我有这个菜单结构。关于及其子女需要橙色标题和服务,其子女需要紫色标题

ABOUT SERVICES page1 page 4 page2 page 5 page3 page 6

目前我的脚本将检测某个页面是否是某个页面的子页面,但所有标题都是使用我脚本的第一个if语句设置的。 (即我首先检查服务,并为所有内容分配紫色标题)

这是两个脚本,谁能告诉我出了什么问题?

if(get_the_title($ID) === "Services" || is_tree($ID) == true) {
     echo '<style type="text/css">
                .header-page h1 {
                        background-color: #9B87A9;
                    }

                    .header-page h2 {
                        background-color: #9B87A9;
                    }
                </style>';
}

else if(get_the_title($ID) === "About" || is_tree($ID) == true) {
    echo '<style type="text/css">
                .header-page h1 {
                        background-color: #dea949;
                    }

                    .header-page h2 {
                        background-color: #dea949;
                    }
                </style>';
}

和第二个脚本/功能:

function is_tree($pid) {      // $pid = The ID of the page we're looking for pages underneath
global $post;         // load details about this page
if(is_page()&&($post->post_parent==$pid||is_page($pid))) 
           return true;   // we're at the page or at a sub page
else 
           return false;  // we're elsewhere
};

1 个答案:

答案 0 :(得分:1)

您不应该在样式标记中回显一些CSS,而是有条件地将类分配给菜单或菜单项,然后将css用于特定的类。

您在这里做的是为所有.header-page h1元素分配相同的样式(是菜单标题?),这将适用于所有<h1 class="header-p[age">

如果你的ABOUT菜单有一个独特的类,那么让我们说.about你只需要为这个元素使用不同的css,而不需要使用php条件。

示例,使用html和css:

<h1 class="header-page about">About</h1>
<ul class="menu about">
 ...
</ul>


 <h1 class="header-page services">Services</h1>
 <ul class="menu services">
 ...
 </ul>

现在你可以在没有条件的情况下应用样式:

 <style>
 h1.header-page.about {color:black}
 ul.menu.about {color:red}
 h1.header-page.services {color:green}
 ul.services {color:yellow}
 </style>