7

我一直在寻找一个令人满意的答案,但失败了。我希望 StackOverflow 可以为我交付!

我正在使用 SharePoint Foundation 2010(我第一次真正尝试深入研究 SharePoint),以及(除其他外)一个自定义 Web 部件;该站点的母版页使用客户提供的 CSS 文件,我必须遵守该文件。我遇到的问题是,SharePoint 通过将几个特定于 SharePoint 的 CSS 类添加到 Web 部件 HTML 结构中,与客户端的样式冲突。经过一番挖掘,我发现ms-WPBody类及其各种元素选择器是罪魁祸首。

我可以添加!important到客户端样式表中的所有内容,但这是禁止的。我可以在 Web 部件的子内容中插入一些非常混乱的样式,以尝试覆盖 SharePoint 样式,这是我最近一直在追求的课程,但它变得越来越混乱。或者,我可以尝试从 Web 部件中删除课程,这让我想到了我的问题:

如何删除或以其他方式覆盖插入到 SharePoint Web 部件的 HTML 结构中的 CSS 类名称?我对 SharePoint 的内部工作原理了解得不够多,不知道该用什么钩子来进行此更改,而且我的 google-fu 在该主题上失败了。CssClass在 ASP.NET 上的 web 控件标记显然被忽略了,可能是从WebControl.

帮助我 StackOverflow!你是我唯一的希望!

编辑
我很抱歉之前没有说清楚,但我想声明我对 CSS 很了解,并且不是在寻求样式方面的帮助。我真正在寻找的是如何删除 SharePoint 发出的 CSS 类。有人可以帮忙吗?我将删除 CSS 标记,因为这似乎使人们感到困惑。这个问题不是关于 CSS,而是关于 SharePoint。

4

5 回答 5

3

CSS 必须与它所应用的 html 相匹配 - 生成的 html 类似于 SharePoint(或标准的 asp.net 网络表单)生成的 html,通常更容易修改 css。如果添加重要不是一个选项,您通常可以使用更具体的选择器来做一些事情 - 即定义为“table td”的样式将覆盖“td”的样式,尽管它们实际上选择了所有相同的元素。您可以使用此方法撤消任何可能导致问题的共享点样式。

如果您真的想更改页面上的共享点类,请使用 jquery - 尝试在服务器端进行操作并不是您想要在您的第一个共享点项目中进行的操作。

于 2010-10-20T02:58:19.993 回答
3

我不确定我是否遵循,但为什么不将你的 webpart 包装在一个容器 div 中,然后根据你的内心设置样式:

<style type="text/css">
.ms-WPBody {
background-color:red;
}

#myCustomCss p
{
    background-color:Blue;
}

</style>
<div class=ms-WPBody>
<div id=MyCustomCSS>
<p>Hello world</p>
</div>
</div>

在 2007 年,我们不得不担心确保您的样式表按字母顺序命名,以便正确应用。用 z 前缀你的 css 文件,看看它是否有帮助。

这是有关该问题的参考文章:http: //singchan.com/2009/12/29/branding-sharepoint-2010-collaboration-sites-part-2-in-a-series/

于 2010-10-19T22:37:33.490 回答
3

下面是一些典型的 Web 部件 HTML:

<div style=""
    allowexport="false"
    allowdelete="false"
    class="ms-WPBody ms-wpContentDivSpace"
    width="100%"
    id="WebPartctl00_m_g_d0420a1c_44b7_4009_81c9_2bbcf9b325e9"
    haspers="false"
    webpartid="d0420a1c-44b7-4009-81c9-2bbcf9b325e9">
    <div id="ctl00_m_g_d0420a1c_44b7_4009_81c9_2bbcf9b325e9">
        Web Part Content goes here...
    </div>
</div>

诀窍在于 Web 部件本身就是内部 DIV(及其所有子级)。外部 DIV(具有 ms-WPBody 类的那个)是WebPartZone。此控件是密封的,但您可以编写一个适配器来呈现您想要的 WebPartZone。大多数示例都是针对无表渲染的,您可以编写一个维护现有结构但删除类的示例。

对我来说,对所有这些进行编码,然后在 Web 应用程序的 App_Browsers 的 compat.browser 中注册它似乎有点过头了,所以我可能会选择 jQuery(但如果你使用适配器,我很乐意看到它)。

于 2010-10-20T18:26:24.510 回答
1

或者只是添加一个内容编辑器 Web 部件并覆盖 HTML 中的 CSS 样式元素:

<style type="text/css">
.ms-stylebox {
 border:o important;
}
</style>

- 和平!

于 2014-02-27T01:48:18.713 回答
0

你是如何加载你的 CSS 文件的?如果您将其加载到母版页头部的一部分,或者仅通过设置 custom.css,您可以尝试将其加载到头部之外。这应该会导致它在 core.css 之后加载,因此允许您根据需要覆盖标准类。

于 2010-10-20T00:41:54.880 回答