CSS 预处理器

文章目录

  • 特点
    • 变量和混合
    • 嵌套规则
    • 运算和函数
    • 扩展性和可定制性
    • 代码组织和模块化
    • 未来CSS特性的支持
  • 语法
    • 嵌套
    • 变量
    • 运算
    • 函数
    • 继承
    • Mixin
    • 条件语句
    • 导入
  • Sass、Less、Stylus 区别
    • 语法差异
    • 变量定义
    • 混合器(Mixins)
    • 函数和运算

特点

变量和混合

预处理器允许你使用变量来存储常用的值,如颜色、字体大小等。这意味着,如果你需要更改某个值,只需在一个地方进行修改,而不是在整个样式表中搜索和替换。此外,混合(mixin)功能允许你定义可重用的代码块,这些代码块可以在多个地方调用,从而减少了代码的重复,提高了代码的可维护性。

嵌套规则

预处理器支持嵌套规则,这使得样式表的结构更加清晰和易于理解。你可以按照HTML元素的嵌套结构来组织CSS规则,避免了大量的重复选择器和提高了代码的可读性。

运算和函数

预处理器提供了丰富的运算和函数功能,允许你在样式表中执行数学计算、字符串操作等任务。这不仅可以提高开发效率,还能生成更加灵活的样式效果。

扩展性和可定制性

预处理器通常支持自定义函数和混合,这使得你可以根据项目的需求来扩展其功能。此外,一些预处理器还支持与其他工具和库的集成,如自动添加浏览器前缀、与构建工具结合使用等,进一步提高了开发效率。

代码组织和模块化

预处理器可以帮助你更好地组织代码,实现模块化开发。通过将样式拆分成多个文件或模块,你可以更容易地管理和维护代码,同时也方便与其他团队成员协作。

未来CSS特性的支持

预处理器通常能够支持一些尚未被所有浏览器原生支持的CSS特性。通过使用预处理器,你可以提前使用这些特性,并在编译时自动添加必要的浏览器前缀或回退方案,确保样式的兼容性。


语法

下面以Sass语法为例

嵌套

嵌套语法可以让样式代码更具层次感和可读性

.container {  width: 100%;  .row {  display: flex;  justify-content: space-between;  .col {  flex: 1;  }  }  
}

.

变量

可以定义可复用的变量,这些变量可以在整个样式表中使用

// 定义变量  
$primary-color: #333;  
$font-size: 16px;  // 使用变量  
body {  color: $primary-color;  font-size: $font-size;  
}

.

运算

可以在属性中进行基本的数学运算,比如加法、减法、乘法和除法

$width: 100px;  
$padding: 20px;  .box {  width: $width - $padding; // 80px  padding: $padding;  
}

.

函数

内置了一些函数,如颜色函数,可以帮助你处理颜色值

$color: #007bff;  .button {  background-color: darken($color, 10%); // 将颜色变暗10%  
}

.

继承

继承允许一个选择器继承另一个选择器的所有样式。使用@extend指令来实现

// 定义基类  
.button {  border: 1px solid #ccc;  padding: 10px;  display: inline-block;  
}  // 继承基类  
.primary-button {  @extend .button;  background-color: blue;  color: white;  
}

.

Mixin

Mixin是一种可重用的样式块,它允许你定义一组CSS声明,并在整个样式表中多次使用

  • 使用@mixin来定义Mixin
  • 使用@include来使用Mixin
// 定义Mixin  
@mixin border-radius($radius) {  -webkit-border-radius: $radius;  -moz-border-radius: $radius;  -ms-border-radius: $radius;  border-radius: $radius;  
}  // 使用Mixin  
.box {  @include border-radius(10px);  background-color: #f5f5f5;  padding: 20px;  
}

.

条件语句

支持条件语句,如@if@for,这使得在样式表中编写逻辑成为可能

$type: monster;  body {  @if $type == monster {  background-color: green;  } @else {  background-color: blue;  }  
}

.

导入

允许你导入其他文件,这样可以将样式表模块化,提高可维护性

@import 'partials/variables'; // 导入变量文件  
@import 'partials/mixins'; // 导入Mixin文件

Sass、Less、Stylus 区别

语法差异

Sass使用两种语法:

  • 缩进语法:类似于Python的缩进来表示嵌套规则和块级作用域。
    这种语法更简洁,不需要使用大括号和分号。

  • SCSS语法:是 Sass 3.0 版本引入的,它的语法与 CSS 非常相似,使用了大括号和分号来分隔规则和声明。
    这种语法更常用,需要使用大括号和分号。

Less和Stylus则使用类似CSS的语法,使用大括号和分号来表示规则和声明,这使得它们对于熟悉CSS的开发者来说更容易上手。

