CSS预处理框架——Stylus

article/2025/9/18 23:32:30

目录

        • 内容介绍
        • 一、特征
        • 二、选择器(Selectors)
          •   1、缩排 :book:
          •   2、规则集
          •   3、父级引用
          •   4、消除歧义
        • 三、变量(Variables)
          •   1、变量 :mag:
          •   2、标识符(变量名,函数等)
          •   3、属性查找
        • 四、插值(Interpolation)
          •   1、插值 :pencil2:
          •   2、选择器插值
        • 五、运算符(Operators)
          •   1、运算符优先级:从高到低 :computer:
          •   2、一元运算符
          •   3、二元运算符
          •   4、加减法
          •   5、乘除:/ * %
          •   6、指数:**
          •   7、相等与关系运算:== != >= <= ><
          •   8、真与假:
          •   9、逻辑操作符:&& || or
          •   10、存在操作符:in
          •   11、条件赋值:?= :=
          •   12、实例检查: is a
          •   13、变量定义:is defined
          •   14、三元:
          •   15、铸造:
          •   16、颜色操作:
          •   17、通过增加或减少百分值调整颜色亮度。
          •   18、通过增加或减少色度调整色调。
          •   19、格式化字符串:
        • 六、混合书写(Mixins)
          •   1、混入 :necktie:
          •   2、父级引用
        • 七、方法(Functions)
          •   1、函数
          •   2、默认参数
          •   3、函数体
          •   4、多个返回值
          •   5、条件
          •   6、别名
          •   7、变量函数
          •   8、参数
          •   9、哈希示例
        • 八、关键字参数(Keyword Arguments)
        • 九、内置方法(Built-in Functions)
          •   1、red(color)
          •   2、alpha(color)
          •   3、dark(color)
          •   4、hue(color)
          • 5、更多内置参数(不做罗列,请参考文档)
        • 十、注释(Comment)
          •   1、单行注释://
          •   2、多行注释:/* */
          •   3、多行缓冲注释:/*! */
        • 十一、条件(Conditionals)
          •   1、条件
          •   2、if / else if / else
          •   3、除非(unless)
          •   4、后缀条件
        • 十二、迭代(iteration)
        • 十三、导入(@import)
          •   1、字面量CSS
          •   2、Stylus导入
          •   3、Javascript导入API
        • 十四、媒体(@media)
        • 十五、自定义字体(@font-face)
        • 十六、关键帧(@keyframes)
        • 十七、继承(@extend)
        • 十八、函数url()
          •   1、limit
          •   2、paths
        • 十九、时不时的小惊喜,这样才有动力
      • 注:

内容介绍

Stylus是一个CSS预处理框架,后缀为.styl 。

一、特征

  冒号可选、分号可选、逗号可选、括号可选、变量、插值、混合书写、算术、强制类型转换、动态导入、条件、迭代、嵌套选择、父级参考、变量函数调用、词法作用域、内置函数、内部语言函数、压缩可选、图像内敛可选、可执行Stylus、健壮的错误报告、单行和多行注释、CSS字面量、字符转义、TextMate捆绑、…

二、选择器(Selectors)

  1、缩排 📖

  基于缩进,使用缩排和凹排代替花括号

bodycolor white
  2、规则集

  与CSS一样,允许使用逗号为多个选择器同时定义属性

textarea,inputborder 1px solid #eee

  长得像属性的选择器,尾部加个逗号

foo bar baz,
form input,
>aborder 1px solid #ccc
  3、父级引用

  字符&指向父选择器

textarea,inputcolor #ccc&:hovercolor #aaa    (两个选择器同时改变)
  4、消除歧义

  类似padding-n 的表达式可能被解释为减法运算,也可能解释为一元负号属性。为避免歧义,用括号包裹表达式:

pad(n)padding (-n)
bodypad(5px)

三、变量(Variables)

  1、变量 🔍

  可以指定表达式为变量,然后在样式中贯穿使用

font-size=14px
bodyfont font-size Arial
  2、标识符(变量名,函数等)

  标识符(变量名,函数等),也可能包括$字符

$font-size=14px
  3、属性查找

  独特功能-不需要分配值给便来给你就可以定义引用属性,如:

$logoposition:absolutetop:50%left:50%width: w=150pxheight: h=80pxmargin-top: -(@height/2)margin-left: -(@weight/2)

  属性“向上冒泡”,查找堆栈直到被发现,或者返回null(如果属性未找到)

四、插值(Interpolation)

  1、插值 ✏️
  支持通过使用{}字符包围表达式来插入值,其会变成标识符的一部分,
  例如-webkit-{'border'+'-radius'}等同于-webkit-border-radius
  如 私有前缀属性扩展:
