SASS 例子

原文链接: SASS 例子

上一篇: SCSS/SASS 入门

下一篇: SASS 导入

变量嵌套引用。在声明变量时,变量值也可以引用其他变量。

$highlight-color: #F90;
$highlight-border: 1px solid $highlight-color;
.selected {
  border: $highlight-border;
}

//编译后

.selected {
  border: 1px solid #F90;
}

sass 的变量名可以与 css 中的属性名和选择器名称相同,包括中划线和下划线。这完全取决于个人的喜好,有些人喜欢使用中划线来分隔变量中的多个词(如 $highlight-color ),而有些人喜欢使用下划线(如 $highlight_color )。使用中划线的方式更为普遍,这也是 compass 和本文都用的方式。

不过, sass 并不想强迫任何人一定使用中划线或下划线,所以这两种用法相互兼容。用中划线声明的变量可以使用下划线的方式引用,反之亦然。这意味着即使 compass 选择用中划线的命名方式,这并不影响你在使用 compass 的样式中用下划线的命名方式进行引用:

$link-color: blue;
a {
  color: $link_color;
}

//编译后

a {
  color: blue;
}

在上例中, $link-color $link_color 其实指向的是同一个变量。实际上,在 sass 的大 多数地方,中划线命名的内容和下划线命名的内容是互通的,除了变量,也包括对混合器和Sass函数的命名。但是在 sass 中纯 css 部分不互通,比如类名、ID或属性名。

嵌套css规则

#content {
  article {
    h1 { color: #333 }
    p { margin-bottom: 1.4em }
  }
  aside { background-color: #EEE }
}
 /* 编译后 */
#content article h1 { color: #333 }
#content article p { margin-bottom: 1.4em }
#content aside { background-color: #EEE }

父选择器

一般情况下, sass 在解开一个嵌套规则时就会把父选择器( #content )通过一个空格连接到子选择器的前边( article aside )形成( #content article #content aside )。这种在CSS里边被称为后代选择器,因为它选择ID为 content 的元素内所有命中选择器 article aside 的元素。但在有些情况下你却不会希望 sass 使用这种后代选择器的方式生成这种连接。

最常见的一种情况是当你为链接之类的元素写 :hover 这种伪类时,你并不希望以后代选择器的方式连接。比如说,下面这种情况 sass 就无法正常工作:

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

这意味着 color: red 这条规则将会被应用到选择器 article a :hover article 元素内链接的所有子元素在被 hover 时都会变成红色。这是不正确的!你想把这条规则应用到超链接自身,而后代选择器的方式无法帮你实现。

解决之道为使用一个特殊的 sass 选择器,即父选择器。在使用嵌套规则时,父选择器能对于嵌套规则如何解开提供更好的控制。它就是一个简单的 & 符号,且可以放在任何一个选择器可出现的地方,比如 h1 放在哪,它就可以放在哪。

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

当包含父选择器标识符的嵌套规则被打开时,它不会像后代选择器那样进行拼接,而是 & 被父选择器直接替换:

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

群组选择器的嵌套

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

nav, aside {
  a {color: blue}
}

首先 sass nav a aside a 分别组合,然后将二者重新组合成一个群组选择器:

nav a, aside a {color: blue}

子组和同层选择器

你可以用同层相邻组合选择器 + 选择 header 元素后紧跟的 p 元素:

header + p { font-size: 1.1em }

你也可以用同层全体组合选择器 ~ ,选择所有跟在 article 后的同层 article 元素,不管它们之间隔了多少其他元素:

article ~ article { border-top: 1px dashed #ccc }
article {
  ~ article { border-top: 1px dashed #ccc }
  > section { background: #eee }
  dl > {
    dt { color: #333 }
    dd { color: #555 }
  }
  nav + & { margin-top: 0 }
}

sass 会如你所愿地将这些嵌套规则一一解开组合在一起:

article ~ article { border-top: 1px dashed #ccc }
article > footer { background: #eee }
article dl > dt { color: #333 }
article dl > dd { color: #555 }
nav + article { margin-top: 0 }

属性嵌套

嵌套属性的规则是这样的:把属性名从中划线-的地方断开,在根属性后边添加一个冒号:,紧跟一个 { } 块,把子属性部分写在这个 { } 块中。

nav {
  border: {
  style: solid;
  width: 1px;
  color: #ccc;
  }
}
nav {
  border-style: solid;
  border-width: 1px;
  border-color: #ccc;
}

nav {
  border: 1px solid #ccc {
  left: 0px;
  right: 0px;
  }
}
nav {
  border: 1px solid #ccc;
  border-left: 0px;
  border-right: 0px;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值