转载:https://www.cnblogs.com/wenqiangit/p/9717715.html#undefined

 

stylus特点

富于表现力、具有健壮性、功能丰富、动态编码

不需要写CSS的冒号、分号、大括号

和LESS、SASS功能类似,会这些的入手很快

安装

  1. 安装node+npm环境

  2. 命令行全局安装stylus

    cnpm i stylus@latest -g
  3. 可以在命令行输入 stylus -h 查看有哪些可以用的命令

使用

想将assets/css目录下的所有.styl文件编译成css怎么办?

stylus -c assets/css/

只想将assets/css/index.styl 编译成assets/css/index.css?

stylus -c assets/css/index.styl assets/css/index.css

转载补充:
我在使用上的命令时会报错,可能是更新的缘故,解决方案如下:
stylus -c assets/css/index.styl
直接跟 你要编译的 .styl 文件即可。

想将assets/css/index.css 编译成assets/css/index.styl?

stylus -C assets/css/index.css 

不想这么麻烦的用命令怎么办?

使用webstorm设置如图可以自动将.styl文件转成.css文件

注意第二张图是默认配置,无需修改,直接确定。

如果配置都是空的,可以安装我的配置填写。

如果Program项出现红色报错!是因为node环境有问题或者没有全局安装stylus

接下来只需要编写.styl文件就会自动编译出.css文件。如图

vue中使用stylus, 命令行中输入

cnpm i stylus --save-dev 

补充: 如果执行完上一个命令后,提示这样的错误:

Module not found: Error: Can't resolve 'stylus-loader'
报错 找不到 stylus-loader 模块,这时候只需
npm i stylus-loader --save-dev
//如果你用的cnpm就
cnpm i stylus-loader --save-dev

然后,报错就应该消失了。

在 .vue文件中使用, 添加使用 scoped 属性表示样式只对当前组件有效

<style scoped lang="stylus">
html,body
margin 0
padding 0
div
color #333
</style>

stylus语法

#### (一)选择器

  • 1.冒号,分号,大括号可写可不写

  • 2.后代关系用相同缩进表示

  • 3.父子关系用 >表示

  • 4.伪类元素用 & 表示其宿主元素

  • 5.属性写在前, 嵌套子元素样式写在后

  • 6.分组选择器用相同缩进即可, 如 +a +span +span

#### (二)变量

1.定义变量并赋值(建议用$作为变量前缀), 如$width=3px

2.定义函数(arguments为内置所有参数, 也可自定义参数), border() $width dashed #foo

3.函数参数可以写默认值,类似于es6的解构赋值, 如 padding(top=1px,right=2px)

3.方法名加() 为调用函数,如 border()

4.建议变量定义在最上面, 然后是函数, 然后才是代码. 最好的方式是变量和函数定义成单独的文件, 然后通过@import "variable.styl"导入

5.使用@height 会冒泡查找值, 如自身有此属性则获取该属性值; 否则层层向上查找该属性, 如果都没有则报错

6.可以使用运算符进行计算

7.z-index 1 unless @z-index 表示默认 z-index=1 除非 @z-index 存在

(三)插值

1.实现类似 autoprefixer.css 的效果给兼容属性加前缀

2.使用循环 for in 减少代码量

3.使用 if-else 判断逻辑

(四)运算符

[]
! ~ + -
is defined
** * / %
+ -
... ..
<= >= < >
in
== is != is not isnt
is a
&& and || or
?:
= := ?= += -= *= /= %=
not
if unless

(五)内置函数

函数实例 说明
unit(14%,px) 14px 直接用第二个参数替换第一个参数的
abs(-5px) 5px  
ceil(2.3px) 3px 向上取整
floor(2.6px) 2px 向下取整
round(2.6px) 3px 四舍五入取整
min(1,2) 1  
max(1,2) 2  
even(3) false 是否为偶数
odd(3) true 是否为奇数
sum(1 2 3) 6  
avg(1 2 3) 2  
join(‘,’,1 2 3) 1 2 3 使用第一个参数为连接符将后面数组连接
length(1 2 3 4) 4  
image-size(‘aa.png’) 20px 30px 获取图片宽高

(六)尾参数…

1.可以使用 args... 或者 arr... 等接受所有参数; 前面也可以单个接受参数; 但是 尾参数写法只能作为最后一个参数

2.也可以使用 args[0] 或者 arguments[0] 这种下标的方式访问

3.args... 会忽略 , ;如果希望不忽略请使用 arguments

补充: 这部分自己练习代码示例:

(七)@extend继承

1.使用 @extend 将公共样式抽取, 用子类继承; 在html中可以少写一个类名 ,如 class="btn btn-primary" 只需要写成 class="btn-primary" 

