stylus使用文档总结:内置方法+参数+条件+迭代+导入+继承
一、内置方法
返回各种颜色的比重(如red(color)等)
颜色函数是CSS预处里器中内置的颜色函数功能,这些功能可以对颜色值进行处理,例如颜色的变亮、变暗、渐变颜色等处理十分的方便。
lighten(color, %); /* 返回的颜色在'color'基础上变亮10% */
darken(color, %); /* 返回的颜色在'color'基础上变暗10% */
saturate(color, %); /* 返回的颜色在'color'基础上饱和度增加10% */
desaturate(color, %); /* 返回的颜色在'color'基础上饱和度降低10% */
keys(pairs)/values(pairs):返回给定pairs
中的键/值
pairs = (one ) (two ) (three )
keys(pairs)
// => one two three
values(pairs)
// => 1 2 3
typeof(node):字符串形式返回node
类型
typeof()
// => 'unit'
typeof(#fff)
// => 'rgba'
反正很多,不细说,用到的时候再查
二、其余参数(Rest Params)
1、其余参数:Stylus支持name...
形式的其余参数(rest风格参数)。这些参数可以消化传递给混写或函数的参数们。这在处理浏览器私有属性,如-moz
或-webkit
的时候很管用。下面这个例子中,所有的参数们(1px, 2px, ...)都被一个args
参数给简单消化
box-shadow(args...)
-webkit-box-shadow args
-moz-box-shadow args
box-shadow args #login
box-shadow 1px 2px 5px #eee
2、参数们:arguments
变量可以实现表达式的精确传递,包括逗号等等。这可以弥补args...
参数的一些不足,见下面的例子:
box-shadow(args...)
-webkit-box-shadow args
-moz-box-shadow args
box-shadow args
#login
box-shadow #ddd 1px 1px, #eee 2px 2px
//结果并非称心如意:
#login {
-webkit-box-shadow: #ddd 1px 1px #eee 2px 2px;
-moz-box-shadow: #ddd 1px 1px #eee 2px 2px;
box-shadow: #ddd 1px 1px #eee 2px 2px;
}
//逗号给忽略了。我们现在使用arguments重新定义这个混合书写。
box-shadow()
-webkit-box-shadow arguments
-moz-box-shadow arguments
box-shadow arguments
body
box-shadow #ddd 1px 1px, #eee 2px 2px
//于是,一下子雨过天晴了:
body {
-webkit-box-shadow: #ddd 1px 1px, #eee 2px 2px;
-moz-box-shadow: #ddd 1px 1px, #eee 2px 2px;
box-shadow: #ddd 1px 1px, #eee 2px 2px;
}
三、注释
单行和多行注释跟js一样
多行缓冲注释:跟多行注释类似,不同之处在于开始的时候,这里是/*!
,这个相当于告诉Stylus压缩的时候这段无视直接输出。
/*!
* 给定数值合体
*/
add(a, b)
a + b
四、条件
if / else if / else,没什么好说的
除非(unless):熟悉Ruby程序语言的用户应该都知道unless
条件,其基本上与if
相反,本质上是(!(expr))
。
后缀条件:Stylus支持后缀条件,这就意味着if
和unless
可以当作操作符;当右边表达式为真的时候执行左边的操作对象。
五、迭代(Iteration)
Stylus允许你通过for/in
对表达式进行迭代形式如下:for <val-name> [, <key-name>] in <expression>
body
fonts = Impact Arial sans-serif
for font, i in fonts
foo i font
//生成为:
body {
foo: Impact;
foo: Arial;
foo: sans-serif;
}
函数(Functions):Stylus函数同样可以包含for循环。下面就是简单使用示例:
//求和:
sum(nums)
sum =
for n in nums
sum += n
sum( )// => 6 //连接:
join(delim, args)
buf = ''
for arg, index in args
if index
buf += delim + arg
else
buf += arg join(', ', foo bar baz)
// => "foo, bar, baz"
后缀(Postfix):就跟if
/unless
可以利用后面语句一样,for
也可以。
sum(nums)
sum =
sum += n for n in nums join(delim, args)
buf = ''
buf += i ? delim + arg : arg for arg, i in args
六、导入(@import)
在CSS中,并不喜欢用@import来导入样式,因为这样的做法会增加HTTP的请求。但是在CSS预处理器中的导入(@import)规则和CSS的有所不同,它只是在语义上导入不同的文件,但最终结果是生成一个CSS文件。如果你是通过“@import 'file.css'”导入“file.css”样式文件,那效果跟普通CSS导入样式文件一样。
注意:导入文件中定义了变量、混合等信息也将会被引入到主样式文件中,因此需要避免他们的相互冲突。
/* file.{type} */
body {
background: #EEE;
} @import "reset.css";
@import "file.{type}";
p {
background: #0982C1;
}
//转译后
@import "reset.css";
body {
background: #EEE;
}
p {
background: #0982C1;
}
1、导入:Stylus支持字面@import CSS,也支持其他Stylus样式的动态导入。
2、字面CSS:任何.css
扩展的文件名将作为字面量。例如:
@import "reset.css"
//渲染如下:
@import "reset.css"
3、Stylus导入
当使用@import没有.css
扩展,会被认为是Stylus片段(如:@import "mixins/border-radius"
)。
@import工作原理为:遍历目录队列,并检查任意目录中是否有该文件(类似node的require.paths
)。该队列默认为单一路径,从filename
选项的dirname
衍生而来。 因此,如果你的文件名是/tmp/testing/stylus/main.styl
,导入将显现为/tmp/testing/stylus/
。
@import也支持索引形式。这意味着当你@import blueprint
, 则会理解成blueprint.styl
或blueprint/index.styl
。对于库而言,这很有用,既可以展示所有特征与功能,同时又能导入特征子集。
4、js导入api:
//下面语句:
@import 'mixins/vendor'
//等同于:
.import('mixins/vendor')
七、继承(@extend)
1、继承:Stylus的@extend指令受SASS实现的启发,基本一致,除了些轻微差异。此功能大大简化了继承其他语义规则集的语义规则集的维护。
2、混合书写下的“继承”:尽管你可以使用混写实现类似效果,但会导致重复的CSS。 典型的模式是定义如下的几个类名,然后归结到一个元素中,例如"warning message",该技术实现是没什么问题,但是维护就比较麻烦了。为了应对这个问题,CSS预处理器可以从一个选择继承另一个选择器下的所有样式。
message,
.warning {
padding: 10px;
border: 1px solid #eee;
}
.warning {
color: #E2E21E;
}
3、使用__@extend__:使用__@extend__
得到同样的输出,只要把对应的选择器传给@extend
即可。然后.warning
选择器就会继承已经存在的.message
规则。
.message {
padding: 10px;
border: 1px solid #eee;
}
.warning {
@extend .message;
color: #E2E21E;
}
这儿是个更复杂的例子,演示了__@extend__
如何级联。
red = #E33E1E
yellow = #E2E21E .message
padding: 10px
font: 14px Helvetica
border: 1px solid #eee
.warning
@extends .message
border-color: yellow
background: yellow + %
.error
@extends .message
border-color: red
background: red + %
.fatal
@extends .error
font-weight: bold
color: red
4、Stylus与SASS不同之处在于SASS不允许__@extend__
嵌套选择器。
form
button
padding: 10px a.button
@extend form button
Syntax error: Can't extend form button: can't extend nested selectors
// 解析错误: 无法继承自 button: 不能继承嵌套选择器
on line of standard input
Use --trace for backtrace.
Stylus中,只要选择器匹配,就可以生效:
form
input[type=text]
padding: 5px
border: 1px solid #eee
color: #ddd
textarea
@extends form input[type=text]
padding: 10px
//解析
form input[type=text],
form textarea {
padding: 5px;
border: 1px solid #eee;
color: #ddd;
}
textarea {
padding: 10px;
}
stylus使用文档总结:内置方法+参数+条件+迭代+导入+继承的更多相关文章
- JavaScript基础:BOM的常见内置方法和内置对象
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. BOM的介绍 JavaScript的组成 JavaScript基础分为三 ...
- python-day4装饰器、生成器、迭代器、内置方法、序列化、软件目录
@生成器generator a=(i*2 for i in range(10)) a.__next__()#等同于next(a),基本都不用,多用for循环a.send(m)#将m传为yield的值 ...
- Python之路(第二十六篇) 面向对象进阶:内置方法
一.__getattribute__ object.__getattribute__(self, name) 无条件被调用,通过实例访问属性.如果class中定义了__getattr__(),则__g ...
- NO.4:自学python之路------内置方法、装饰器、迭代器
引言 是时候开始新的Python学习了,最近要考英语,可能不会周更,但是尽量吧. 正文 内置方法 Python提供给了使用者很多内置方法,可以便于编程使用.这里就来挑选其中大部分的内置方法进行解释其用 ...
- python基础之反射内置方法元类
补充内置函数 isinstance(obj,Foo) # 判断obj是不是foo的实例 issubclass() # 判断一个类是不是另一个类的子类 反射 什么是反射? 通过字符串来操作 ...
- python第四周:装饰器、迭代器、内置方法、数据序列化
1.装饰器 定义:本质是一个函数,(装饰其他函数)就是为其他函数添加附加功能 原则:不能修改被装饰函数的源代码,不能修改被装饰函数的调用方式 实现装饰器的知识储备: 函数即“变量”.每当定义一个函数时 ...
- 浏览器(BOM)对象的一些内置方法总结
浏览器(BOM)对象的一些内置方法总结 一.总结 1.bom就是浏览器那端执行的代码,dom就是服务器那端操作html的代码 2.记好bom的几个对象,那就很好理解很多代码了,也很好写很多代码了 二. ...
- 4月17日 python学习总结 反射、object内置方法、元类
一.反射 下述四个函数是专门用来操作类与对象属性的,如何操作? 通过字符串来操作类与对象的属性,这种操作称为反射 class People: country="China" def ...
- 产品需求文档(PRD)的写作方法之笔记一
1.写前准备(思维导图): http://www.woshipm.com/?p=80070 1.在写之前,请先很区分清楚什么是MRD文档(市场需求文档),BRD文档(商业需求文档),什么是PRD文档( ...
随机推荐
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记5——Direct3D中的顶点缓存和索引缓存
第12章 Direct3D绘制基础 1. 顶点缓存 计算机所描绘的3D图形是通过多边形网格来构成的,网网格勾勒出轮廓,然后在网格轮廓的表面上贴上相应的图片,这样就构成了一个3D模型.三角形网格是构建物 ...
- 深入解析当下大热的前后端分离组件django-rest_framework系列二
视图三部曲 一部曲 · 使用混合(mixins) 上一节的视图部分: from rest_framework.views import APIView from rest_framework.resp ...
- Go语言中的匿名函数和闭包的样子
1). 函数也是值,可以像普通值那样,传来传去: 2). 匿名函数: 3). 函数的类型,类似于:func(float64,float64) float64 ===================== ...
- PHP读取文件夹的文件列表
/** * getDir()取文件夹列表,getFile()取对应文件夹下面的文件列表,二者的区别在于判断有没有“.”后缀的文件,其他都一样 */ //获取文件目录列表,该方法返回数组 functio ...
- CentOS7.5安装notepadqq
这个notepadqq就是linux版本的notepad了 1.添加yum源 sudo wget -O /etc/yum.repos.d/sea-devel.repo http://sea.fedor ...
- 8种json数据查询方式
你有没有对“在复杂的JSON数据结构中查找匹配内容”而烦恼.这里有8种不同的方式可以做到: JsonSQL JsonSQL实现了使用SQL select语句在json数据结构中查询的功能. 例子: ? ...
- POJ 1655.Balancing Act-树的重心(DFS) 模板(vector存图)
Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17497 Accepted: 7398 De ...
- springMVC中Unknown return value type: java.lang.Integer(解决)
controller层返回值类型为Integer,然而报 Unknown return value type: java.lang.Integer 这个错误,500错误 解决办法:在此方法上写上注解@ ...
- CRT【p3868】[TJOI2009]猜数字
Description 现有两组数字,每组k个,第一组中的数字分别为:a1,a2,...,ak表示,第二组中的数字分别用b1,b2,...,bk表示.其中第二组中的数字是两两互素的.求最小的非负整数n ...
- Spring事务传播性
事务是逻辑处理原子性的保证手段,通过使用事务控制,可以极大的避免出现逻辑处理失败导致的脏数据等问题.事务最重要的两个特性,是事务的传播级别和数据隔离级别.传播级别定义的是事务的控制范围,事务隔离级别定 ...