代码之家  ›  专栏  ›  技术社区  ›  Simon

如何在Grails中引用CSS中的图像资源?

  •  12
  • Simon  · 技术社区  · 16 年前

    我想在我的主要样式表中引用一个grails应用程序的图片,但我不能让它工作。我的图像生活在我的Grails应用程序的标准位置…

    project\web-app\images\outbound-blue.png
    

    在样式表中,我想将它用作类的背景图像…

    .messageimg {
        height:17px;
        width:16px;
        background-image:url(images/outbound-blue.png);
        background-repeat:no-repeat;
    }
    

    因为某种原因这不起作用。我的样式表也在正常位置,即

    project\web-app\css\main.css
    

    当我在浏览器中加载页面时,会得到一个丢失的图像标记。我已经检查过,我没有名字等拼写错误。我也尝试过在URL中摆弄虚拟路径,但是我不知道我需要在那里放些什么才能在Grails中工作。

    我不想使用gsp并在代码中插入img标记,因为我想通过样式控制图像。

    那么,我做错了什么?

    5 回复  |  直到 9 年前
        1
  •  12
  •   magi182 kurumkan    9 年前

    尝试在URI的开头添加“../”。例如:

    ../images/outbound-blue.png
    

    URI开头的“..”告诉浏览器向上一级到父目录,然后在 images 目录。目前您已将其设置为查找名为 图像 在包含样式表的目录中。

        2
  •  17
  •   Gene Golovchinsky    14 年前

    指定图像位置的更可移植的方法是使用resource()函数:

    .messageimg {
        height:17px;
        width:16px;
        background-image:url('${resource(dir: "images", file: "outbound-blue.png")}');
        background-repeat:no-repeat;
    }
    
        3
  •  4
  •   stenix Khalil    13 年前

    不过要注意。使用 $resource{... 在引用的.css文件中不起作用。您需要添加 style 元素。

        4
  •  1
  •   Colin Harrington    16 年前

    通常,您会将样式表中的资源作为相对URL引用。图像的URL应该相对于CSS文件的位置。所以 ../images/outbound-blue.png /appName/css/main.css 将引用 /appName/images/outbound-blue.png

    如果仍有问题,可以使用Firebug之类的工具来检查页面并验证样式中的每个步骤,从而调试此问题。
    确认:

    • 您认为正在设计的项目正在选择样式。
    • 您正在引用的图像既可以手动访问,也可以通过Firebug访问。
    • 您正在加载的CSS文件没有缓存,而是由浏览器刷新。
        5
  •  0
  •   Nikhil Sharma    10 年前

    所以问题似乎是浏览器正在调查

    http://localhost:8080/<app-name>/assets/images/<background-image-name>

    这似乎是正确的,但是如果检查页面上的其他图像,它们将从路径呈现

    http://localhost:8080/<app-name>/assets/background-image-name 
    

    所以,只要排除路径名中的图像,就可以解决这个问题。然而,这只是一个工作,我相信这将有一个更好的解释和解决方案。干杯。