Почему SharePoint неправильно отображает мой HTML и CSS контент?
Я пытаюсь добавить контент в веб-часть редактора контента SharePoint, но когда я это делаю, он отображается так, как будто он игнорирует части моего CSS.
Он хорошо отображается в Firefox 3.6 и IE 8, когда это отдельная страница, но отключается, когда тот же код помещается в веб-часть редактора контента: нажмите здесь, чтобы посмотреть
Часто вещи, которые не работают в SharePoint при просмотре через IE, отображаются правильно, когда одна и та же страница SharePoint просматривается в FF; на этот раз меню было выложено правильно, но текст был неправильного цвета (должен быть белым).
Когда я проверяю код с помощью инструментов разработчика IE, Sharepoint, кажется, игнорирует #CAPMenu li
декларация height:0;
, Если я отключу height:0;
при просмотре кода вне SharePoint или в SharePoint с Firefox меню немного разваливается. Когда я просматриваю страницу в SharePoint через IE, меню уже скрыто и отключено height:0;
не меняет...
Пожалуйста помоги! Это не первый дизайн, который SharePoint не позволяет мне использовать.
Изменить на 20101130: я нашел статью ( http://friendlybit.com/html/default-html-in-sharepoint-2007/) о состоянии кода, который SharePoint 2007 публикует со своей главной страницы, и статья начинается с того, что я думаю пюреет мой код...
Все начинается очень плохо, без доктайпа в первой строке:
<HTML xmlns:o="urn:schemas-microsoft-com:office:office"
dir = "ltr" __expr-val-dir = "ltr"> '
Это означает, что все страницы по умолчанию будут отображаться в режиме причуд, делая рендеринг ненадежным во всех браузерах.
Изменить на 20120921: С тех пор мы перешли на 2010 год, и, хотя лучше, SP будет по-прежнему разделывать мой код в попытке исправить его. В конце концов я понял, что могу связать CEWP с файлом HTML, сохраненным в библиотеке сайта, и получить код в файле, загружаемый в веб-часть. Поскольку SharePoint не может редактировать файл, мой код выглядит чистым и нетронутым:-)
2 ответа
Может быть немного сложно заставить ваш CSS правильно применяться в любой веб-части SharePoint, особенно в веб-частях редактора контента.
Основная причина этого заключается в том, что SharePoint генерирует кучу таблиц и помещает вашу веб-часть в эту таблицу.
SharePoint добавляет следующую структуру 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-->
Он также применяет множество правил CSS к этой таблице и к содержащимся в ней элементам. Все правила CSS для SharePoint определены в файле core.css (который вы можете найти в 12 кусте). Хотя я не рекомендую вам изменять этот файл, вы можете проанализировать те правила, которые влияют на ваш код.
Вам нужно будет переопределить некоторые правила, такие как .ms-WPHeader
.ms-WPBody
(для заголовка и тела веб-части), чтобы применить ваши стили.
Лучший способ узнать, какие стили влияют на ваш код, - это использовать Firebug в Firefox. Как только вы точно поймете, почему ваш код не работает (через Firefox), вы, скорее всего, исправите свою страницу во всех браузерах одновременно (кроме мелких вещей). Сначала не беспокойтесь о кросс-браузерной совместимости, просто позаботьтесь о понимании правил, которые приходят из core.css.
Хотя это правда, что! Важные хаки могут заставить ваш код работать быстрее, ваш CSS-лист станет неуправляемым в кратчайшие сроки, если вы пойдете по этому пути.
РЕДАКТИРОВАТЬ Чтобы убедиться, что ваше правило переопределяет.ms-WPBody (например, для размера шрифта), вы можете быть более конкретным, чем SharePoint. То есть, у вас есть контент внутри веб-части:
<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, и поэтому ваша таблица стилей победит.
Что касается вашего пограничного вопроса, очень трудно понять, какое правило не работает, не увидев живой пример или код.
Тем не менее, вы можете попробовать с этими правилами и посмотреть, если они делают что-нибудь для вас. Используйте! Важные взломы, если вам нужно выяснить, какое правило является проблемой. Переопределите его правильно и удалите! Важный: это предполагает, что вы не хотите, чтобы какая-либо граница...
.ms-WPBorder, .ms-WPBorderBorderOnly
{
border: none !important;
}
.ms-PostTitle td
{
border: none !important;
}
td.ms-PostTitle
{
border: none !important;
}
Sharepoint - это программное обеспечение CMS, которое динамически генерирует свой код для страниц и аналогичным образом присваивает тегам класс CSS. И эти классы имеют некоторые свойства, определенные в таблице стилей. Чтобы переопределить этот стиль, используйте ключевое слово! Important в своей таблице стилей. например
.class{свойство: значение! важное; }
надеюсь, это поможет вам, даже если я никогда не работал с Sharepoint.