html - 为什么 SharePoint 不正确地显示我的 HTML 和 CSS 内容?

标签 html css sharepoint-2010 sharepoint-2007 cewp

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

当它是一个独立页面时,它在 Firefox 3.6 和 IE 8 中显示良好,但是当相同的代码被放置在内容编辑器 Web 部件中时,它会完全消失:Click here to view

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

当我使用 IE 的开发人员工具检查代码时,Sharepoint 似乎忽略了 #CAPMenu li的声明 height:0; .如果我禁用 height:0;在 SharePoint 外部或使用 Firefox 在 SharePoint 中查看代码时,菜单会有点散乱。当我通过 IE 在 SharePoint 中查看页面时,菜单已被关闭并禁用 height:0;没有改变...

求助!这不是 SharePoint 阻止我使用的第一个设计。

在 20101130 上编辑:我发现一篇文章 ( http://friendlybit.com/html/default-html-in-sharepoint-2007/ ) 关于 SharePoint 2007 从其主页发布的代码的状态,文章以我认为是混搭我的代码的内容开头...

Things start out really bad, without a doctype on the first line:
<HTML xmlns:o="urn:schemas-microsoft-com:office:office" dir="ltr" __expr-val-dir="ltr">'
This mean that all default pages will render in quirks mode, making rendering unreliable across browsers.

在 20120921 上编辑:我们已经搬到了 2010 年,虽然更好,但 SP 仍然会破坏我的代码以尝试修复它。我最终发现我可以将 CEWP 链接到保存到站点库的 HTML 文件,并将文件中的代码加载到 Web 部件中。因为 SharePoint 无法编辑文件,所以我的代码是干净和原始的:-)

最佳答案

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

主要原因是 SharePoint 会生成一堆表格并将您的 Web 部件粘贴在该表格中。

SharePoint 也将以下 HTML 结构添加到所有 Web 部件区域:

<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-->

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

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

查找影响代码的样式的最佳方法是在 Firefox 中使用 Firebug。一旦您确切地了解了代码被破坏的原因(通过 firefox),您很可能会同时在所有浏览器中修复您的页面(小问题除外)。一开始不要担心跨浏览器兼容性,只需担心理解来自 core.css 的规则。

虽然 !important hack 确实可以让您的代码运行得更快,但如果您走这条路,您的 CSS 表将很快变得无法维护。

编辑 为确保您的规则覆盖 .ms-WPBody(例如,对于字体大小),您可以比 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>

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

.ms-WPBody .my-content
{
    font-size : 12pt;
    /*Other rules you want to override*/
}

这将比 SharePoint 应用的内容更具体,因此您的样式表将胜出。

至于你的边界问题,如果不看实例或代码,真的很难知道是什么规则失败了。

但是,您可以尝试使用这些规则,看看它们是否对您有所帮助。如果您需要找出问题出在哪条规则上,请使用 !important hacks。正确覆盖它并删除 !important : 这是假设您不想要任何边框...

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

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

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

关于html - 为什么 SharePoint 不正确地显示我的 HTML 和 CSS 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4261451/

相关文章:

jQuery:将 div 包裹在 p 周围,而不是:div 内的第一个元素

css - 用于生成动态比率语义类的 Sass 循环

javascript - SharePoint 2010 - 内容编辑器 Web 部件复制条目

sharepoint - 在 CAML 查询共享点中使用 <In> 标签

php - 将 url 中的变量传递给 PHP 文件

javascript - 如何正确地将单击的按钮属性值传递给表单提交事件?

javascript - jQuery .submit() 有验证但没有页面刷新

css - 什么时候需要放div。有两个 CSS 选择器?

javascript - 如何修改我的 CSS 以便我可以在 DOM 中显示具有特定颜色的元素?

sharepoint - 如何禁用功能区工具栏的按钮?