【问题标题】:Prevent PrimeFaces from rendering style classes防止 PrimeFaces 渲染样式类
【发布时间】:2018-03-20 17:56:02
【问题描述】:

我正在尝试在我现有的应用程序中使用一些 Primefaces 功能。我现在不想让 Primefaces 弄乱我现有的 CSS,所以我尝试在我的 web.xml 中使用 disable the theme

<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>none</param-value>
</context-param>

但是,PrimeFaces 仍然在我的元素中呈现各种 ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left,这会影响我当前的 CSS 样式。我不认为将我的 CSS 移动到正文不是一个好的或优雅的解决方案,我也不认为使用 !important 是一个好的解决方案。如何阻止 PrimeFaces 插入各种不需要的样式?

【问题讨论】:

  • 第二个答案你试过了吗?
  • 覆盖 CSS 文件不会阻止 JSF 标记我的元素
  • 标记?你的意思是增加类?是什么让您认为禁用主题会阻止这种情况发生?
  • 它们是 PrimeFaces 元素,而不是你的......所以添加 ui-button 'tags' 是他们的'权利'。许多组件需要结构化的 css 才能完成工作或根据您的喜好轻松设置样式。 @JasperdeVries 所指的第二个答案可能会做你有效需要的事情(在很大程度上),但它也可能需要你做更多的工作。你读过stackoverflow.com/questions/8768317/…吗?
  • @Jasper de Vries 这就是为什么我像上面所说的那样“尝试”了,但显然它没有用。

标签: primefaces jsf-2


【解决方案1】:

你的问题起初有点令人困惑。您找到的解决方案只能用于防止主题化,这基本上归结为设置自定义样式表。这不会改变组件的呈现方式。正如您所注意到的,样式类无论如何都会被渲染。这不能被“阻止”(如关闭),但您可以 override the renderer 为您想要自定义的组件。但是要小心.. JavaScript 功能可能需要一些样式类!

另一种解决方案可能是切换到 JSF 核心 HTML 或不同的组件库,例如 BootsFacesButterFaces。这取决于您需要的组件,并且在使用不同的库时您可能会遇到同样的问题。

或者,您可以坚持使用 PrimeFaces 并学习如何使用 override the default PrimeFaces CSS with custom styles。这可以在正文中不使用任何 CSS 或使用 !important 来完成。只需创建具有更具体规则的样式表即可。

【讨论】:

  • 如果您从使用基于 SASS 的商业主题之一开始,调整会更加容易...颜色明智、边框明智、填充明智...以及 6.2 附带的 Harmony 主题顺便说一句,它也是基于 SASS 的。
  • 我不久前开始研究一个主题。它还没有完成,但它可能会给你一个想法/起点github.com/jepsar/Jepsar-PrimeFaces-Theme/blob/master/src/main/…
  • 基于此,我认为我正在寻找的答案是:没有办法删除它们。要么覆盖它们,要么避免在你的 CSS 和你使用的任何其他 CSS 中使用相同的名称。
猜你喜欢
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 2021-06-20
  • 2017-08-30
  • 2016-10-26
  • 2014-01-31
  • 2012-07-04
相关资源
最近更新 更多