我正在使用 JSF 和 Richfaces 制作网站,但我需要在下拉菜单标签上做一些背景图片。我看到您可以通过执行来使用样式属性
.rich-ddmenu-label {
background-image: url("images/the_image.gif");
}
但这似乎并没有尝试将图像放在任何地方。
我可以使用图像
<h:graphicImage/>
我不知道如何将文本放在上面。
我究竟做错了什么?如何在某些文本后面插入背景图像?
我刚刚遇到了与JSF 2.0相同的问题。我不得不使用 CSS 并且具有相对路径的解决方案对我也不起作用(就像 Choghere 发布的那样)。
在我的书中,我读到当您将 Facelets 用作 VDL(视图声明语言)时,即使在纯 HTML 页面中也可以使用表达式。所以我想到了将 EL 直接放在我的 CSS 中。注意:我不必更改文件名或任何东西。
这就是我所做的。但首先我的文件结构:
现在来了 CSS:
.someclass {
background-image:url("#{resource['images:logo.png']}");
}
在这种情况下,资源是JSF 2的隐式对象,图像是 JSF 应该查看的库(jsf 期望资源下的所有库/文件,至少是默认的 ResourceHandler),然后是资源的名称。
对于更深的结构,它将是:
#{resource['images/folder:logo.png']}
希望有帮助;)
假设有问题的元素被class="rich-ddmenu-label"
应用到它,问题很可能是背景图像的路径。
路径相对于 CSS 所在的位置。如果它在一个外部文件中,它应该是相对的,例如:
/css/styles.css
/images/the_image.gif
CSS应该是:
background-image: url("../images/the_image.gif");
如果 CSS 在 HTML 页面上是内联的,它将相对于当前路径。因此,如果页面位于 at http://server/path/to/page
,它将http://server/path/to/page/images/the_image.gif
在您可能想要的位置查找图像http://server/images/the_image.gif
。
如果这不能回答它,请发布生成的 HTML。
您是否按照Richfaces 演示站点上的示例进行操作?IE。使用构面并将图像和文本放置在封闭元素内(例如跨度或 div)
<rich:dropDownMenu>
<f:facet name="label">
<h:panelGroup>
<h:graphicImage value="/images/icons/copy.gif" styleClass="pic"/>
<h:outputText value="File"/>
</h:panelGroup>
</f:facet>
<rich:menuItem submitMode="ajax" value="New"
action="#{ddmenu.doNew}" icon="/images/icons/create_doc.gif">
</rich:menuItem>
...
</rich:dropDownMenu>
我的文件夹结构如下:
网页->资源->css //css页面
网页->资源->图片//图像
网页//xhtml 文件
试试下面的:
background-image :url("../pics/logo.gif");
.. 将您向上移动一个文件夹级别 /pics 将您移动到 pics 目录 /logo.gif 为您提供文件
希望这可以帮助。
我得到了这个解决方案:用这个内容创建一个新的 .css 文件
body {
background-image: url(../resources/images/Fondo.GIF);
}
这将以与 html 相同的方式加载文件。这样,您将能够在正文级别(在整个页面上)加载背景文件。之后,您可以在 jsf 文件中使用以下指令加载 css 文件:
<h:head>
<h:outputStylesheet name="ps-pagolinea.css" library="css" />
<h:outputScript name="corrigePoliza.js" library="scripts"/>
</h:head>