分享 stylus 语法学习笔记
定义变量
1 | $var_name = value |
is defined 用来判断一个变量是否已经被赋值。
1 | foo is defined |
或者采用内置函数 lookup(name):
1 | name = #80e2e9 |
for 循环
1 | for $i in (0 .. 24) |
导入
@import “文件路径”
@import “文件路径/*“导入目录下所有 styl 文件
@require “文件路径”
@require “文件路径/*“导入目录下所有 styl 文件
插值
{}使用该花括号进行插值
Stylus 支持使用{}字符包围表达式进行插值,然后表达式成为标识符的一部分。
例如:
1 | -webkit-{'border' + '-radius'}评估为-webkit-border-radius。 |
选择器插值
1 | table |
会产生如下 css
1 | table tr:nth-child(1) { |
您还可以通过构建一个字符串并将它们插入到位来将多个选择器放在一个变量中:
1 | mySelectors = '#foo,#bar,.baz' |
产生如下
1 | #foo, |
mixin
mixin 和函数都以相同的方式定义,但它们以不同的方式应用。
例如,我们有一个 border-radius(n)下面定义的函数,它作为 mixin 调用(即,作为语句调用,而不是表达式的一部分)。
在 border-radius()选择器中调用时,属性将展开并复制到选择器中。
1 | border-radius(n) |
编译后
1 | form input[type="button"] { |
使用 mixins 时,您可以完全省略括号,提供出色的透明供应商属性支持!
1 | border-radius(n) |
请注意,border-radius 我们的 mixin 中的内容被视为属性,而不是递归函数调用。
为了更进一步,我们可以利用自动 arguments 局部变量,包含传递的表达式,允许传递多个值:
arguments 和 js 函数的 arguments 差不多都是获取函数实际参数
length(arguments) 获取参数个数
1 | border-radius() |
现在我们可以传递像 border-radius 1px 2px / 3px 4px!
选择器
^[N],选择嵌套选择器的第个
^[N]表示部分引用,其中 N 是数字(-1, 0, 1 等等)。
^[0]引用嵌套选择器中的第一层,^[1]则引用第一层和第二层。
1 | .foo |
注:第一层和第二层是一个完整的选择器.foo__bar,但^[0]部分引用第一层,即.foo。
编译后:
1 | .foo__bar { |
若 N 为负数,则从尾部计算。如^[-1]表示去除最后一层后剩下部分的引用。
1 | .foo |
编译后:
1 | .foo__bar_baz { |
块混合 Block mixins
我们使用+前缀可以给混合(mixins)传递块(blocks):
1 | foo() |
内置方法
文档