vendor(prop,args)-webkit-{prop} args-moz-{prop} args{prop} args
  2、选择器插值

  插值也可以在选择器上起作用:

tablefor row in 1 2 3 4 5tr:nth-child(row)height:10px * row

五、运算符(Operators)

  1、运算符优先级:从高到低 💻
[]
! 	~	 +	 - 
is defined
** 	*	 /	 %
+ 	- 
... 	..
<=   		>= 	  	<>
in
==	is 	!=	is 	not	isnt
is	a
&&	and	||	or
?	:
=	:=	?=	+=	-=	*=	/=	%=
not
if	unless
  2、一元运算符
!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)
  3、二元运算符

  下标运算符 [] 允许通过索引获取表达式内部值。括号表达式可以充当元组(如(15px,15px))
范围:… …

  提供包含界线操作符(…)和范围操作符(…)

1..5				=>		1 2 3 4 5
1...5				=>		1 2  3 4
  4、加减法

  二元加减法运算其单位会转化,或使用默认字面量值

  5、乘除:/ * %

  使用 / 时候,必须使用()括号包住。

  6、指数:**
2**8			=》			256
  7、相等与关系运算:== != >= <= ><

  相等运算可以被用来等同单位/颜色/字符串甚至标识符。

  8、真与假:

  近乎一切都是true。

false:	0	null	false
  9、逻辑操作符:&& || or
  10、存在操作符:in

  检查左边内容是否在右边的表达式中;

  11、条件赋值:?= :=

  ?= (?:),无需破坏值(如果存在)定义变量。

  12、实例检查: is a
类型检查 =>	type(#fff)=="rgba"
  13、变量定义:is defined

  用来检查变量是否已经分配了值

  14、三元:

  三个操作对象的操作符(条件表达式/真表达式以及假表达式)

  15、铸造:

  作为替代简洁的内置unit()函数,语法(expr)unit可用来强制后缀;

  16、颜色操作:
#0e0 + #0e0		=>		#0f0
  17、通过增加或减少百分值调整颜色亮度。
#888 + 50%
  18、通过增加或减少色度调整色调。
#f00+50deg
  19、格式化字符串:

  % 可以用来生成字面量值,通过传参给内置 s() 方法

六、混合书写(Mixins)

  1、混入 👔

  作为状态调用,而非表达式
  当border-radius() 选择器中调用时候,属性会被扩展并复制在选择器中;

  2、父级引用

  可以利用父级引用字符 &

stripe(even = #fff, odd = #eee)trbackground-color odd&.even&:nth-child(even)background-color even

七、方法(Functions)

  1、函数

  内置语言函数定义,其定义与mixins混入一致,却可以返回值

add(a,b)
a + b		=>
body
padding add(10px,5)
  2、默认参数
add(a, b = a)a + badd(10, 5)
// => 15add(10)
// => 20
  3、函数体
add(a, b = a)a = unit(a, px)b = unit(b, px)a + badd(15%, 10deg)
// => 25
  4、多个返回值
swap(a, b)(b a)swap(a, b)return b a
  5、条件
compare(a, b)if a > bhigherelse if a < blowerelseequal
  6、别名
plus = addplus(1, 2)
// => 3
  7、变量函数
invoke(a, b, fn)fn(a, b)add(a, b)a + bbodypadding invoke(5, 10, add)padding invoke(5, 10, sub)
  8、参数
sum()n = 0for num in argumentsn = n + numsum(1,2,3,4,5)
// => 15
  9、哈希示例
get(hash, key)return pair[1] if pair[0] == key for pair in hash

八、关键字参数(Keyword Arguments)

  可以放置关键字参数。其余不键入参数将适用于尚未得到满足的参数

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);
}

九、内置方法(Built-in Functions)

  1、red(color)

  返回color中的红色比重

  2、alpha(color)

  返回color中的透明度比重

  3、dark(color)

  检查color是否为暗色

  4、hue(color)

  返回给定color的色调

5、更多内置参数(不做罗列,请参考文档)

  内置参数参考地址:https://www.zhangxinxu.com/jq/stylus/bifs.php

十、注释(Comment)

  1、单行注释://

  不输出

  2、多行注释:/* */

  只有在compress选项未启用的时候才会被输出

  3、多行缓冲注释:/*! */

  压缩的时候这段无视直接输出

十一、条件(Conditionals)

  1、条件

  条件提供了语言的流控制,提供的条件有导入/混入/函数以及更多

  2、if / else if / else
overload-padding = trueif overload-paddingpadding(y, x)margin y xbodypadding 5px 10px
  3、除非(unless)

  与if相反

  4、后缀条件

  挡右边表达式为真的时候执行左边的对象

