前端中stylus是干嘛用的

Stylus 是什么 & 核心作用

Stylus 是一款CSS 预处理器 (和 Less、Sass 同类型),专为前端开发设计,核心作用是:用更简洁、更灵活的语法写 CSS,最终编译成浏览器能识别的原生 CSS

你可以把它理解为 CSS 的「升级版」------ 解决了原生 CSS 没有变量、嵌套、函数等编程特性的痛点,让样式开发更高效、易维护。

1. 核心功能(新手最常用)

(1)极简的语法(可选省略大括号 / 分号 / 冒号)

原生 CSS 写法:

css

复制代码
.box {
  width: 100px;
  height: 200px;
  background: #fff;
}
.box .title {
  font-size: 16px;
}

Stylus 极简写法(完全等价):

stylus

复制代码
.box
  width 100px
  height 200px
  background #fff
  .title
    font-size 16px

👉 优势:少写大量重复符号,代码更简洁。

(2)变量(统一管理样式值)

stylus

复制代码
// 定义变量
primary-color = #1890ff  // 主题色
base-font-size = 14px     // 基础字号

// 使用变量
.button
  color primary-color
  font-size base-font-size

👉 优势:改样式时只需改变量,不用全局替换,适配主题切换超方便。

(3)嵌套(解决 CSS 选择器重复)

stylus

复制代码
.nav
  height 50px
  ul
    list-style none
    li
      float left
      a
        display block
        padding 0 10px
        &:hover  // & 代表父选择器(这里是 a)
          color red

👉 优势:层级清晰,避免写 .nav ul li a 这类冗长选择器。

(4)混合 / 函数(复用样式片段)

stylus

复制代码
// 定义混合(类似函数)
border-radius(val)
  -webkit-border-radius val
  -moz-border-radius val
  border-radius val

// 使用
.card
  border-radius 8px  // 等价于写了3行兼容代码

👉 优势:避免重复写兼容前缀、通用样式,减少代码量。

2. 实际使用流程

  1. 项目中安装 Stylus:npm install stylus stylus-loader --save-dev(需配合 webpack/vite 等构建工具);
  2. 新建 .styl/.stylus 后缀的文件,用 Stylus 语法写样式;
  3. 构建工具(如 vite/webpack)通过 stylus-loader 将 Stylus 编译成 .css 文件;
  4. 浏览器最终加载编译后的原生 CSS。

3. 适用场景

  • 中大型前端项目(React/Vue/Angular 等),需要统一管理样式、减少冗余;
  • 需适配多主题、多端样式的项目;
  • 追求代码简洁、易维护的团队。

总结

  1. Stylus 是 CSS 预处理器,核心是用更高效的语法写 CSS,最终编译为原生 CSS;
  2. 核心优势:极简语法、变量、嵌套、混合函数,大幅提升样式开发效率;
  3. 现在 npm 5+ 后安装时 --save 可省略,但 stylus-loader 作为开发依赖,建议用 --save-dev(-D)安装。


下面我给你提供一个 Vite + Vue3 项目中配置 Stylus 的完整可运行示例,包含从安装到使用的全流程,新手也能直接上手。

一、前置条件

确保你已经初始化了 Vite + Vue3 项目(如果没有,先执行下面的命令):

bash

运行

复制代码
# 初始化 Vue3 项目(按提示选择 Vue + JavaScript/TypeScript)
npm create vite@latest my-stylus-project -- --template vue
cd my-stylus-project

二、安装依赖

Stylus 需要安装两个核心包:stylus(编译核心)和 stylus-loader(Vite 加载器),作为开发依赖安装:

bash

运行

复制代码
# 安装 Stylus 相关依赖(--save-dev 可简写为 -D)
npm install stylus stylus-loader --save-dev

三、Vite 配置(无需额外配置!)

Vite 对 Stylus 有内置支持 ,安装依赖后无需修改 vite.config.js,直接就能使用 .styl/.stylus 文件。

如果你的 vite.config.js 有其他配置,保持默认即可,示例:

javascript

运行

复制代码
// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  // 无需额外配置 Stylus,Vite 会自动识别
})

四、实际使用示例

