我有一个简单的网络应用程序,我在一起。
由&大,默认grails main.css
适用于所有脚手架页面。
但是,我想压制它,并为着陆页使用不同的内联css。
如何配置grails不要在特定页面上链接main.css
?
html非常简单,并且不包含任何grails特定标记:
<!doctype html>
<html>
<head>
<meta name="layout" content="main" />
<title>My landing page</title>
<style type="text/css" media="screen">
body
{
background-color: #fff;
}
img {
display: block;
margin: auto;
}
</style>
</head>
<body>
<img alt="Welcome!"
src="${resource(dir:'images',file:'Landing.png') }">
</body>
</html>
此外 - main.css
纯粹超出惯例,或者是否有某些配置潜伏在我没有发现的地方? (我已经完成了搜索但无法在任何地方找到它。)
有人可以参考文档中谈论这些约定的地方吗?
答案 0 :(得分:3)
main.css
已包含在您的目标网页中,因为您已指定您的目标网页基于主要版面
<meta name="layout" content="main" />
此布局由grails-app/views/layouts/main.gsp
定义,并包含main.css
,很可能在页面的<head>
中带有这样的标记:
<link rel="stylesheet" href="${resource(dir: 'css', file: 'main.css')}" type="text/css">
如果删除:
<meta name="layout" content="main" />
您的目标网页将不再基于主要版面,因此不会包含其中定义的任何内容(例如main.css
)。
但是,为了防止包含main.css
而不是完全删除布局,通过在{{中包含自定义规则来覆盖要在布局页面上进行定制的CSS规则可能更简单一些。 1}}阻止着陆页的<style>
<head>
答案 1 :(得分:1)
看一下grails 2.0.x中的resources插件。您可以定义包含特定javascript和CSS文件的模块,这些文件将被压缩,针对Web进行优化。在您选择的页面中,您可以包含所需的模块。在您的情况下,您可以在main.gsp中添加这样的案例
<g:if test="${controllerName == "landing"}">
<link rel="stylesheet" href="${resource(dir: 'css', file: 'custom.css')}"/>
</g:if>
<g:else>
<link rel="stylesheet" href="${resource(dir: 'css', file: 'main.css')}"/>
</g:else>