十二、迭代(iteration)

  可以通过for/in 对表达式进行迭代

十三、导入(@import)

  1、字面量CSS

  任何.css扩展的文件名将作为字面量

@import “reset.css”
  2、Stylus导入

  当使用@import没有.css扩展,会被认为是Stylus片段

  3、Javascript导入API

  当使用.import(path)方法,这些导入是被推迟的,直到赋值。

十四、媒体(@media)

  需要使用Stylus的块状符号

十五、自定义字体(@font-face)

  需要添加块状属性

十六、关键帧(@keyframes)

@keyframes pulse
0%background-color redopacity 1.0-webkit-transform scale(1.0) rotate(0deg)
33%background-color blueopacity 0.75-webkit-transform scale(1.1) rotate(-5deg)
67%background-color greenopacity 0.5-webkit-transform scale(1.1) rotate(5deg)
100%background-color redopacity 1.0-webkit-transform scale(1.0) rotate(0deg)

十七、继承(@extend)

.message {padding: 10px;border: 1px solid #eee;
}.warning {@extend .message;color: #E2E21E;
}

十八、函数url()

  Stylus捆绑了一个可选函数,名叫url(),其替代了字面上的url()调用(且使用base64 Data URLs有条件的内联)

  1、limit

  大小默认限制30kb

  2、paths

  大小默认限制30kb

十九、时不时的小惊喜,这样才有动力

在这里插入图片描述
在这里插入图片描述

注:

  主要用于整理笔记以及测试markdown字体、颜色、符号表情等,整篇并无插入图片。

参考文档:

  stylus中文文档地址:https://stylus.bootcss.com/
  张鑫旭stylus文档地址:https://www.zhangxinxu.com/jq/stylus/
  关于markdown编辑相关技巧:CSDN的markdown编辑器使用(含表格背景色、文本颜色字体字号、锚点跳转、表情符号等)


标签:Stylus,CSS,预处理


更多演示案例,查看 案例演示


欢迎评论留言!


http://chatgpt.dhexx.cn/article/1CaaL0xW.shtml

相关文章

引入tinymce-vue后调试器报错 Refused to apply styl

今天在使用tinymce-vue的时候&#xff0c;遇到这些报错&#xff1a; 其中橙色框部分是因为没有引入对应插件导致的&#xff08;code , lineheight , indent2em&#xff09;;再我们下载的包中其实已经有了这些插件&#xff0c;只是页面没有引入&#xff0c;我们只需要页面引入就…

html list-style的作用,list-style是什么意思?list-style样式属性详解

本篇文章给大家带来的内容是关于list-style是什么意思?list-style样式属性详解&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。 一、list-style作用与用处 list-style是设置列表li的样式。比如li前面为阿拉伯数字、圆点、实…

.styl格式的CSS样式文件是什么文件

.styl格式的CSS样式文件是什么文件 Stylus 是一个 基于Node.js的CSS的预处理框架 。可以说是一种新型语言&#xff0c;其本质上做的事情与sass/less等类似。Stylus 比less更强大&#xff0c;而且基于nodejs&#xff1b;比sass更符合我们的思路。 最近研究了一下vue.js项目的高…

python中pip模块卸载并重装

** python中pip模块卸载并重装 ** 1、卸载已有的pip python -m pip uninstall pip2、重新安装 将https://bootstrap.pypa.io/get-pip.py中的内容复制下来&#xff0c;保存文件名为get-pip.py&#xff0c;之后cmd进入命令行输入如下命令即可&#xff1a; python get-pip.py

pip的安装和卸载

待安装系统环境 系统&#xff1a;macOS 10.15.5 依赖&#xff1a;Python 2.7.16 查看本机python版本的方法 $ python --versionPython 2.7.16 检测是否安装pip方法 $ pip-bash: pip: command not found command not found的提示说明你还没有安装pip 安装 安装好Python…

python中 pip不慎卸载了,重新安装方法

pip不慎卸载了&#xff0c;重新安装方法 今天不小心把pip给删除了&#xff0c;然后就搜怎么安装。弄了半天才弄好&#xff0c;这边记录一下&#xff1a; 1.下载安装文件 官方网站给出了安装的方法https://packaging.python.org/tutorials/installing-packages/#use-pip-for-…

pip 批量安装和卸载package

文章目录 1、pip批量安装package2、pip批量卸载package3、pip换国内源 1、pip批量安装package 将需要安装的包保存在aa.txt中 cd到aa.txt所在目录&#xff0c;运行&#xff1a; $ pip install -r aa.txt2、pip批量卸载package 将需要卸载的包保存在aa.txt中 cd到aa.txt所在…

