为什么SharePoint不正确地反对我的HTML和CSS内容?

Pet*_*ete 3 html css sharepoint-2007 cewp sharepoint-2010

我正在尝试向SharePoint内容编辑器Web部件添加内容,但是当我这样做时,它显示为忽略了我的CSS部分.

当它是一个独立的页面时,它在Firefox 3.6和IE 8中显示正常,但在内容编辑器Web部件中放置相同的代码时全部关闭:点击此处查看

通常,当在FF中查看相同的SharePoint页面时,通过IE查看时在SharePoint中损坏的内容将正确显示; 这次菜单布局正确,但文字颜色错误(应为白色).

当我使用IE的开发者工具检查代码时,Sharepoint似乎忽略了它#CAPMenu li的声明height:0;.如果我height:0;在SharePoint之外或使用Firefox查看SharePoint时禁用,则菜单会稍微分开.当我通过IE在SharePoint中查看页面时,菜单已经被清除,禁用height:0;不会发生变化...

请帮忙!这不是SharePoint阻止我使用的第一个设计.

编辑于20101130:我发现了一篇关于SharePoint 2007从其主页发布的代码状态的文章(http://friendlybit.com/html/default-html-in-sharepoint-2007/),文章从我的想法开始正在捣碎我的代码......

事情开始非常糟糕,第一行没有doctype:
<HTML xmlns:o="urn:schemas-microsoft-com:office:office" dir ="ltr"__ expr-val-dir ="ltr">'
这意味着所有默认页面都将以怪癖模式呈现,使得各种浏览器的呈现不可靠.

编辑于20120921:我们已经搬到了2010年,虽然更好,但SP仍会在我的代码中试图解决它.我最终发现我可以将CEWP链接到保存到站点库的HTML文件,并将文件中的代码加载到Web部件中.因为SharePoint无法编辑该文件,我的代码通过干净和原始的方式:-)

Hug*_*ron 6

让CSS在任何SharePoint Web部件中正确应用可能有点棘手,尤其是内容编辑器Web部件.

主要原因是SharePoint生成了一堆表,并将您的Web部件粘贴到该表中.

SharePoint还为所有Web部件区域添加了以下HTML结构:

<table cellspacing="0" cellpadding="0" border="0" width="100%">
    <tbody>
        <tr>
            <td valign="top" id="MSOZoneCell_WebPartWPQ3">
                 <!--Your web part HTML starts here in most cases-->
Run Code Online (Sandbox Code Playgroud)

它还在该表及其包含的元素上应用了许多CSS规则.SharePoint的所有CSS规则都在core.css文件中定义(可以在12个配置单元中找到).虽然我不建议您修改该文件,但您可以从中分析影响代码的规则.

您需要覆盖一些规则,例如.ms-WPHeader .ms-WPBody(对于您的Web部件标题和正文),以便应用您的样式.

找到影响代码的样式的最佳方法是在firefox中使用Firebug.一旦你明白为什么你的代码被破坏了(通过firefox),你很可能会同时在所有浏览器中修复你的页面(除了小东西).首先不要担心跨浏览器兼容性,只是担心理解来自core.css的规则.

虽然确实!重要的黑客攻击可以让你的代码更快地运行,但如果你沿着这条路走下去,你的CSS表将立刻变得无法维护.

编辑 要确保您的规则覆盖.ms-WPBody(例如,对于font-size),您可以比SharePoint更具体.也就是说,假设您在Web部件中有内容:

<table cellspacing="0" cellpadding="0" border="0" width="100%">
    <tbody>
        <tr>
            <td valign="top" id="MSOZoneCell_WebPartWPQ3">
                <div class="my-content">Your content</div>
            </td>
        </tr>
     </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

然后像这样创建一个css规则:

.ms-WPBody .my-content
{
    font-size : 12pt;
    /*Other rules you want to override*/
}
Run Code Online (Sandbox Code Playgroud)

这将比SharePoint正在应用的更具体,因此您的样式表将获胜.

至于你的边界问题,如果没有看到实例或代码,很难知道哪个规则失败了.

但是,您可以尝试使用这些规则,看看它们是否为您做了任何事情.如果你需要找出哪个规则是问题,请使用!重要的黑客攻击.正确覆盖它并删除!important:这假设您不需要任何边框...

.ms-WPBorder, .ms-WPBorderBorderOnly
{
    border: none !important;
}

.ms-PostTitle td
{
    border: none !important;
}

td.ms-PostTitle
{
    border: none !important;
}
Run Code Online (Sandbox Code Playgroud)