.

变量定义

  • Sass和Less都使用$符号来定义变量。
  • Stylus则既可以使用$符号,也可以使用@符号来定义变量。

.

混合器(Mixins)

  • Sass和Less都支持混合器,允许开发者定义可重用的样式块,并在需要的地方调用。这有助于避免代码重复,提高代码复用性。

    // 定义Mixin  
    @mixin border-radius($radius) {  -webkit-border-radius: $radius;  -moz-border-radius: $radius;  -ms-border-radius: $radius;  border-radius: $radius;  
    }  // 使用Mixin  
    .box {  @include border-radius(10px);  background-color: #f5f5f5;  
    }
    
  • Stylus则使用类似函数的方式来定义和调用可重用的代码块。

    // 定义一个名为border-radius的混合器  
    border-radius($radius)  -webkit-border-radius: $radius;  -moz-border-radius: $radius;  -ms-border-radius: $radius;  border-radius: $radius;  // 在一个选择器中使用混合器  
    .box border-radius(10px);  background-color: #f5f5f5;  // 在另一个选择器中也使用混合器  
    .avatar  border-radius(50%)  
    

.

函数和运算

  • Sass和Less提供了一些内置的函数和运算符,支持数学计算和字符串操作等操作。

  • Stylus在这方面更为灵活,提供了更多的内置函数和运算符,并支持自定义函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824467.shtml

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

相关文章

【C++刷题】优选算法——动态规划第四辑

回文子串 状态表示:dp[i][j]: 表示以i位置开始&#xff0c;j位置结尾的子串是否是回文串 状态转移方程:i j: dp[i][j] true;i 1 j && s[i] s[j]: dp[i][j] true;i 1 < j && dp[i1][j-1] && s[i] s[j]: dp[i][j] true;int countSubstrings…

04-15 周一 GitHub仓库CI服务器actions-runner和workflow yaml配置文档解析

04-15 周一 GitHub仓库CI服务器配置过程文档 时间版本修改人描述2024年4月15日10:35:52V0.1宋全恒新建文档2024年4月17日10:33:20v1.0宋全恒完成github actions CI的配置和工作流配置文件解读文档的撰写 简介 一些基础概念 前提知识 仓库介绍 地址镜像介绍https://github.…

GIT上超火的阿里内部1000页Java核心笔记,啃完竟然拿到阿里P7offer!

除了ReetrantLock&#xff0c;你还接触过JUC中的哪些并发工具&#xff1f; 请谈谈ReadWriteLock 和StampedLock。 如何让Java的线程彼此同步&#xff1f;你了解过哪些同步器&#xff1f;请分别介绍下。 CyclicBarrier和CountDownLatch看起来很相似&#xff0c;请对比下呢&am…

Django中的数据库优化与ORM性能调优【第169篇—ORM性能调优】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Django中的数据库优化与ORM性能调优 在开发基于Django的Web应用程序时&#xff0c;数据库是…

让一个元素在网页上跟随网页窗口大小变化始终保持上下左右居中

废话少说&#xff0c;直接上代码&#xff0c;懂的都懂&#xff1a; <!DOCTYPE html> <html style"font-size: 100px;"> <head><meta http-equiv"Content-Type" content"text/html;charsetUTF-8"><style type"te…

CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)

CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—文件头检查&#xff09; 文章目录 CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—文件头检查&#xff09;前端验证—文件头检查题目解析 各种文件头标志 前端验证—文件头检查 题目考的是&#xff1a;pn…

Spring之CGLIB和JDK动态代理底层实现

目录 CGLIB 使用示例-支持创建代理对象&#xff0c;执行代理逻辑 使用示例-多个方法&#xff0c;走不同的代理逻辑 JDK动态代理 使用示例-支持创建代理对象&#xff0c;执行代理逻辑 Spring会自动在JDK动态代理和CGLIB之间转换: 1、如果目标对象实现了接口&#xff0c;默…

【计组】计算机系统概述

文章目录 前言正文计算机的发展历程什么是计算机系统硬件的发展历程软件的发展 计算机硬件的基本组成冯诺依曼体系结构(存储程序型电脑)现代计算机的结构 各硬件的工作原理主存储器的基本组成运算器的基本组成控制器的基本组成计算机的工作过程 计算机系统的层次结构计算机的性…

AWS Key disabler:AWS IAM用户访问密钥安全保护工具

关于AWS Key disabler AWS Key disabler是一款功能强大的AWS IAM用户访问密钥安全保护工具&#xff0c;该工具可以通过设置一个时间定量来禁用AWS IAM用户访问密钥&#xff0c;以此来降低旧访问密钥所带来的安全风险。 工具运行流程 AWS Key disabler本质上是一个Lambda函数&…

