【发布时间】:2019-12-09 19:30:57
【问题描述】:
我正在使用 Spring、JSP、PrimeFaces 6.2 和 bootstrap 3.37 开发一个 Eclipse 项目。
我有两个盒子,其中一个正确应用了 CSS,另一个没有。
我在 override.css 中有一些特定的 css 样式。它针对我正在使用的自定义类标签,然后更改背景颜色。
.mytag
{
background-color: rgb(255,204,204);
}
我的页面结构是这样的
- head - 加载子文件夹标题页
- body - 加载表单页面
- 页脚
<h:head>
<title>#{text['form.title']}</title>
<h:outputStylesheet library="css" name="form.css"/>
<h:outputScript library="js" name="form.js"/>
<h:outputStylesheet library="css" name="override.css" />
</h:head>
文件中唯一应用的 CSS 是“mytag”,但如下所示,更多的 CSS 正在自动插入。
标题 css 标签
ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all mytag
不是标题 css 标签
ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all mytag
当我使用适用于 IE 的 F12 开发人员工具(它是一个特定于 IE 的站点/应用程序)并查看样式时,我看到的样式从最高到最低是不起作用的
- form.css
span.if .ui-inputfield, div.if .ui-inputfield - components.css
.ui-widget-header .ui-inputfield, .ui-widget-content .ui-inputfield - theme.css
.ui-inputfield, .ui-widget-content .ui-inputfield, .ui-widget-header .ui-inputfield - (背景)主题.css
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default - theme.css
.ui-widget .ui-widget - form.css
.ui-widget, .ui-widget .ui-widget - (背景)主题.css
.ui-inputfield, .ui-widget-content .ui-inputfield, .ui-widget-header .ui-inputfield - theme.css
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default - theme.css
.ui-widget .ui-widget - theme.css
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button - theme.css
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button - components.css
.ui-inputfield - override.css
.mytag
这里是可行的样式列表
- forms.css
span.if .ui-inputfield, div.if .ui-inputfield - 组件.css
.ui-inputfield - override.css
.mytag
所以两个框都有相同的代码部分应用 CSS,所以顺序应该是相同的。然而,我发现“form.css”和“components.css”始终比我的覆盖具有更高的优先级,无论我如何在标题中对它们进行排序。由于“theme.css”正在自动应用,因此无法正常工作的盒子更糟糕。
注意:我原本以为是 bootstrap.theme.css,但另一个 question/answer 让我相信它实际上是 primefaces 主题。 <h:outputStylesheet library="primefaces-aristo" name="theme.css" />
我尝试过的解决方案
【问题讨论】:
-
你在找这个吗? stackoverflow.com/q/8768317
-
1:stackoverflow.com/questions/11988415/… 2:我不知道您发布的第一个和第二个链接与此有何关系,3:阅读stackoverflow.com/questions/8768317/…,4 学习CSS 的基础知识,您指的是什么因为“自动插入 css 标签”实际上是 css 类,它们不会自动“插入”它们由 PrimeFaces 呈现...
-
@BalusC 我尝试将 css 引用移动到正文中,就像它在您分享的答案中提到的那样,但这没有用。所以它关于 CSS 特异性的更多细节一定是我的问题。但这提出了一个问题,为什么另一个盒子的相同 css 标签有效?
-
是的,看来我不知道 CSS 规则。我只知道最后一个加载的被认为是最重要的(不包括内联)。我不知道多标签对某种权重很重要。我会认为我的新特定标签是最具体的,所以我猜我将不得不努力。使用 CSS 通常不是我的领域。
标签: css jsf primefaces