Переопределение имен классов CSS Sharepoint в веб-части - PullRequest
7 голосов
/ 19 октября 2010

Я искал все возможное для удовлетворительного ответа на этот вопрос и не смог. Я надеюсь, что StackOverflow сможет доставить за меня!

Я использую SharePoint Foundation 2010 (моя первая настоящая попытка углубиться в SharePoint) с (среди прочего) настраиваемой веб-частью; главная страница сайта использует CSS-файл, предоставленный клиентом и которого я должен придерживаться. Проблема, с которой я столкнулся, заключается в том, что SharePoint, добавляя несколько специфических классов SharePoint в структуру HTML веб-части, конфликтует со стилем клиента. После некоторых копаний я обнаружил, что класс ms-WPBody и его различные селекторы элементов являются главными виновниками.

Я мог бы добавить !important ко всему в таблице стилей клиента, но это вербено. Я мог бы вставить некоторые очень грязные стили в дочерний контент веб-части, пытаясь переопределить стилизацию SharePoint, и это курс, которым я следовал в последнее время, но он становился грязным. Или я могу попытаться удалить класс из веб-части, что приводит меня к моему вопросу:

Как можно удалить или иным образом переопределить имена классов CSS, вставленные в структурирование HTML для веб-части SharePoint? Я недостаточно знаю внутреннюю работу SharePoint, чтобы понять, что нужно сделать, чтобы внести это изменение, и мой гугл-фу не справился с этой задачей. CssClass в разметке веб-элемента управления ASP.NET, очевидно, игнорируется, вероятно, некоторая задержка наследуется от WebControl

Помогите мне StackOverflow! Ты моя единственная надежда!

Редактировать
Я прошу прощения за то, что не разъяснил это раньше, но я хотел бы заявить, что я использую CSS и не ищу помощи со стилем. Что я действительно ищу, так это как удалить класс CSS, испускаемый SharePoint. Может ли кто-нибудь помочь там? Я собираюсь удалить тег CSS, так как это, кажется, сбивает с толку людей. Этот вопрос на самом деле не о CSS, а о SharePoint.

Ответы [ 5 ]

3 голосов
/ 20 октября 2010

Вот типичный 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>

Хитрость в том, что сама веб-часть является внутренним DIV (и всеми его дочерними элементами). Внешний DIV (класс с классом ms-WPBody) - WebPartZone . Этот элемент управления запечатан, но вы можете написать адаптер, который будет отображать WebPartZone так, как вы хотите. Большинство примеров предназначены для рендеринга без таблиц, вы можете написать такой, который поддерживает существующую структуру, но удаляет классы.

Для меня кодирование всего этого и последующая регистрация в compat.browser App_Browsers для веб-приложения выглядит излишним, поэтому я, вероятно, пойду с jQuery (но если вы сделаете Adapter, я бы хотел увидеть он).

3 голосов
/ 20 октября 2010

CSS должен соответствовать html, к которому он применяется - с сгенерированным html, подобным html, сгенерированным SharePoint (или стандартными веб-формами asp.net в этом отношении), обычно гораздо легче изменить css.Если добавить важный не вариант, вы обычно можете сделать что-то, используя более конкретные селекторы - то есть стиль, определенный как «таблица td», переопределит один для «td», хотя они фактически выбирают все те же элементы.Вы можете использовать этот подход, чтобы отменить любые элементы стиля sharepoint, которые вызывают проблемы.

Если вы действительно хотите изменить классы, которые sharepoint размещает на странице, используйте jquery - попытка сделать это на стороне сервера на самом деле не является чем-тоВы хотите войти в свой первый проект sharepoint.

3 голосов
/ 20 октября 2010

Я не уверен, что следую, но почему бы не обернуть свою веб-часть в контейнерный 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 году нам пришлось беспокоиться о том, чтобы ваша таблица стилей была названа последней в алфавитном порядке, чтобы она применялась правильно. Добавьте к вашему CSS-файлу z, чтобы увидеть, поможет ли это.

Вот справочная статья о проблеме: http://singchan.com/2009/12/29/branding-sharepoint-2010-collaboration-sites-part-2-in-a-series/

1 голос
/ 27 февраля 2014

Или просто добавьте веб-часть редактора контента и переопределите элемент стиля CSS в HTML:

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

- Мир!

0 голосов
/ 20 октября 2010

как вы загружаете свой файл CSS?Если вы загружаете его в часть заголовка вашей главной страницы или просто устанавливаете custom.css, вы можете попробовать загрузить его за пределы заголовка.Это должно привести к его загрузке после core.css и, следовательно, позволит вам при необходимости переопределить стандартные классы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...