Применить CSS к определенной кнопке панели ленты SharePoint?

Есть ли способ просто скрыть конкретную кнопку панели ленты SharePoint? Я видел код CSS для скрытия всей полосы ленты, но я хочу скрыть только одну кнопку на нем (кнопка отметки). Я пробовал ссылаться на него несколькими способами, например:

a#Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large { display: none; !important }

ms-cui-ctl-large#Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large { display: none; !important }

a.ms-cui-ctl-large#Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large { display: none; !important }

Возможно, у меня просто неправильный CSS, или, возможно, я ошибаюсь. Как я могу скрыть этот элемент?


person Jim Parker    schedule 17.05.2011    source источник


Ответы (3)


Нашел решение этой проблемы исключительно через CSS благодаря http://online.appdev.com/edge/blogs/doug_ware/archive/2011/08/02/hiding-a-sharepoint-ribbon-button-with-css.aspx

Уловка заключается в том, что для любого '.' в идентификаторе SharePoint (который, к сожалению, включает. Как часть своих имен и не редактируется), вам нужно поставить перед каждым '\', чтобы стать '\.', поэтому в исходном примере вы обнаружите, что:

#Ribbon\.DocLibListForm\.Edit\.Commit\.CheckIn-Large {display:none;}

Работает как шарм! :-)

person Alan Howshall    schedule 06.03.2012

Что ж, я нашел решение. Он не использует CSS, а скорее javascript, чтобы скрыть определенную кнопку на панели ленты. Вот код, чтобы скрыть кнопку Check-In:

<script type="text/javascript">
var elem = document.getElementById("Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large");
elem.style.display = "none";
</script>

Чтобы реализовать это, я просто создал текстовый файл, содержащий приведенный выше код, затем поместил CEWP в мою форму редактирования списка, которая связана с этим файлом, и бум - готово!

Спасибо @Prozaker за ваши советы по CSS - сегодня я узнал кое-что новое (кроме того, я отстой в CSS :-)

person Jim Parker    schedule 17.05.2011

Было бы очень полезно, если бы вы могли опубликовать ту часть html, с которой вам нужна помощь.

Однако ваш css не использует это важное правило должным образом, !important должен быть перед ; примерно так:

Вам также необходимо разделить пробелом все дочерние элементы, на которые вы ссылаетесь, первый пример должен быть написан следующим образом:

a#Ribbon .DocLibListForm .Edit .Commit .CheckIn-Large { 
     display: none !important; 
}

Это можно было бы переписать так:

a#Ribbon .DocLibListForm .CheckIn-Large { 
     display: none !important; 
}

Учитывая, что только 1 элемент назван .CheckIn-Large, это дочерний элемент .DocLibListForm

Для такого рода проблем вы можете использовать панель разработчика IE (или firebug, если вы используете firefox), она должна поставляться в комплекте с ie8 +, который может помочь вам с подобными вещами, позволяя редактировать CSS в режиме реального времени.

Я бы не советовал использовать правило !important, потому что оно изменяет способ нормальной работы CSS.

{edit}

поскольку точки являются частью вашего идентификатора, вы можете попробовать следующее:

#Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large { 
     display: none !important;
}

Однако без фактического HTML-кода все еще трудно сказать, возможно, вы сможете вставить ту часть, которая вызывает проблемы, в pastebin.

person Prozaker    schedule 17.05.2011
comment
Я использовал IR Dev Bar и нашел эту строку кода: ‹A id = Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large class = ms-cui-ctl-large role = button onclick = return false; aria-describeby = Ribbon.DocLibListForm.Edit.Commit.CheckIn_ToolTip href = javascript :; unselectable = on mscui: controltype = Button ›Мне удалось добавить атрибут к этой строке и установить для отображения значение none, и это действительно сработало. Проблема, с которой я столкнулся, заключается в том, чтобы применить этот CSS к форме. Я использую связанный cewp с таблицей стилей CSS, чтобы попытаться это сделать. - person Jim Parker; 17.05.2011
comment
Извините, чтобы уточнить: я могу заставить это работать, только вручную добавив атрибут в IE Dev Bar, но не могу реплицировать за пределами этого. Я также пробовал все варианты предоставленного вами css, но все равно не повезло. - person Jim Parker; 17.05.2011
comment
Ладно, приближаемся. Я использовал IE Dev Bar для изменения HTML и изменил идентификатор с: id = Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large на id = Tester, а затем изменил CSS на ссылку следующим образом: A.ms-cui-ctl -большой # тестер, и все заработало! Так что я думаю, что близок. Проблема, должно быть, заключается в том, как я ссылаюсь на этот длинный идентификатор Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large. Я попытался разделить, как предлагалось, а также сократить, но все равно безрезультатно. Есть предположения? Спасибо - person Jim Parker; 17.05.2011
comment
не понимал, что . были частью имени идентификатора вашего элемента. Я не советую использовать точки для идентификаторов, поскольку точки используются для ссылки на классы в css. - person Prozaker; 17.05.2011
comment
Привет @Prozaker: Поверьте, я бы тоже хотел, чтобы идентификатор элемента был проще, но, к сожалению, он генерируется кодом SharePoint. Во всяком случае, скрипт работает отлично. Еще раз спасибо за советы по CSS. - person Jim Parker; 18.05.2011