Stylus是一个CSS预处理框架,后缀为.styl 。
??冒号可选、分号可选、逗号可选、括号可选、变量、插值、混合书写、算术、强制类型转换、动态导入、条件、迭代、嵌套选择、父级参考、变量函数调用、词法作用域、内置函数、内部语言函数、压缩可选、图像内敛可选、可执行Stylus、健壮的错误报告、单行和多行注释、CSS字面量、字符转义、TextMate捆绑、…
??基于缩进,使用缩排和凹排代替花括号
body
color white
??与CSS一样,允许使用逗号为多个选择器同时定义属性
textarea,input
border 1px solid #eee
??长得像属性的选择器,尾部加个逗号
foo bar baz,
form input,
>a
border 1px solid #ccc
??字符&指向父选择器
textarea,input
color #ccc
&:hover
color #aaa (两个选择器同时改变)
??类似padding-n 的表达式可能被解释为减法运算,也可能解释为一元负号属性。为避免歧义,用括号包裹表达式:
pad(n)
padding (-n)
body
pad(5px)
??可以指定表达式为变量,然后在样式中贯穿使用
font-size=14px
body
font font-size Arial
??标识符(变量名,函数等),也可能包括$字符
$font-size=14px
??独特功能-不需要分配值给便来给你就可以定义引用属性,如:
$logo
position:absolute
top:50%
left:50%
width: w=150px
height: h=80px
margin-top: -(@height/2)
margin-left: -(@weight/2)
??属性“向上冒泡”,查找堆栈直到被发现,或者返回null(如果属性未找到)
vendor(prop,args)
-webkit-{prop} args
-moz-{prop} args
{prop} args
??插值也可以在选择器上起作用:
table
for row in 1 2 3 4 5
tr:nth-child(row)
height:10px * row
[]
! ~ + -
is defined
** * / %
+ -
... ..
<= >= <>
in
== is != is not isnt
is a
&& and || or
? :
= := ?= += -= *= /= %=
not
if unless
!0 true
!!0 false
!1 false
!!5px true
-5px -5px
--5px 5px
not true false
not not true true
??逻辑运算符not的优先级较低
not a or b => not(a or b)
??下标运算符 [] 允许通过索引获取表达式内部值。括号表达式可以充当元组(如(15px,15px))
范围:… …
??提供包含界线操作符(…)和范围操作符(…)
1..5 => 1 2 3 4 5
1...5 => 1 2 3 4
??二元加减法运算其单位会转化,或使用默认字面量值
??使用 / 时候,必须使用()括号包住。
2**8 =》 256
??相等运算可以被用来等同单位/颜色/字符串甚至标识符。
??近乎一切都是true。
false: 0 null false
??检查左边内容是否在右边的表达式中;
???= (?:)
,无需破坏值(如果存在)定义变量。
类型检查 => type(#fff)=="rgba"
??用来检查变量是否已经分配了值
??三个操作对象的操作符(条件表达式/真表达式以及假表达式)
??作为替代简洁的内置unit()函数,语法(expr)unit可用来强制后缀;
#0e0 + #0e0 => #0f0
#888 + 50%
#f00+50deg
??% 可以用来生成字面量值,通过传参给内置 s() 方法
??作为状态调用,而非表达式
??当border-radius() 选择器中调用时候,属性会被扩展并复制在选择器中;
??可以利用父级引用字符 &
stripe(even = #fff, odd = #eee)
tr
background-color odd
&.even
&:nth-child(even)
background-color even
??内置语言函数定义,其定义与mixins混入一致,却可以返回值
add(a,b)
a + b =>
body
padding add(10px,5)
add(a, b = a)
a + b
add(10, 5)
// => 15
add(10)
// => 20
add(a, b = a)
a = unit(a, px)
b = unit(b, px)
a + b
add(15%, 10deg)
// => 25
swap(a, b)
(b a)
swap(a, b)
return b a
compare(a, b)
if a > b
higher
else if a < b
lower
else
equal
plus = add
plus(1, 2)
// => 3
invoke(a, b, fn)
fn(a, b)
add(a, b)
a + b
body
padding invoke(5, 10, add)
padding invoke(5, 10, sub)
sum()
n = 0
for num in arguments
n = n + num
sum(1,2,3,4,5)
// => 15
get(hash, key)
return pair[1] if pair[0] == key for pair in hash
??可以放置关键字参数。其余不键入参数将适用于尚未得到满足的参数
body {
color: rgba(255, 200, 100, 0.5);
color: rgba(red: 255, green: 200, blue: 100, alpha: 0.5);
color: rgba(alpha: 0.5, blue: 100, red: 255, 200);
color: rgba(alpha: 0.5, blue: 100, 255, 200);
}
??返回color中的红色比重
??返回color中的透明度比重
??检查color是否为暗色
??返回给定color的色调
??内置参数参考地址:https://www.zhangxinxu.com/jq/stylus/bifs.php
??不输出
??只有在compress选项未启用的时候才会被输出
??压缩的时候这段无视直接输出
??条件提供了语言的流控制,提供的条件有导入/混入/函数以及更多
overload-padding = true
if overload-padding
padding(y, x)
margin y x
body
padding 5px 10px
??与if相反
??挡右边表达式为真的时候执行左边的对象
??可以通过for/in 对表达式进行迭代
??任何.css扩展的文件名将作为字面量
@import “reset.css”
??当使用@import没有.css扩展,会被认为是Stylus片段
??当使用.import(path)方法,这些导入是被推迟的,直到赋值。
??需要使用Stylus的块状符号
??需要添加块状属性
@keyframes pulse
0%
background-color red
opacity 1.0
-webkit-transform scale(1.0) rotate(0deg)
33%
background-color blue
opacity 0.75
-webkit-transform scale(1.1) rotate(-5deg)
67%
background-color green
opacity 0.5
-webkit-transform scale(1.1) rotate(5deg)
100%
background-color red
opacity 1.0
-webkit-transform scale(1.0) rotate(0deg)
.message {
padding: 10px;
border: 1px solid #eee;
}
.warning {
@extend .message;
color: #E2E21E;
}
??Stylus捆绑了一个可选函数,名叫url(),其替代了字面上的url()调用(且使用base64 Data URLs有条件的内联)
??大小默认限制30kb
??大小默认限制30kb
???主要用于整理笔记以及测试markdown字体、颜色、符号表情等,整篇并无插入图片。
参考文档:
??stylus中文文档地址:https://stylus.bootcss.com/
??张鑫旭stylus文档地址:https://www.zhangxinxu.com/jq/stylus/
标签:Stylus,CSS,预处理
更多演示案例,查看 案例演示
欢迎评论留言!
本文将研究 ES6 的 for ... of 循环。 旧方法 在过去,有两种方法可以遍历 javas...
一、正则表达式概述 二、正则表达式在VBScript中的应用 三、正则表达式在VavaScr...
计算属性computed: 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持...
前言 相信大家都知道在IDE中代码的智能提示几乎都是标配,虽然一些文本编辑器也...
ADO对象: Connection Command Recordset Record Stream ASP支持的对象很多,可...
【排序算法】之lowb三人组冒泡、插入、选择 什么是lowb三人组 冒泡排序bubble so...
微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很...
一石激起千层浪,继中国区浩浩荡荡的大裁员告一段落之后,甲骨文并未因此收起手...
歌词编辑器 歌词编辑器 第一步:选择要播放的歌曲并播放 第二步:填写全部的歌词...
vbs:把一段文字中指定字符颜色变成红色的正则 functionc(Tstr,Word) Dimre Setre...