Sass入门篇之基础语法(一)

About

本文是我在学习Sass的过程中记录的,对于不想看官方文档但是又急需使用Sass的人具有一定参考作用,但是如果读者想深入学习Sass,请参考Sass官方文档:https://www.sass.hk/docs/

一、在SCSS文件中使用变量

1. 声明变量

sass变量的声明和css属性的声明很像:

$bgcolor: red;

上面的代码的意思是给变量bgcolor赋值为red,这样我们在后面的SCSS语句中就可以使用这个变量,例如:

$bgcolor: red;

#app {
    background: $bgcolor;
}

上面的代码编译后:

#app {
    background: red;
}

当然,为了方便,我们也可以这么声明:

$border: 1px solid red;

.content {
    border: $border; /*等价于 border: 1px solid red */
}

2. 使用变量

如果我们需要在每个页面的SCSS文件中使用这些变量该怎么办呢?这时候我们可以在当前SCSS文件中引入其他的SCSS文件。比如,我们每个页面都需要背景色,和一个用来调试的边框,我们可以把这些变量写在一个SCSS文件中,然后在需要使用的页面中引入该SCSS文件,代码如下:

/* styles/styles.scss */
$bgcolor: #e5e5e5;
$border: 1px solid red;

/* src/pages/home.vue */
<style lang="scss" scoped>
  @import 'styles/styles.scss'
  #app {
      background: $bgcolor;
      .content {
          border: $border;
      }
  }

这里有一个效果图(和上面的代码无关,是我测试用的):


导入scss.gif

3. 变量中使用下划线还是中划线

sass并不想强迫任何人一定使用中划线或下划线,所以这两种用法相互兼容。用中划线声明的变量可以使用下划线的方式引用,反之亦然。

二、嵌套规则

sass风格通过代码缩进来确定选择器的父子关系,并且不需要使用分号,例如:

#app
  color: red
  .content
    border: 1px solid blue

scss风格则是通过大括号的嵌套来确定选择器的父子关系,并且需要使用分号,比较接近CSS的写法,所以使用范围更广。例如:

#app {
    color: red;
    .content {
        border: 1px solid blue;
    }
}

1. 父选择器的标识符 &

当我们使用例如:hover等伪类选择器时,比如:

article a {
  color: blue;
  :hover { color: red }
}

sass会编译成article a :hover, 然而我们期望的是article a:hover,所以此时我们需要用到 &

article a {
  color: blue;
  &:hover { color: red }
}

2. 群组选择器的嵌套

sass的嵌套特性在这种场景下也非常有用。当sass解开一个群组选择器规则内嵌的规则时,它会把每一个内嵌选择器的规则都正确地解出来:

.container {
  h1, h2, h3 {margin-bottom: .8em}
}

编译为:

.container h1, .container h2, .container h3 { margin-bottom: .8em }

完全符合我们的期望

3. 子组合选择器和同层组合选择器:>、+和~;

上边这三个组合选择器必须和其他选择器配合使用,以指定浏览器仅选择某种特定上下文中的元素。

  • 子组合选择器>
article section { margin: 5px } /* 选择article里面所有的section */
article > section { border: 1px solid #ccc } /* 选择article里面紧跟着的第一个section */
  • 同层相邻组合选择器+
header + p { font-size: 1.1em } /* 选择header元素后紧跟的p元素 */
  • 同层全体组合选择器~
/* 选择所有跟在article后的同层article元素,不管它们之间隔了多少其他元素 */
article ~ article { border-top: 1px dashed #ccc } 

三、导入Sass文件

sass的@import规则是在生成css文件时就把相关文件导入进来。这意味着所有相关的样式被归纳到了同一个css文件中,而无需发起额外的下载请求。另外,所有在被导入文件中定义的变量和混合器均可在导入文件中使用。

使用sass的@import规则并不需要指明被导入文件的全名。你可以省略.sass或.scss文件后缀(见下图)。这样,在不修改样式表的前提下,你完全可以随意修改你或别人写的被导入的sass样式文件语法,在sass和scss语法之间随意切换。举例来说,@import"sidebar";这条命令将把sidebar.scss文件中所有样式添加到当前样式表中。(--摘自官方文档)


image.png

1. 直接导入

@import 'path'

2. 嵌套导入

/* styles/styles.scss */
aside {
  background: blue;
  color: white;
}

/* src/pages/home.vue */
#app {
    @import "styles/styles.scss"
}

编译为:

#app {
  aside {
    background: blue;
    color: white;
  }
}

3. 导入原生CSS

因为sass完全兼容css语法,所以只需要把我们需要导入的test.css的后缀改为test.scss,然后直接导入就行啦。

结束语

写了这么多好累,如果小伙伴看了觉得有帮助就点个赞吧,谢谢啦,以后会接着更新的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356