Drupal 中的 SASS





5.00/5 (5投票s)
如何在 Drupal 中使用 SASS?
在这篇文章中,我想分享我关于如何在 Drupal 7 主题中创建 Sass CSS 的知识。
什么是 SASS?
SASS 是由 Hampton Catlin 创建的 Syntactically Awesome Stylesheets(语法上很棒的样式表)。
它是一种被解释成层叠样式表(CSS)的脚本语言。
SASS
它是开源的,用 Ruby 编写,包括使用名为 libSass 的 C 库的 PHP 和名为 Jsass 的 Java。
SassScript 提供了以下解决方案:变量、嵌套、混合(mixin)和选择器继承。
SASS 看起来类似于 CSS,但没有分号。
安装 SASS
您必须先安装 RubyGems。
安装 SASS
sudo gem install sass
移动您现有的样式表到 SASS
因为每个有效的 CSS 文件也是一个有效的 SCSS 文件,所以您只需要重命名文件,将其放在正确的位置,然后运行。您可以开始在其中使用 SASS 功能。让我们看看如何为您的主题的 css/style.css 添加 SASS 支持。通过我们放置在 config.rb 中的配置,compass 将解析 sass/FILE.scss 中的每个文件,并输出相应的 css/FILE.css 文件。
- 在您的主题文件夹内创建一个名为 sass 的新目录。
- 将 css/style.css 移动到新的 sass/ 文件夹
- 将文件从 style.css 重命名为 style.sass
在您的 Drupal 主题文件夹中,创建一个名为 "config.rb" 的新文件。
现在,我们将把我们的主题文件夹设置为以下内容
/css/ CSS 文件将被生成到这里。
/sass/ 源 SASS 文件将放置在此处。
/config.rb Compass 将在我们的主题文件夹中使用此配置文件运行。
如果您使用的是 **Windows 10 v1607(截至 2017 年 3 月的最新更新)**,则需要按照以下步骤操作
- 右键单击开始菜单并选择 **系统**
- 单击 **高级系统设置** (左侧栏)
- 单击 **环境变量** 按钮
- 在上部分,选择 **Path**(或 **PATH**),然后单击 **编辑** 按钮
- 在打开的窗口中,单击 **新建** 按钮
- 在选定的输入区域,键入(例如)C:\Ruby22-x64\bin\ (这必须是 Ruby 的 bin 文件夹路径)
- 单击 **确定** 两次
- 重新打开 **命令提示符**,现在 **sass** 已准备好监视和编译您的 sass 文件。
编译 SASS
SASS 解释器将 SassScript 翻译成 CSS。或者,Sass 可以监视 .sass 或 .scss 文件并将其翻译成输出的 .css 文件。为此,您需要导航到您的 theme 文件夹。
对于 D7
cd sites/all/themes/myTheme/
对于 D8
cd /themes/myTheme/
要查看您的更改,您需要运行以下命令
sass--watch sass:css
在这里,您的第一个参数选项是包含我们 .scss 文件的文件夹名称,此处为 sass。
第二个参数选项是我们 .scss 文件将被编译成常规 CSS 的文件夹名称。
在编写普通 CSS 时,我们会发现重复的 CSS。
.content p{
font-size:10px;
color:#FFF;
margin-top:5px;
}
.content h2{
font-size:14px;
color:#FFF;
}
但在 SASS 中
.content{
p{
font-size:10px;
color:#FFF;
margin-top:5px;
}
h2{
font-size:14px;
color:#FFF;
}
}
SASS 变量
您可以在 SASS 中使用变量。
例如
$yellow:#FFCB05;
.content
a{
color:$yellow;
}
这将编译为
.content
a{
color:#FFCB05;
}
这在 Drupal 主题中是一个非常有用的功能,因为标准的颜色格式在整个 CSS 中被重复使用。您可以在 SASS 中定义一次,然后将其应用于多个选择器。如果您想修改此颜色,只需在一个地方更改即可,它将在所有地方更新。
您还可以使用 #{}
在选择器和属性名中使用 SASS 变量
$name: bar;
$attr: border;
p.#{$name} {
#{$attr}-color: black;
}
它将被编译为
p.bar {
border-color: black;
}
SASS 导入
另一个有用的功能是导入其他 SASS 文件,而无需在主文件中渲染它们的输出,这些文件被称为基础部分(base partials)。
@import "mixin";
您可以将变量导入到您的主布局 SASS 文件中。如果您想阻止文件的输出在您的主 CSS 文件中被渲染,那么您可以使用下划线。
@import _mixinn.scss
SASS 混合(Mixins)
SASS 中另一个非常有用的功能是重用大段代码,称为“混合(mixins)”。
@mixin radius($radius){
webkit-border-radius : $radius;
-moz-border-radius : $radius;
-o-border-radius : $radius;
border-radius : $radius;
}
然后,要使用该混合,我们只需执行以下操作
.content {
.content_box{
@include
radius(10px);
}
}
它将被编译为
.content {
.content_box {
webkit-border-radius : 10px;
-moz-border-radius : 10px;
-o-border-radius : 10px;
border-radius : 10px;
}
}
SASS 部分(Partials)
部分(Partial)只不过是带有前导下划线的文件名,如 _layout.scss。前导下划线表示该文件只是一个部分文件,不应将其生成为 CSS 文件。部分 SASS 文件的主要目的是以简单的方式将您的 CSS 模块化。它与 @import
指令一起使用。它包含您可以包含在其他 SASS 文件中的小 CSS 片段。
SASS 扩展/继承
这是 SASS 最有用的功能之一。使用 @extend
,您可以将一组 CSS 属性从一个选择器共享到另一个选择器。这有助于 CSS 类别的可重用性。
.content a {
font-family: 'Gotham Light' , 'Open Sans', 'Helvetica Neue', Arial, Helvetica, sans-serif;
text-decoration : none;
color : white;
@include transition;
&:hover ,&:link , &:visited {
@extend a;
}
}
在这里,使用和ampersand(&
)字符来引用父选择器。
SASS 媒体查询(Media)
SASS 中的 @media
指令与纯 CSS 的行为方式完全相同,但具有一项额外功能:它们可以嵌套在 CSS 规则中。如果 @media
指令出现在 CSS 规则内,它将被提升到样式表的顶层,并将路径上的所有选择器都包含在该规则内。这使得添加特定于媒体的样式变得容易,而无需重复选择器或破坏样式表的流程。
.sidebar {
width: 300px;
@media screen and (orientation: landscape) {
width: 500px;
}
}
它应该被编译为
.sidebar {
width: 300px; }
@media screen and (orientation: landscape) {
.sidebar {
width: 500px; } }
可以使用“and
”运算符进行嵌套。它还可以包含 SASS 表达式(包括变量、函数和运算符)来代替功能名称和功能值。
运算符
SASS 具有一些标准的数学运算符,如 +、-、*、/ 和 %。您可以进行一些数学运算。
.container {
width: 100%;
}
.grid-1 {
float: left;
width: 450px / 820px * 100%;
}
SASS 中的注释
您可以使用基本的 CSS 注释,如 /* */
和 //
。多行注释 /* */
会保存在 CSS 输出中,而单行 //
注释则会被移除。
/**
**This Page Consists Css information for the basic layout of the theme and Global Settings
======================================================
TABLE OF CONTENTS
----------------------------------------
*1 - General Page layout scss
*2 - Css Used to override default css
=======================================================
***/
@font-face {
font-family: 'Open Sans light';
src: url('../fonts/opensans-light.woff') format('woff');
}
// Comment for body background
body {
background : url(../images/body-bg.jpg) ;
}
它将被编译为
/**
**This Page Consists Css information for the basic layout of the theme and Global Settings
======================================================
TABLE OF CONTENTS
----------------------------------------
*1 - General Page layout scss
*2 - Css Used to override default css
=======================================================
***/
@font-face {
font-family: 'Open Sans light';
src: url('../fonts/opensans-light.woff') format('woff');
}
body {
background : url(../images/body-bg.jpg) ;
}
缓存 SASS 文件
默认情况下,SASS 会缓存编译后的模板和部分。这有助于加快大型 SASS 文件集合的重新编译速度。SASS 将缓存的模板放在 .sass-cache 目录中。在 Drupal 中,它们会放在 /themes/myTheme/sass-cache。
SASS 中的数据类型
SASS 文件支持六种主要数据类型
- 数字(例如:1.2、10、12px)
- 文本字符串,带引号和不带引号(例如:“foo”、“bar”、baz)
- 颜色(例如:red、#ff0000、rgba(255, 0,0))
- 布尔值(例如:true、false)
- 空值(例如:null)
- 值列表,用空格或逗号分隔(例如:1.5em 1em 0 2em、Times New Roman、Arial、 sans-serif)
- 将一个值映射到另一个值(例如:(key1: value1,key2: value2))
SASS 还支持其他类型的 CSS 属性值,如 Unicode 范围和 !important 声明。它们被视为与未加引号的字符串相同。
SASS 中的控制指令和表达式
SASS 还支持控制指令和表达式。
有关更多信息,您可以参考此链接:https://sass-lang.cn/documentation/。
您还可以使用 SASS CSS 进行响应式主题设计。
集成 SASS 的其他方式
还有另一种将 SASS 与您的 Drupal 项目集成的方式。为此,您需要以下模块
- Prepro (http://www.drupal.org/project/prepro)
- Sassy (http://drupal.org/project/sassy)
和
- Libraries (http://www.drupal.org/project/libraries)
只需安装并启用模块,然后将 PHPSass
库添加到 sites/all/libraries。