你好,我想在play应用程序中使用sass模块。我们已经在使用press缩小css,并使用#{press.stylesheet'path/to/mystylesheet.css'}在各个视图中包含css文件。我的问题是,我可以像使用press.stylesheet那样使用SASS在每页的基础上包含各个视图吗?
此外,如果我们能做到这一点,我假设我们不需要再为css文件按下,因为SASS可以自己进行缩小。
Sass是一种CSS元语言,所以它的输出是CSS文件。它不是为了在视图中动态插入css而构建的。
您可以使用sass部分将代码分隔成模块化文件,但随后将它们组合成一个css文件。通过在类下嵌套导入语句,您可以在分部中的每个选择器字符串前面加上每页唯一的类。
这将导致一个更大的css文件,但它只会被下载一次,并将被浏览器缓存以用于所有后续的页面请求。
以下是如何做到这一点…
带有嵌套Partials的Sass样式表
步骤1.创建一个包含所有共享默认样式的默认Sass文件。我们称之为screen.sass
。
步骤2.为每个页面创建部分:
_about.sass
_contact.sass
_home.sass
步骤3.在页面的body标签中动态添加一个唯一的类以识别它们:
about-page
contact-page
home-page
你的文件结构应该是这样的:
partials/
_about.sass
_contact.sass
_home.sass
screen.sass
步骤4.在screen.sass
文件中执行以下操作:
// Shared default styles
div
color: #fff
.home-page
@import partials/home
.about-page
@import partials/about
.contact-page
@import partials/contact
假设每个部分都包含更改div
元素默认颜色的规则,这将导致以下结果:
// Shared default styles
div {
color: #fff
}
.home-page div {
color: #00f
}
.about-page div {
color: #0ff
}
.contact-page div {
color: #f0f
}