我有一个客户端要求为MOSS topnav中的每个单独导航单元格分别设置颜色。我知道如何设置整个topnav栏的样式,但不能想办法分别给它们着色。
我查看了SharePoint生成的源代码,并注意到这些选项卡是ID'd'zz1_TopNavigationMenun1','zz1_TopNavigationMenun2'等等,但似乎无法覆盖CSS。
是否有人知道是否可以明确设置每个标签,如果是,那么包含哪些CSS?
非常感谢。
答案 0 :(得分:1)
是的,您可以设置MOSS菜单的各个选项卡的样式,但它非常hacky(因为代码不可访问,样式通常是内联的,您需要使用!重要的CSS黑客)。
包含所有菜单的表格具有以下ID:zz1_TopNavigationMenu
然后,每个topnav菜单项都具有以下ID:zz1_TopNavigationMenun0,zz1_TopNavigationMenun1等。 从左到右(对于最后的数字,所以n0是最左边的菜单项,n1是第二个,等等。)
每个菜单项都是td。您可以通过执行类似
的操作来设置css中菜单项的边框#zz1_TopNavigationMenun1 {
border-left:1px solid #FFFFFF !important;
border-right:1px solid #FFFFFF !important;
}
你需要使用!important css hacks来完成这项工作。否则,您的样式将被MOSS菜单中显示的内嵌样式覆盖(当用户将鼠标悬停在其上时)。
在这些TD中,还有另一个表,您可以在其中设置更多样式(例如链接的外观等)。
选择菜单项时,会向其添加ms-topnavselected类。您可以使用它来为菜单项应用不同的颜色(再一次,在您的CSS中使用!important)
如果未选择菜单项,您应该获得如下所示的HTML:
<table cellspacing="0" cellpadding="0" border="0" width="100%" class="ms-topnav zz1_TopNavigationMenu_4 ms-topnavselected zz1_TopNavigationMenu_10">
<tbody>
<tr>
<td style="white-space: nowrap;">
<a style="border-style: none; font-size: 1em;" href="...." class="zz1_TopNavigationMenu_1 ms-topnav zz1_TopNavigationMenu_3 ms-topnavselected zz1_TopNavigationMenu_9">Text</a>
</td>
</tr>
</tbody>
</table>
选择它后,HTML将如下所示:
<table cellspacing="0" cellpadding="0" border="0" width="100%" class="ms-topnav zz1_TopNavigationMenu_4 ms-topnavselected zz1_TopNavigationMenu_10">
<tbody>
<tr>
<td style="white-space: nowrap;">
<a style="border-style: none; font-size: 1em;" href="...." class="zz1_TopNavigationMenu_1 ms-topnav zz1_TopNavigationMenu_3 ms-topnavselected zz1_TopNavigationMenu_9">Text</a>
</td>
</tr>
</tbody>
</table>
2之间的最大区别是.ms-topnavselected所以如果你想要选择菜单的样式,你应该使用这个:
.ms-topnavselected {
color:#FFFFFF !important;
}
例如(再一次,你需要!important)。
所以基本上,如果你想根据它们的位置设置菜单样式,可以使用#zz1_TopNavigationMenun从表格中设置样式,如果要设置所选菜单的样式,请使用.ms-topnavselected。对于其中的任何其他内容,您必须使用父子关系来访问它们(因为它们的ID不可靠)。例如:
#zz1_TopNavigationMenun1 > tbody > tr > td
设置特定菜单项的样式。
希望这有帮助!