Sass预处理器教程

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes

觉得有帮助的同学,可以点心心支持一下哈

一、sass是什么

Sass官方文档 www.sasscss.com/guide

Sass中文网 www.sass.hk

sass是一种css预处理语言,由Ruby语言开发,比css多出很多功能(变量、嵌套、运算、混入、继承、指令、函数)更容易阅读

sass的工作方式是,在sass源文件中写代码,然后由sass程序(sass编译器)将其转化成css文件

二、sass和scss 的关系

sass 的缩排语法,对于写惯css前端的web开发者来说很不直观,也不能将css代码加入到sass 里面,因此 sass 语法进行了改良,sass 3就变成了scss(sassy css)。与原来的语法兼容,只是用 { } 取代了原来的缩进,更像css写法。(以前版本使用缩进风格 sass,最新版本改为{ } scss)

三、sass(scss)和less的区别

(1)编译环境不同

sass需要Ruby环境,日常开发使用sass插件(Live Sass Compiler或其他)(运行在服务器端)

less基于JavaScript,需要引入less.js来处理代码输出css(客户端运行,也就是浏览器运行)

(2)变量符不同

sass: $color:#000;

less: @color:#000;

(3)输出风格不同

sass有四种输出风格:

nested:嵌套缩进的css代码

expanded:展开的多行的css代码

compact:简洁格式的css代码

compressed:压缩后的css代码

(4)条件语句不同

Sass支持条件语句,可以使用if{}else{},for{}循环等等。而Less不支持

......

四、sass的使用

1. 安装Sass

首先,确保你已经安装了Sass。你可以使用以下命令在命令行中安装:

npm install sass -g 

2. 基础语法

Sass的基础语法与CSS类似,但它引入了一些额外的特性:

原始 Sass 语法:

$primary-color: #3498db;

body
  background-color: $primary-color;

转换为 SCSS 语法:

$primary-color: #3498db;

body {
  background-color: $primary-color;
}

在 SCSS 中,使用分号 ; 表示语句的结束,而使用花括号 {} 表示代码块。这样的转换是相对简单的,因为 SCSS 更接近于常规的 CSS 语法。

在这个例子中,$primary-color 是一个变量,用于存储主题色。

3. 变量

使用变量可以方便地存储和重用值:

// styles.scss

$primary-color: #3498db;
$font-size: 16px;

body {
  background-color: $primary-color;
  font-size: $font-size;
}

这样,当需要更改主题色或字体大小时,只需更改变量的值即可。

4. 嵌套

使用嵌套可以更清晰地表示选择器的层级关系:

// styles.scss

nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;

    li {
      display: inline-block;
      margin-right: 5px;

      a {
        text-decoration: none;
        color: $primary-color;

        &:hover {
          text-decoration: underline;
        }
      }
    }
  }
}

嵌套规则让样式表更加易读,同时避免了重复书写选择器。

5. 混合(Mixin)

混合允许将一组样式组合成一个集合,并在需要时重复使用:

// styles.scss

@mixin border-radius($radius) {
  border-radius: $radius;
  -webkit-border-radius: $radius;
  -moz-border-radius: $radius;
}

.button {
  @include border-radius(5px);
}

这里,@mixin定义了混合,@include使用了混合。这样可以避免在代码中多次写入相同的前缀。

6. 导入其他SCSS文件

使用@import语句可以将其他 SCSS 文件导入到当前文件中,实现代码模块化:

// styles.scss

@import "reset";
@import "variables";
@import "mixins";

7. 运算

scss 允许进行基本的数学运算:

// styles.scss

$base: 10px;
$padding: $base * 2;

.element {
  margin: $base + 5px;
  padding: $padding;
}

这样可以在样式表中进行数值计算,使得样式表更加灵活。

8. 条件语句

使用条件语句可以根据不同条件应用不同的样式:

// styles.scss

$width: 10px;

div {
  width: $width;
  height: $width;

  @if $width > 5 {
    background-color: red;
  } @else {
    background-color: blue;
  }
}

9. 循环

使用循环可以重复应用样式:

// styles.scss

@for $counter from 1 through 5 {
  .class-#{$counter} {
    width: $counter * 10px;
  }
}

这个例子中,通过循环生成了带有不同宽度的 CSS 类。

10. 注释

使用注释来增强代码的可读性:

// styles.scss

// This is a single-line comment

/* 
  This is a
  multi-line comment
*/

$primary-color: #3498db;

body {
  background-color: $primary-color;
}

11.编译

执行sass命令使其index.scss生成对应index.css

在终端执行该命令 sass sass.scss css/index.css

会将当前目录的index.scss 文件编译到css文件夹下,编译为对应css文件

也会生成对应.map文件,这个文件是用来干嘛的?

.map文件是一个json格式的文件,可以直接在浏览器中调试sass源文件。

每次修改index.scss文件都要执行命令进行编译有点麻烦
sass提供watch参数用于侦听某个scss文件以及文件夹

在终端执行该命令sass --watch sass.scss:css/index.css

这是一个更为详细的 SCSS 预处理器教程,涵盖了基础语法、变量、嵌套、混合、导入、运算、条件语句、循环等内容。希望对你的 SCSS 学习有所帮助!如果有其他问题,随时问我。

相关推荐
学代码的小前端1 小时前
0基础学前端-----CSS DAY9
前端·css
唯之为之11 小时前
巧用mask属性创建一个纯CSS图标库
css·svg
Elena_Lucky_baby12 小时前
sass、scss、less、的区别
less·sass·scss
寻找沙漠的人13 小时前
前端知识补充—CSS
前端·css
NoneCoder16 小时前
CSS系列(29)-- Scroll Snap详解
前端·css
无言非影16 小时前
vtie项目中使用到了TailwindCSS,如何打包成一个单独的CSS文件(优化、压缩)
前端·css
羊小猪~~17 小时前
前端入门之VUE--ajax、vuex、router,最后的前端总结
前端·javascript·css·vue.js·vscode·ajax·html5
前端Hardy21 小时前
HTML&CSS:酷炫的3D开关控件
前端·javascript·css·3d·html
devotemyself1 天前
vue的ElMessage的css样式不生效
前端·css·vue.js
noravinsc1 天前
css代码加密
前端·css·tensorflow