Глобальное изменение стиля по умолчанию в Primefaces
Как мне изменить и применить изменения к стилю по умолчанию в глобальном масштабе и только один раз?
.ui-widget,.ui-widget .ui-widget {
font-size: 90% !important;
}
В настоящее время я вставляю этот фрагмент CSS в начало каждой страницы XHTML.
<head>
<style type="text/css">
.ui-widget,.ui-widget .ui-widget {
font-size: 90% !important;
}
</style>
</head>
Ответы
Ответ 1
Создайте файл таблицы стилей:
/resources/css/default.css
.ui-widget, .ui-widget .ui-widget {
font-size: 90%;
}
(обратите внимание, что я удалил !important
"hack", см. также Как переопределить CSS по умолчанию PrimeFaces с пользовательскими стилями? для подробного объяснения как переопределить стили PF)
Включите его в <h:body>
вашего шаблона с помощью <h:outputStylesheet>
(он будет автоматически перемещен в конец заголовка HTML, после всех собственных таблиц стилей PrimeFaces):
<h:body>
<h:outputStylesheet name="css/default.css" />
...
</h:body>
Если вы не используете основной шаблон и, следовательно, должны включать это на каждую страницу, я рекомендую пересмотреть дизайн вашей страницы и использовать возможности шаблонов JSF2 Facelets. Таким образом, у вас есть только один файл главного шаблона, в котором определены все значения по умолчанию как для головы, так и для тела. См. Также этот ответ для конкретного примера: Как включить другой XHTML в XHTML с помощью JSF 2.0 Facelets?
Ответ 2
Я бы рекомендовал использовать:
.ui-widget {
font-size: 90%;
}
.ui-widget .ui-widget {
font-size: 100%;
}
вместо подхода BalusC, если вам не нравится размер шрифта, уменьшающийся при объединении компонентов JSF.
Я бы согласился с BalusC, что вы должны создать таблицу стилей и рассмотреть шаблоны, но я не согласен с предложенным CSS (хотя я все еще не решил использовать !important
!).
В разделе 8.4 руководства Руководство пользователя Primfaces 3.1 предлагается использовать
.ui-widget, .ui-widget .ui-widget {
font-size: 90% !important;
}
который похож на предложение BalusC, но использует !important
.
Это будет делать две вещи:
- установить размер шрифта компонентов с классом
ui-widget
до 90%
(родительского)
- установите размер шрифта компонентов с помощью
ui-widget
класса и являются дочерними элементами другого компонента с ui-widget
класс до 90% (от родителя)
Вы действительно хотите установить размер шрифта вложенного ui-widget
на 90%? Если у вас есть 2 или 3 уровня вложенных ui-widget
, размер шрифта будет продолжать уменьшаться. Попробуйте следующую разметку JSF (Primefaces), и вы увидите мою точку.
<h:form>
<p:button value="Normal"></p:button>
<p:panel>
<p:button value="A bit smaller"></p:button>
<p:panel>
<p:button value="Even smaller again"></p:button>
<p:panel>
<p:button value="Tiny"></p:button>
</p:panel>
</p:panel>
</p:panel>
</h:form>
Я считаю, что причина .ui-widget .ui-widget
требовалась в стандартном jQuery CSS, чтобы предотвратить обратную проблему: размер шрифта увеличивается в вложенных ui-widget
s.
Стандартные стили обычно следующие:
.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
Без стиля, определенного для .ui-widget .ui-widget
, стиль font-size: 1.1em
по умолчанию, применяемый к .ui-widget
, приводит к увеличению размера шрифта в вложенных ui-widget
s.
Добавив более специфический селектор .ui-widget .ui-widget
с размером шрифта, установленным на 100% (или 1em), вы убедитесь, что вы получите согласованный размер шрифта, независимо от того, насколько глубоко вы вставляете свои компоненты.
Ответ 3
Он отлично работает со следующими css
body {
font-size: 75% !important;
}
.ui-widget,.ui-widget-header,.ui-widget-content,.ui-widget-header .ui-widget-header,.ui-widget-content .ui-widget-content,.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button
{
font-size: 100% !important;
}
Ответ 4
Это отлично работает.
.ui-g {
font-size: 13px;
}