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

news2024/12/18 17:06:12

目录

一、安装与配置

安装Node.js:

安装Stylus:

配置Webpack:

二、编写Stylus代码

定义变量:

使用变量:

嵌套语法:

混合(Mixins):

函数:

     6.关键字参数:

7.条件表达式: 

7.1举例设置屏幕宽度:

 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放上来,与less、sass进行一个对比

// Stylus 代码
$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的代码更加简洁省略了大量的标点符号冒号、分号、大括号、逗号),代码不仅减少了代码的冗余,还提高了代码的可读性和可维护性。这就是为啥可以选择他的原因。

一、安装与配置

  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

.container
  padding 20px
  
.title
  color $theme-color
  font-size 24px
  &:hover
    text-decoration underline
</style>
  1. 定义变量

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

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

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

    • 混合允许你定义一组CSS规则,并在多个地方重复使用它们。
      这里是一个简化和优化的例子,
      展示了如何在 CSS 中设置 border-radius,同时考虑旧浏览器的兼容性:
      
      border-radius(n)
        border-radius: n
        -webkit-border-radius: n   
        -moz-border-radius: n
      
      button
        border-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%;
    }
}

 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.coloradmin.cn/o/2261694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实现按键按下(低电平)检测到下降沿

按照流程进行编程 步骤1&#xff1a; 初始化函数 包括时基工作参数配置 输入通道配置 更新中断使能 使能捕获、捕获中断及计数器 HAL_TIM_IC_Init(&ic_handle) //时基参数配置 HAL_TIM_IC_ConfigChannel(&ic_handle,&ic_config,TIM_CHANNEL_2) //输…

2024广东省职业技能大赛云计算——私有云(OpenStack)平台搭建

OpenStack搭建 前言 搭建采用双节点安装&#xff0c;即controller控制节点和compute计算节点。 CentOS7 系统选择 2009 版本&#xff1a;CentOS-7-x86_64-DVD-2009.iso 可从阿里镜像站下载&#xff1a;https://mirrors.aliyun.com/centos/7/isos/x86_64/ OpenStack使用竞赛培…

使用ENSP实现NAT(2)

一、NAT的类型 二、静态NAT 1.项目拓扑 2.项目实现 路由器AR1配置&#xff1a; 进入系统视图 sys将路由器命名为AR1 sysname AR1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为192.168.10.254/24 ip address 192.168.10.254 24进…

RNN LSTM Seq2Seq Attention

非端到端&#xff1a; data -》 cleaning -》 feature Engining &#xff08;70%-80%工作 设计特征&#xff09;-》 分类器 -》预测 端到端 End-to-End&#xff1a; data -》 cleaning -》Deep learning&#xff08;表示学习&#xff0c;从数据中学习特征&#xff09; -》…

PHP排序算法:数组内有A~E,A移到C或者C移到B后排序,还按原顺序排序,循环

