许虎虎 开发者工具集
Stylus 转 CSS

Stylus 转 CSS 是将 Stylus 文件(.styl)编译成标准的 CSS 文件(.css)的过程。Stylus 是一种 CSS 预处理器,它允许你使用更灵活的语法(如变量、嵌套、混合宏等)。在开发过程中,Stylus 文件需要通过编译器将其转换为浏览器可以理解的普通 CSS。

1. 如何将 Stylus 转换为 CSS
要将 Stylus 文件转为 CSS,你需要使用 Stylus 编译器。Stylus 提供了命令行工具,用于将 .styl 文件编译为 .css 文件。以下是基本的步骤:

安装 Stylus 编译器
首先,确保你已经安装了 Node.js 和 npm。然后,使用 npm 来安装 Stylus 编译器:

bash

npm install -g stylus
如果你只想在某个项目中使用 Stylus 编译器,可以在项目中作为开发依赖安装:

bash

npm install --save-dev stylus
编译 Stylus 文件
使用命令行将 .styl 文件编译为 .css 文件。

bash

stylus input.styl -o output.css
此命令会将 input.styl 文件编译为 output.css 文件。-o 标志表示输出文件的路径。

实时编译(监听文件变化)
你还可以使用 --watch 标志来监听文件变化,并在 Stylus 文件更新时自动编译:

bash

stylus input.styl -o output.css --watch
这样,每次你修改 input.styl 文件时,Stylus 会自动编译成最新的 output.css。

编译多个文件
如果你有多个 Stylus 文件需要编译,你可以一次性将多个文件编译成 CSS 文件:

bash

stylus file1.styl file2.styl -o output.css
或者使用通配符(*)来编译多个文件:

bash

stylus *.styl -o output.css
压缩输出 CSS
你可以使用 --compress 标志来压缩输出的 CSS 文件,去除空白字符、注释等,使其变得更加紧凑:

bash

stylus input.styl -o output.css --compress
生成源映射(Source Map)
如果你需要源映射,以便在调试时能查看原始 Stylus 代码,可以使用 --sourcemap 标志:

bash

stylus input.styl -o output.css --sourcemap
这会为生成的 CSS 文件创建一个 .map 文件,帮助浏览器将编译后的 CSS 映射回源 Stylus 文件。

2. Stylus 文件的基本语法
在将 Stylus 文件转换为 CSS 之前,了解一些 Stylus 的基本语法是很有帮助的。

变量
Stylus 支持变量,允许你存储和复用样式中的常用值:

stylus

$primary-color = #3498db
$font-size = 16px

body
color: $primary-color
font-size: $font-size
混合宏(Mixins)
Stylus 允许你定义混合宏,并在多个规则中复用它们:

stylus

border-radius(radius)
-webkit-border-radius: radius
-moz-border-radius: radius
border-radius: radius

.button
border-radius(5px)
background-color: #3498db
color: white
嵌套
Stylus 支持样式的嵌套,允许你清晰地表示层级结构:

stylus

.container
width: 100%
.header
background-color: #f0f0f0
color: #333
运算
Stylus 还支持数学运算,可以在样式中执行加法、减法、乘法等操作:

stylus

width = 100px
padding = 10px

.container
width: width + padding
继承(@extend)
Stylus 支持继承,可以让一个选择器继承另一个选择器的样式:

stylus

btn
padding: 10px 15px
border-radius: 5px

.primary-btn
extends btn
background-color: #007bff
color: white
3. Stylus 转 CSS 的示例
假设你有一个简单的 Stylus 文件 styles.styl,内容如下:

stylus

// styles.styl

$primary-color = #3498db
$font-size = 16px

body
background-color: #f0f0f0
font-family: Arial, sans-serif
color: $primary-color
font-size: $font-size

h1
color: $primary-color
font-size: 2em
使用 Stylus 编译器将 styles.styl 转换为 styles.css,结果将是:

css

/* styles.css */
body {
background-color: #f0f0f0;
font-family: Arial, sans-serif;
color: #3498db;
font-size: 16px;
}

h1 {
color: #3498db;
font-size: 2em;
}