1

我在 Play Framework 2.0.3 中使用 CSS 时遇到了一些问题,想知道是否有人能发现我所犯的错误。

我有一个名为 siteview.scala.html 的视图,定义为:

@(name: String, records: List[Record])

@import helper._

@main(name) {
<html>
    <head>
    <link rel="stylesheet" type="text/css" href="@routes.Assets.at("stylesheets/main.css")">
    </head> 
    <h1>@name</h1>

    <ul>
          ...
    </ul>
</html>
}

我定义了一个 CSS 文件,如下main.less所示app/assets/stylesheets

h1 {color:#F6F9ED;}

@font-face {
    font-family: Gentium;
    src: url(fonts/GenBasR.ttf);
}
font-family: Gentium, Arial, Georgia;

为糟糕的风格道歉,我一直在改变以尝试让它做点什么!到资产的路线已保留为默认值。

Play 肯定会编译 CSS;如果有语法错误,就会被发现。但是,CSS 只是没有被加载到 HTML 中。

我尝试将 CSS 文件直接复制到公用文件夹中,但这给了我来自编译器的重复文件错误,这可能表明文件被放在正确的位置。

如何使用样式显示 HTML?我有一种感觉,我遗漏了一些非常明显的东西,但是对 Web 开发很陌生,所以我完全没有想法。

4

2 回答 2

6

我认为默认方法可能会使开发人员和 Play 都感到困惑,因此我建议将文件夹重命名app/assets/stylesheetsapp/assets/less(或其他名称,通常确保您在 中没有同名的文件夹/public)。多亏了这一点,您可以始终确定您使用的是 LESS 或静态资产,因为您可以看到路径的差异:

<!-- resolves to '/public/less/main.css' or (main.min.css) 
                                                   from app/assets/less folder -->
<link rel="stylesheet" type="text/css" 
                       href='@routes.Assets.at("less/main.min.css")'>

<!-- resolves to '/public/stylesheets/main.css' from 'public/stylesheets' folder -->
<link rel="stylesheet" type="text/css" 
                       href='@routes.Assets.at("stylesheets/main.css")'>

路线保持不变:

GET     /public/*file      controllers.Assets.at(path="/public", file)
于 2012-09-01T11:15:43.667 回答
1

@biesor 提供的解决方案对我不起作用。我在路由文件中添加了这一行:

GET     /stylesheets/*file          @controllers.Assets.at(path="/public/stylesheets", file)

然后我以这种方式将css文件包含在我的html页面中:

<link rel="stylesheet" media="screen" href="/stylesheets/core.css">

我认为这不是包含 css 文件的最佳方式,但我找不到其他解决方案。

于 2015-12-15T16:51:00.740 回答