stylus入门教程,在webstorm中配置stylus的更多相关文章

  1. 在webstorm中配置sass的自动编译,并且可以指定编译后的css的目录.

    参考: WebStorm-2018.2-Help-Sass, Less, and SCSS 作者:tobyDing链接:https://www.jianshu.com/p/0fe52f149cab來源 ...

  2. WebStorm中配置node.js(Windows)

    WebStorm中配置node.js(Windows) 一.node 1.下载安装包 32 位 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x86.msi ...

  3. 在webstorm中配置sass环境

    最近开始用SASS,LESS等来写CSS,而在Webstorm中,它自带一个File Watchers功能,设置一下,即可实时编译SASS,LESS等. LESS的实时编译很简单,在node平台安装一 ...

  4. ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC ...

  5. 在webstrorm中配置好es6 babel【更新:在webstorm中配置.vue和.vue文件中支持es6】

    第一步:全局安装babel-cli npm install -g babel-cli 第二步,新建一个空项目,在 WebStorm 中的当前项目中打开 Terminal,进入项目的根目录下, 安装 E ...

  6. [Android Studio 权威教程]AS 中配置强大的版本号管理系统(Git、SVN、等)

    在Eclipse中加入Git等版本号管理工具须要自己加入插件.并且个人认为不咋好用,在AS中已经给我们集成好了,我们仅仅须要配置一下就OK了.今天就和大家聊聊怎么配置以及使用的要点. 1. 安装Git ...

  7. matlab使用libsvm入门教程——使用matlab安装配置libsvm以及一个svm分类实例

    前言 此教程专注于刚入门的小白, 且博客拥有时效性, 发布于2019年3月份, 可能后面的读者会发现一些问题, 欢迎底下评论出现的问题,我将尽可能更新解决方案. 我开始也在如何安装libsvm上出现了 ...

  8. 【教程】ubuntu中配置tftp

    1. 安装 tftpd ( tftp 服务器). tftp ( tftp 客户端)以及 xinetd (超级服务器) 1. 安装 tftpd ( tftp 服务器). tftp ( tftp 客户端) ...

  9. Framework7 - 入门教程(安装、配置、创建一个H5应用)

    1,Framework7介绍 (1)Framework7 是一个开源免费的框架.可以用来开发混合移动应用(原生和 HTML 混合)或者开发 iOS & Android 风格的 WEB APP. ...

随机推荐

  1. 用FileZilla链接Linux服务器

    这里以CentOS举例 用SSH文件传输端口,默认为22端口,用netstat -antulp | grep ssh命令查看!

  2. 【NLP CS224N笔记】Lecture 3 GloVe: Global Vectors for Word Representation

    I. 复习word2vec的核心思路 1. Skip-gram 模型示意图: 2.word vectors的随机梯度 假设语料库中有这样一行句子: I love deep learning and N ...

  3. swap扩展

    没有独立的分区,本地回环设备(使用软件来模拟实现硬件) 创建一个镜像文件 https://blog.csdn.net/linuxnews/article/details/51271875 有独立的分区

  4. [转] python运行时内存分析工具meliae

    转自:https://my.oschina.net/markco/blog/601773 利用meliae来监控python进程的内存占用情况 meliae是一个python进程内存占用监控.分析工具 ...

  5. Http 请求头中 X-Requested-With 的含义

    昨天看代码的时候,看到了这个一句 String requestedWith = ((HttpServletRequest) request).getHeader("X-Requested-W ...

  6. Python3-线程

    线程 什么是线程 线程的创建开销小 线程与进程的区别 为何要用多线程 多线程的应用举例 开启线程的两种方式 在一个进程下开启多个线程与在一个进程下开启多个子进程的区别 多线程并发的socket服务器 ...

  7. MySQL log_slave_updates 参数【转】

    说明:最近部署了mysql的集群环境,详细如下M01和M02为主主复制,M01和R01为主从复制:在测试的过程中发现了以下问题: 1.M01和M02的主主复制是没有问题的(从M01写入数据能同步到M0 ...

  8. leetcode 307 Range Sum Query

    问题描述:给定一序列,求任意区间(i, j)的元素和:修改任意一元素,实现快速更新 树状数组 树状数组的主要特点是生成一棵树,树的高度为logN.每一层的高度为k,分布在这一层的序列元素索引的二进制表 ...

  9. requests库入门13-会话对象

    会话对象可以在跨请求保持某些参数,会话对象有requests api的大部分方法,我理解会话对象就是一个资源共享池 使用requests.Session()可以创建会话对象的实例 还是以之前GitHu ...

  10. 007_zkCli.sh

    一. [zk: localhost:2181(CONNECTED) 1] rmr /zkTestPaths_92018-06-25 11:18:30,189 [myid:] - WARN [main- ...