我正在使用 CEWP 链接的 HTML 文件来生成指向其他 Web 部件页面的链接菜单。我想在每个链接页面的 CEWP 中使用相同的文件。作为用户位置的指示器,我想将当前页面的链接设置为与菜单中其他链接不同的样式。

我的理解是,我可以创建一个 CSS 规则,通过使用父后代选择器来定义当前页面链接的样式,即,如果页面的 id="Home" 和链接的 class="Home", , 然后 #Home .Home{font-weight:bold;} 应该给我我需要的东西。

我想我必须能够将 ID 分配给 Web 部件页面上的父元素,以便其中的所有内容都是该元素的“子元素”,并且可以在声明中进行寻址。我想知道应该向 ASPX 页面上的哪个元素应用 ID。或者,我的 ASPX 页面是否已经有一个可以用于样式设置的 ID?

我意识到我可能会从非常规的方向来解决这个问题,并且我对其他方法持开放态度。此外,我可以让基金会的不一致锁定安装做我想做的事,但如果我了解到有一个“最佳实践”路径可以实现我的目标,我可以要求穿白大褂的团队实施一个解决方案。

有帮助吗?

解决方案

我建议避免仅将 id 用于 css 样式,尤其是像这样的通用词 #current. 。使用一个类来代替: .current-page 或类似的东西。

SharePoint 在服务器端呈现当前菜单项的类和 ID。在您的 CEWP 中,您无权访问服务器端。一种可能的解决方案是将属性选择器与 jQuery 结合使用。假设你的菜单中有一个带有 class 的换行 div .my-cewp-menu.

$('.my-cewp-menu').find("a[href='currenHref']").addClass("current-page");

这必须在加载 DOM 时运行。您可以通过 javascript 获取当前页面 url (href)。

(function($) {
    $(document).on({
        ready: function() {
            var href = window.location.href;
            $('.my-cewp-menu').find("a[href='" + href + "']").addClass("current-page")
        }
    });
})(jQuery);

这段代码只是一个简单的例子。它不会考虑可能的 window.location.hash (url 中的 #)或可能的相对 url(/subsite/my-page.aspx 或 some-page.aspx)。

其他提示

这更像是一个一般的 HTML/CSS 问题(除了您正在使用 CEWP 的事实),但是,当您还在这里时,为什么不导出 CEWP 并简单地使用选择器(例如id="current") 并使用活动元素的样式定义它,同时更改每个页面上添加了 #current 的元素。

另一方面,SharePoint 的顶部导航栏(基于 ASP.NET 菜单控件)已经做到了这一点。

请知道,我选择了阿纳托利的答案,并且仅在需要时作为替代方法提供......

我的 SP 实现使用 <asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server"></asp:Content> 在 Web 部件页面上围绕 <table> 含有 <WebPartPages:WebPartZone/> 标签。我可以通过添加类和/或 ID 来定位 Web 部件页面上的 Web 部件中放置的所有内容(如我的菜单代码) table 标签:

<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
 <table class="Class1 Class2" id="Home">
  <tr><td><WebPartPages:WebPartZone/></td></tr>
 </table>
</asp:Content>

CEWP 中包含我的菜单代码的元素是 ASPX 页面的子元素 <table ID="Home"> 元素。通过为与其目标页面对应的每个菜单链接分配类,我可以根据当前 ASPX 页面的样式将它们设置为“当前”链接 <table> ID。

选择器和声明以及呈现的源代码的示例:

从 ASPX 页面中链接的样式表...

#Home .Home{font-style:italic;}

从 ASPX 页面上的表格...

<table id="Home">

<!--CEWP's HTML-->
    <ul>
     <li>
      <a href="http://website.com" class="Home">Home</a>
     </li>
    </ul>
<!--End CEWP-->

</table>
许可以下: CC-BY-SA归因
scroll top