1. 单文件组件(.vue)内使用 Stylus

修改 src/App.vue,在 <style> 标签中指定 lang="stylus"

vue

复制代码
<template>
  <div class="app-container">
    <h1 class="title">Stylus 示例</h1>
    <button class="btn">点击我</button>
  </div>
</template>

<script setup>
// 脚本逻辑(无特殊修改)
</script>

<!-- 指定 lang="stylus" 即可使用 Stylus 语法 -->
<style lang="stylus" scoped>
// 1. 定义变量
primary-color = #1890ff  // 主题色
danger-color = #ff4d4f   // 危险色
base-padding = 16px      // 基础内边距

// 2. 嵌套语法
.app-container
  width 100%
  max-width 1200px
  margin 0 auto
  padding base-padding

  // 嵌套子元素
  .title
    color primary-color
    font-size 24px
    margin-bottom 20px

  // 按钮样式 + 伪类
  .btn
    padding 8px 16px
    background primary-color
    color #fff
    border none
    border-radius 4px
    cursor pointer

    // & 代表父选择器(.btn)
    &:hover
      background lighten(primary-color, 10%)  // 内置函数:提亮颜色
    &:active
      background darken(primary-color, 10%)   // 内置函数:加深颜色
</style>
2. 单独的 Stylus 文件(全局样式)
  1. src/styles 下新建 global.styl

stylus

复制代码
// src/styles/global.styl
// 全局变量/通用样式
body
  margin 0
  padding 0
  font-family "Microsoft Yahei", sans-serif
  color #333

// 通用混合函数
border-radius(val)
  -webkit-border-radius val
  -moz-border-radius val
  border-radius val

// 通用类名
.text-center
  text-align center
  1. src/main.js 中引入全局 Stylus 文件:

javascript

运行

复制代码
// src/main.js
import { createApp } from 'vue'
import App from './App.vue'
// 引入全局 Stylus 样式(Vite 会自动编译)
import './styles/global.styl'

createApp(App).mount('#app')

五、运行验证

执行启动命令,查看效果:

bash

运行

复制代码
npm run dev

打开浏览器访问 http://localhost:5173,能看到:

  • 标题文字为 #1890ff
  • 按钮 hover 时颜色变浅,点击时变深
  • 页面无默认边距(全局样式生效)

总结

  1. Vite + Vue3 中使用 Stylus 只需安装 stylusstylus-loader,无需额外配置;
  2. .vue 文件中通过 lang="stylus" 启用 Stylus 语法,支持变量、嵌套、内置函数等特性;
  3. 全局 Stylus 样式可单独建文件,在 main.js 中引入即可全局生效。

如果运行中遇到报错(比如找不到依赖),可以检查:

  • 依赖是否安装成功(查看 package.jsondevDependencies);
  • Vite 版本是否兼容(建议使用 Vite 4+ 版本);
  • Stylus 语法是否书写正确(比如少写空格、变量名错误)。
相关推荐
CHQIUU2 小时前
解决 npm 全局安装 EACCES 权限问题(macOS 篇)
前端·macos·npm
程序员鱼皮2 小时前
OpenClaw接入飞书保姆级教程,几分钟搞定手机养龙虾!
前端·人工智能·后端
紫_龙2 小时前
最新版vue3+TypeScript开发入门到实战教程之vue3与vue2语法优劣对比
前端·javascript·typescript
SouthRosefinch2 小时前
一、HTML简介与开发环境
开发语言·前端·html
全栈小52 小时前
【前端】Vue 组件开发中的枚举值验证:从一个Type属性错误说起
前端·javascript·vue.js
Joker Zxc3 小时前
【前端基础(Javascript部分)】4、JavaScript的分支语句
开发语言·前端·javascript
IT_陈寒3 小时前
JavaScript 性能优化的5个隐藏技巧:90%开发者都不知道的实战方案!
前端·人工智能·后端
꧁꫞꯭零꯭点꯭꫞꧂3 小时前
G6绘制机柜 以及机柜设备的demo
前端·javascript·vue.js
C澒3 小时前
供应链产研交付提效:前端多业务线新增样板间页面统计方案
前端·mr