两种方法彻底删除pip下载的所有第三方库,第二种最快

快速删除pip所有库 前言第一种第二种方法 前言 昨天有小伙伴在群里问怎么删除所有第三方库&#xff0c;已经太久没人问这种问题了&#xff0c;这让我突然意识到还是有很多小伙伴都是处于初学阶段的&#xff0c;于是今天给大家分享一下两种快速删除第三方库的方法&#xff0c;帮…

python pip 卸载环境内所有的包

那么如何一次性删除所有的包呢&#xff1f;首先需要执行以下代码&#xff1a; pip freeze>modules.txt 这时候就能够把所有的第三方模块的模块名称以及第三方模块的版本号等等信息保存在了这个 modules.txt文件中&#xff0c;之后的操作就是对这个文件进行操作了。 执行如…

pip被卸载了,如何再重新安装

今天不小心把pip给删除了&#xff0c;然后就搜怎么安装。弄了半天才弄好&#xff0c;这边记录一下&#xff1a; 首先这个网站给出了安装的方法https://packaging.python.org/tutorials/installing-packages/#use-pip-for-installing 全英文&#xff0c;看不懂&#xff1f;那就…

Windows下卸载pip的方法

一、卸载命令 在cmd中输入 python -m pip uninstall pip 二、执行命令后&#xff0c;弹出确认提示&#xff0c;输入y&#xff0c;给与确认 三、cmd中输入pip&#xff0c;查看是否安装卸载成功

不小心将 pip 卸载了,重新安装pip

打开 python 安装目录 下的 Scripts 文件夹&#xff0c;在空白处shift鼠标右键&#xff0c;选择在此处打开命令窗口&#xff0c; 在弹出的窗口中执行命令 easy_install.exe pip 即可。 如果 python 安装目录下 的 Scripts 目录中有没有 easy_install.exe 参见 http://blo…

Ubuntu16.04 安装 卸载 pip

实验环境 Ubuntu16.04&#xff1b;VMware15&#xff1b; 问题描述 笔者在虚拟机上安装好Ubuntu16.04&#xff0c; 一段时间之后重新打开准备编译python程序&#xff0c;在安装所需包时发现&#xff0c;pip pip3&#xff0c;指向的都是python2.7&#xff1b; hadoopubuntu:~…

pip 批量完全卸载包

pip 批量完全卸载包 创作背景问题分析解决方法代码详解改 BUG结尾 创作背景 因为我本机环境中安装的第三方库太多了&#xff0c;所以今天我准备把它们都卸载了&#xff0c;但因为太多了&#xff0c;所以不可能手动一个一个来&#xff0c;于是我便写了个小脚本&#xff0c;本文…

【python】如何使用pip安装、卸载包

1、在安装python的时候要把pip勾选上&#xff08;默认安装方式已经为你勾选好了&#xff09;。这样你就已经安装了pip。 2、打开命令提示符窗口 开始→所有程序→附件→运行&#xff08;快捷键 WinR&#xff09;&#xff0c;在对话框中输入cmd&#xff0c;回车确认即可 3.安装…

pip卸载库对应所有依赖库的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【pip command】之卸载 pip 之后重新安装

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言1 卸载 pip2 安装 pip3 查看 pip4 升级 pip总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 本来是一件没有必要的事情&#xff0c;但是…

已解决:不小心卸载pip后(重新安装pip的两种方式)

已解决&#xff1a;不小心卸载pip后&#xff08;手动安装pip的两种方式&#xff09; 文章目录 报错问题检查pip是否真的被卸载了解决方法1&#xff08;复杂&#xff09;解决方法2&#xff08;简单推荐使用&#xff09;千人全栈VIP答疑群联系博主帮忙解决报错 报错问题 一个粉丝…

Python基础:pip的安装与卸载

一、pip的安装&#xff1a; winR出现一下界面 然后输入cmd点击确定&#xff0c;出现以下界面&#xff0c;就可进行下载 以下是两种下载方法 1、普通安装&#xff1a;pip install 模板名 2、指定版本安装&#xff1a;pip install 模板名版本 二、pip的卸载&#xff1a;pip un…

已解决卸载pip重新安装的方法

已解决卸载pip重新安装的方法 文章目录 问题需求卸载pip安装pip千人全栈VIP答疑群联系博主帮忙解决报错 问题需求 粉丝群里面的一个小伙伴遇到问题跑来私信我&#xff0c;想用卸载pip重新安装pip&#xff0c;但是发生了报错&#xff08;当时他心里瞬间凉了一大截&#xff0c;跑…