效果 PHP代码 public function demo($params){function moveNext($arr){$length count($arr);$lastElement $arr[$length - 1];for ($i $length - 1; $i > 0; $i--) {$arr[$i] $arr[$i - 1];}$arr[0] $lastElement;return $arr;}function moveAndReplace($array, $from…

Nginx主要知识点总结

1下载nginx 到nginx官网nginx: download下载nginx&#xff0c;然后解压压缩包 然后双击nginx.exe就可以启动nginx 2启动nginx 然后在浏览器的网址处输入localhost&#xff0c;进入如下页面说明nginx启动成功 3了解nginx的配置文件 4熟悉nginx的基本配置和常用操作 Nginx 常…

如何跟进项目

在跟进项目的过程中&#xff0c;我们需要通过清晰的沟通和高效的执行来确保目标按时达成。简单来说&#xff0c;“如何跟进项目”可归纳为&#xff1a;明确目标和交付物、建立高效沟通机制、持续监控进度与风险、灵活应对变更。尤其是“明确目标和交付物”这一点&#xff1a;当…

获取微信用户openid

附上开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 开发之前,准备事项 一个已认证过的服务号|基本信息配置js域名和网站授权域名配置最后确认当前账号网页授权功能是否开通,没有开通的无法获取到用户授权开发人…

【WRF工具】WRF 模型评估MET(Model Evaluation Tools)

WRF 模型评估MET&#xff08;Model Evaluation Tools&#xff09; METplus 简介WRF 模型评估工具 MET 的安装与使用步骤安装步骤使用步骤 参考 METplus 简介 METplus 是一个增强型的模型评估和验证框架&#xff0c;支持从短期预报&#xff08;如实时警报&#xff09;到长期气候…

ARMS 用户体验监控正式发布原生鸿蒙应用 SDK

作者&#xff1a;杨兰馨&#xff08;楠瑆&#xff09; 背景 2024 年 10 月 22 日&#xff0c;华为正式发布了原生鸿蒙操作系统&#xff08;HarmonyOS NEXT&#xff09;。原生鸿蒙实现了系统底座全部自研&#xff0c;系统的流畅度、性能、安全特性等方面显著提升&#xff0c;也…

云计算HCIP-OpenStack04

书接上回&#xff1a; 云计算HCIP-OpenStack03-CSDN博客 12.Nova计算管理 Nova作为OpenStack的核心服务&#xff0c;最重要的功能就是提供对于计算资源的管理。 计算资源的管理就包含了已封装的资源和未封装的资源。已封装的资源就包含了虚拟机、容器。未封装的资源就是物理机提…

MyBatis-Plus 实用工具:SqlHelper

SqlHelper 是MyBatis-Plus的一款SQL 辅助工具类&#xff0c;提供了一些常用的方法&#xff0c;简便我们的操作&#xff0c;提高开发效率。文档 最常用的是SqlHelper.table(Obj.class) 返回的 TableInfo 对象通常包含以下常用方法&#xff1a; 1. getTableName() 获取表名。示例…

压力测试Jmeter简介

前提条件&#xff1a;要安装JDK 若不需要了解&#xff0c;请直接定位到左侧目录的安装环节。 1.引言 在现代软件开发中&#xff0c;性能和稳定性是衡量系统质量的重要指标。为了确保应用程序在高负载情况下仍能正常运行&#xff0c;压力测试变得尤为重要。Apache JMeter 是一…

QT6 Socket通讯封装(TCP/UDP)

为大家分享一下最近封装的以太网socket通讯接口 效果演示 如图&#xff0c;界面还没优化&#xff0c;后续更新 废话不多说直接上教程 添加库 如果为qmake项目中&#xff0c;在.pro文件添加 QT network QT core gui QT networkgreaterThan(QT_MAJOR_VERS…

函数指针的作用

函数指针的主要作用&#xff0c;就是用来选择不同的调度函数&#xff0c;来满足特殊需求。它的优点&#xff0c;使程序设计更加灵活。缺点&#xff1a;初学者很难理解函数指针&#xff0c;从而引起程序的可读性不高。 1、使用函数指针选择调度函数 #include "stm32f10x.…

DateRangePickerDialog组件的用法

文章目录 概念介绍使用方法示例代码我们在上一章回中介绍了DatePickerDialog Widget相关的内容,本章回中将介绍DateRangePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的DateRangePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为…

【LeetCode每日一题】——220.存在重复元素 III

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 困难 三【题目编号】 220.存在重复元素 III 四【题目描述】 给你一个…

SQL server学习07-查询数据表中的数据(下)

目录 一&#xff0c;自连接查询 二&#xff0c;多表查询 三&#xff0c;关系代数运算 1&#xff0c;笛卡尔乘积运算 1&#xff09;交叉连接 2&#xff0c;连接运算 2&#xff09;内连接 四&#xff0c;外连接 1&#xff0c;左外连接 2&#xff0c;右外连接 3&…

Three.js资源-模型下载网站

在使用 Three.js 进行 3D 开发时&#xff0c;拥有丰富的模型资源库可以大大提升开发效率和作品质量。以下是一些推荐的 Three.js 模型下载网站&#xff0c;它们提供了各种类型的 3D 模型&#xff0c;适合不同项目需求。无论你是需要逼真的建筑模型&#xff0c;还是简单的几何体…

景联文科技入选中国信通院发布的“人工智能数据标注产业图谱”

近日&#xff0c;由中国信息通信研究院、中国人工智能产业发展联盟牵头&#xff0c;联合中国电信集团、沈阳市数据局、保定高新区等70多家单位编制完成并发布《人工智能数据标注产业图谱》。景联文科技作为人工智能产业关键环节的代表企业&#xff0c;入选图谱中技术服务板块。…