预处理器Stylus的介绍及使用,并同Less、Sass进行对比(简单介绍)

news/2024/12/18 14:27:39/

目录

一、安装与配置

安装Node.js:

安装Stylus:

配置Webpack:

二、编写Stylus代码

定义变量:

使用变量:

嵌套语法:

混合(Mixins):

函数:

     6.关键字参数:

7.条件表达式: 

7.1举例设置屏幕宽度:

less%EF%BC%89%EF%BC%9A-toc" style="margin-left:80px;"> 7.2除非(Unless):

7.3后缀条件 :

官网地址


介绍:

Stylus是一种CSS预处理语言,它允许开发者使用更加强大和富有表现力的方式来写CSS代码。

为啥要用stylus,我们先上代码,看看:

先举例一下Sass和Less:

// Sass 代码
$primary-color: #ff0000;
$secondary-color: #00ff00;body {font-size: 14px;color: $primary-color;p {margin: 10px;padding: 5px;&:hover {background-color: $secondary-color;}}
}.button {background-color: $primary-color;color: #fff;padding: 10px;border-radius: 5px;
}
// Less 代码
@primary-color: #ff0000;
@secondary-color: #00ff00;body {font-size: 14px;color: @primary-color;p {margin: 10px;padding: 5px;&:hover {background-color: @secondary-color;}}
}.button {background-color: @primary-color;color: #fff;padding: 10px;border-radius: 5px;
}

然后,我们再把我们要讲的Stylus放上来,lesssass进行一个对比

// Stylus 代码
$primary-color = #ff0000
$secondary-color = #00ff00bodyfont-size 14pxcolor $primary-colorpmargin 10pxpadding 5px&:hoverbackground-color $secondary-color.buttonbackground-color $primary-colorcolor #fffpadding 10pxborder-radius 5px

从上面的代码对比可以看出,Stylus的代码更加简洁省略了大量的标点符号冒号、分号、大括号、逗号),代码不仅减少了代码的冗余,还提高了代码的可读性和可维护性。这就是为啥可以选择他的原因。

一、安装与配置

  1. 安装Node.js

    • Stylus是基于Node.js社区产生的,因此在使用Stylus前,需确保计算机上已经安装了Node.js。
  2. 安装Stylus

    • 通过Node.js的包管理器npm来全局安装Stylus。在命令行中输入npm install stylus -g,即可完成Stylus的安装。
      npm install stylus -g
    • 如果是在项目中使用,可以在项目的根目录下运行npm install stylus stylus-loader --save-dev来安装Stylus和stylus-loader(用于webpack打包)。
      npm install stylus stylus-loader --save-dev
  3. 配置Webpack

    • 如果项目是使用Webpack构建的,需要确保webpack.config.js文件中对Stylus进行了正确的配置。
      const path = require('path');
      const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // 用于将 CSS 提取到单独的文件中(可选)module.exports = {entry: './src/index.js', // 你的入口文件output: {filename: 'bundle.js',path: path.resolve(__dirname, 'dist'),},module: {rules: [{test: /\.styl(us)?$/, // 匹配 .styl 或 .stylus 文件use: [MiniCssExtractPlugin.loader, // 如果你想要将 CSS 提取到单独的文件中(可选)'css-loader', // 处理 CSS 文件,使其可以被 JavaScript 导入'stylus-loader', // 处理 Stylus 文件,将其编译为 CSS],},// 其他 loader 配置...],},plugins: [new MiniCssExtractPlugin({filename: 'styles.css', // 提取出的 CSS 文件名}),// 其他插件配置...],// 其他 Webpack 配置...
      };

    • 使用VueCLI创建的项目,通常这部分配置已经设置好了。

二、编写Stylus代码

Stylus默认使用.styl作为文件扩展名。以下是一些基本的语法示例:

<template><div class="container"><h1 class="title">Hello, Stylus!</h1></div>
</template><script>
export default {name: 'Home'
}
</script><style lang="stylus">
$theme-color = #42b983.containerpadding 20px.titlecolor $theme-colorfont-size 24px&:hovertext-decoration underline
</style>
  1. 定义变量

    • 在Stylus中,可以使用变量来存储常用的CSS属性值,以便在需要时重复使用。
      $theme-color = #42b983
  2. 使用变量

    • 定义变量后,可以在CSS规则中引用这些变量。
      .title color $theme-color
  3. 嵌套语法

    • Stylus支持嵌套语法,这使得在定义复杂选择器时更加直观和方便。
      .containerpadding 20px.titlecolor $theme-colorfont-size 24px&:hovertext-decoration underline
  4. 混合(Mixins)

    • 混合允许你定义一组CSS规则,并在多个地方重复使用它们。
      这里是一个简化和优化的例子,
      展示了如何在 CSS 中设置 border-radius,同时考虑旧浏览器的兼容性:border-radius(n)border-radius: n-webkit-border-radius: n   -moz-border-radius: nbuttonborder-radius(5px)
  5. 函数

    • Stylus支持函数,可以执行一些复杂的计算或逻辑操作。
      element background-color: lighten(#f00,10%)lighten 函数通常用于增加颜色的亮度。
      这个函数接受两个参数:第一个参数是原始颜色;第二个参数是亮度的增加量,通常以百分比表示。

     6.关键字参数:

以下示例在功能上是等价的。 然而,我们可以 在参数列表中的任何位置放置关键字参数。  设置关键字的参数将被用来填充其余尚未填充的参数。

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

转换为:

   body {color: rgba(255,200,100,0.5);color: rgba(255,200,100,0.5);color: rgba(255,200,100,0.5);color: rgba(255,200,100,0.5);}

若要查看函数或混合(mixin)所能接受的参数,请使用 p() 函数:

p(rgba)

输出:

inspect: rgba(red, green, blue, alpha)

7.条件表达式

Stylus的条件表达式使用ifelse ifelse关键字来构建,和js的if语句差不多啦

7.1举例设置屏幕宽度:

// 定义一个变量来表示屏幕宽度
screen-width = 1200px// 使用条件表达式来设置不同的CSS属性
if (screen-width >= 1000px) {.container {max-width: 1000px;}
} else {.container {max-width: 90%;}
}

less%EF%BC%89%EF%BC%9A"> 7.2除非(Unless):

除了基本的ifelse ifelse关键字外,Stylus还支持unless关键字,其用法与if相反unless关键字用于在条件表达式为假时执行代码块

unless (条件表达式) {// 条件表达式为假时执行的代码块
}

7.3后缀条件 :

Stylus还支持后缀条件,这意味着ifunless可以当作操作符使用。当右边表达式为真时,执行左边的操作对象。这种语法特别适用于单行语句,如@import@charset等。

// 定义一个变量来表示是否禁用内边距覆盖
disable-padding-override = false// 使用后缀条件来设置不同的CSS属性
body {padding: 10px 20px unless (disable-padding-override);margin: 0 unless (disable-padding-override == false);
}

 上面这个例子中,如果disable-padding-override变量的值为false,则body元素将具有padding属性;否则,padding属性将被忽略,而margin属性将被设置为0。

官网地址

下面是他的官网地址,如需要详细了解点击下方跳转

点击跳转-->Stylus官网


http://www.ppmy.cn/news/1556140.html

相关文章

.NET 技术 | 调用系统API创建Windows服务

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

简易记事本项目—基于SSM+Vue前后端分离

&#x1f308;&#x1f308;&#x1f308;今天给大家分享的是&#xff1a;基于SSMVue的简易记事本项目 目录 引言 技术栈介绍 项目概述 1. 用户注册 2. 用户登录 3. 用户退出 4. 事件分类 5. 事件管理 项目主要图片 引言 在快节奏的现代生活中&#xff0c;我们常常被…

Python单例模式的优雅实现:元类与装饰器的结合

Python单例模式的优雅实现:元类与装饰器的结合 引言 单例模式是一种常用的设计模式,旨在确保一个类只有一个实例,并提供一个全局访问点。在多线程环境下,如何保证单例的线程安全是一个重要的问题。本文将深入探讨Python中使用元类和装饰器实现线程安全单例模式的两种方式…

在 Ubuntu 24.04.1 LTS (WSL) 中使用 openssl 生成 keybox.xml

看到“生成 keybox.xml”&#xff0c;大概率都会联想到 PIF 和 Tricky Store。这里就不多解释它们的用途了。最近在网上看到生成非 AOSP keybox 的教程&#xff0c;在这里做一些补充&#xff0c;并将代码打包成一个 Python 脚本。 参考自&#xff1a; Idea 提供者&#xff1a…

【2025最新计算机毕业设计】基于Java的爱心社会公益平台【提供源码+答辩PPT+文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

虚拟机VirtualBox安装最新版本Oracle数据库

https://www.oracle.com/database/technologies/databaseappdev-vm.html 如上所示&#xff0c;从Oracle官方网站上下载最新版本的VirtualBox虚拟机对应的Oracle数据库安装源文件。 如上所示&#xff0c;在VirtualBox中导入下载的Oracle安装源文件。 如上所示&#xff0c;导入…

UIP协议栈 TCP通信客户端 服务端,UDP单播 广播通信 example

文章目录 1. TCP通信 客户端&#xff08;关键配置&#xff09;2. TCP 服务端配置3. UDP 点播通信4. UDP 广播通信5. UIP_UDP_APPCALL 里边的处理example6. TCP数据处理 &#xff0c;UIP_APPCALL调用的函数 UIP_APPCALL TCP的数据都在这个宏定义的函数里进行数据处理的 UDP 数据…

华为HarmonyOS实现跨多个子系统融合的场景化服务 -- 2 选择头像Button

场景介绍 本章节将向您介绍如何使用选择头像Button功能&#xff0c;开发者可调用对应Button组件快速拉起头像选择页面&#xff0c;供用户完成华为账号头像或其他头像的选择与展示。 前提条件 参见开发前提。 效果图展示 单击头像按钮拉起半模态选择头像页面来设置头像。 开…