Go 语言中的 GIF 图像处理完全指南:`image/gif`的技术与实践

Go 语言中的 GIF 图像处理完全指南&#xff1a;image/gif的技术与实践 概述安装与基础设置导入 image/gif 包初步配置示例&#xff1a;设置一个简单的 GIF 编码环境 读取与解码 GIF 图像读取 GIF 文件解析 GIF 数据 创建与编码 GIF 图像创建 GIF 图像编码 GIF 图像 处理 GIF 动…

书生·浦语大模型实战训练营第二期第四节--Xtuner微调LLM--notebook

XTuner微调LLM课程笔记 一、Finetune简介 1.为什么模型要做微调&#xff1f; 现在其实大部分的大模型应该叫做“基座模型”&#xff0c;也就是基于普遍性的任务去进行与训练的&#xff0c;所以如果想让它落地在特定的下游领域中&#xff0c;它的表现必然是不如在领域内训练的模…

vue+Element-ui实现模板文件下载

最近实现一个功能&#xff0c;数据过多&#xff0c;录入系统的时候过慢&#xff0c;所以新增一个导入数据的功能。 导入数据的话&#xff0c;为了防止用户随意输入&#xff0c;或者不知道怎么输入&#xff0c;所以特完成模板下载功能。 通常情况下实现模板下载采用a标签即可实现…

【devops】 阿里云挂载云盘 | 扩展系统硬盘 | 不重启服务器增加硬盘容量

扩容分区和文件系统&#xff08;Linux&#xff09; 文档地址 https://help.aliyun.com/zh/ecs/user-guide/extend-the-partitions-and-file-systems-of-disks-on-a-linux-instance?spm5176.smartservice_service_robot_chat_new.help.dexternal.4ac4f625Ol66kL#50541782adxmp…

Go 之 sync.Mutex 加锁失效现象

我先声明一下&#xff0c;并不是真的加锁失效&#xff0c;而是我之前的理解有误&#xff0c;导致看起来像是加锁失效一样。于是乎记录一下&#xff0c;加深一下印象。 我之前有个理解误区&#xff08;不知道大家有没有&#xff0c;有的话赶紧纠正一下——其实也是因为我这块的…

2024年DCMM最新补贴,奖励政策

DCMM&#xff08;数据管理能力成熟度模型&#xff09;认证奖励补贴政策是中国各地政府为了推动企业提升数据管理能力、加快数字化转型而出台的一系列措施。这些政策旨在通过财政资金的激励&#xff0c;鼓励企业进行数据管理能力的提升和认证&#xff0c;从而促进整个地区乃至国…

【在线OJ系统】自定义注解实现分布式ID无感自增

实现思路 首先自定义参数注解&#xff0c;然后根据AOP思想&#xff0c;找到该注解作用的切点&#xff0c;也就是mapper层对于mapper层的接口在执行前都会执行该aop操作&#xff1a;获取到对于的方法对象&#xff0c;根据方法对象获取参数列表&#xff0c;根据参数列表判断某个…

html接入高德地图

1.申请key key申请地址&#xff1a;https://console.amap.com/dev/key/app 官方文档 https://lbs.amap.com/api/javascript-api-v2/summary 2.html接入示例 需要将YOUR_KEY替换成自己的key <!doctype html> <html> <head><meta charset"utf-…

IDEA 安装、基本使用、创建项目

文章目录 下载基本使用修改颜色主题Keymap插件 创建项目创建模块新建 Java 类运行新建 Package打包 Jar运行 jar 包 查看文档 下载 官方下载地址&#xff1a;https://www.jetbrains.com/zh-cn/idea/download/?sectionmac 这里我下载 macOS 社区版&#xff0c;IDEA 2024.1 (C…

arcgis中坡向计算工作原理说明

用于识别出从每个像元到其相邻像元方向上值的变化率最大的下坡方向。坡向可以被视为坡度方向。输出栅格中各像元的值可指示出各像元位置处表面的朝向的罗盘方向。将按照顺时针方向进行测量&#xff0c;角度范围介于 0&#xff08;正北&#xff09;到 360&#xff08;仍是正北&a…

Windows 安装 A UDP/TCP Assistant 网络调试助手

Windows 安装 A UDP/TCP Assistant 网络调试助手 0. 引言1. 下载地址2. 安装和使用 0. 引言 需要调试一个实时在线聊天程序&#xff0c;安装一个UDP/TCP Assistant 网络调试助手&#xff0c;方便调试。 1. 下载地址 https://github.com/busyluo/NetAssistant/releases 2. 安…