SASS基本语法总结

SASS是CSS预处理器,简单来说,SASS是比CSS更高一级的语言,它拥有CSS不具备的语法,比如if条件控制

SASS的预处理器

SASS是一种无法被浏览器直接执行的语言,我们需要通过预处理工具(可以理解为翻译工具),把SASS文件转化为CSS文件,预处理工具有很多,最推荐的方法的就是VScode的插件Easy SASS的方法,也可用webpack的插件sass-loader。

SASS基本语法
嵌套规则(Nested Rules)
SASS用缩进来简写嵌套结构

#main p {
   
    color: #00ff00;
    width:97%;

    /*嵌套后生成#main p .redbox*/
    .redbox {
   
        background-color:red;
        color:#000;
    }
}

父选择器引用(Referencing Parent Selectors: &)
&代表父选择器简写

a {
   
    font-size:12px;
    &:hover {
   color: red;}  //生成a:hover
    .firebox & {
   color:black} //生成.firebox a
}

/* 多层嵌套 */

h1 {
   
    color:blue;
    p {
   
        color:red;
        & a {
      //生成h1 p a
            color:yellow 
        }
    }
}

/*&规则:必须为前缀,可以加后缀 */

.main {
   

    &-head {
     //生成.main-head

    }
}

父选择器 & 被作为一个后缀的时候,Sass 将抛出一个错误。
属性的嵌套( Nested Properties)
这部分用的很少,但是也算个功能

.funky {
   
    font:{
   
        size:12px;   //生成font-size
        family:fatasy;  //生成font-family
    }
}

变量
//变量的声明
$width:5em;
$width:5em !global //全局声明,普通声明只在当前{}下有用

//变量的使用
width: w i d t h ; 变量名下划线和横杠互用, m a i n − h e a d 和 m a i n h e a d 默认相等,变量名必须是 width; 变量名下划线和横杠互用,main-head和main_head默认相等, 变量名必须是 width;变量名下划线和横杠互用,mainheadmainhead默认相等,变量名必须是开头
变量的数据类型
字符串
数字(数值保留单位)
颜色
布尔值
空值
值列表(数组)
maps(键值对)
变量默认符 !default
!default赋值的变量,如果已被赋值,则使用原值,否则使用新值

$name = 1em;
$name = 2em !default; //已被赋值1em,使用原值1em
插值语法#{}
插值语法常常是用来避免sass运算的,保证其内容为纯css内容

KaTeX parse error: Expected 'EOF', got '#' at position 14: name:'foo' p.#̲{ name} { //p.foo
}
运算符
加减乘除±*/
分割符/属性替代表示: #{ KaTeX parse error: Expected 'EOF', got '}' at position 8: number1}̲/#{ number2}
-用作减法规则:number1 - number2前后带空格,(number1-number2)加括号,或者-number-前加空格后加数字
+可拼接字符串
布尔运算支持and,or,not
支持颜色运算,支持括号,不支持数组运算
函数
sassscript定义了部分可直接使用的函数 函数列表

//使用函数

p {
   
    color:hsl(100%,10%,0)
}

关键字参数
关键字参数是对函数参数的命名,除了方便阅读没有任何作用

p {
   
    color:hsl($light:100%,$darkness:10%,$hue:0)
}

css3 @规则
@import 引入外部样式表
@import “foo.sass”;

//如果不带后缀会搜索.sass和.scss后缀文件

@import “foo”,“tools”; //import多个
@media 媒体查询样式

.sidebar {
   
    width:100px;
    @media ....... {
      //@media会冒泡到顶端
        width:200px;
    }
}

@extend 继承类

.nav {
   
    display:block;
    font-size:12px
}
.nav-small{
   
    @extend .nav  //继承.nav所有样式
    color:black;
}

//继承css默认样式
@extend a:hover;

//!optional标记(找不到不会报错)
@at-root
将嵌套的层提到父层

@debug,@warn,#error
将结果输出到控制台

控制指令和表达式
条件语句 if( )
//语法
if(布尔值,值1,值2)

if(true,1px,2px) //1px
@if

p {
   
    @if 1+1 == 2 {
   
        color:red;
    }
    @if 1+1 == 3 {
   
        color:blue;
    }
}

@if,@else if,@else

p {
   
    @if  {
   }
    @else if{
   }
    @to
    }
}

@for的两种形式
@for $var from through
@for v a r f r o m = = t o = = 循环中的参数 var from ==to== 循环中的参数 varfrom==to==循环中的参数name,不运算#{$name}

@for KaTeX parse error: Expected '}', got '#' at position 32: … 3 { .item-#̲{ i} {width:2em*$i;}
}
@each循环
@each $var in

@each v a r 1 , var1, var1,var2…in <多维list or map>

@while

$i:0;
  @while $i<5 {
   
      .item-#{$i} {
   
          width:2em*$i;
      }
      $i : $i+1;
  }

混入样式@mixin
SASS可以指定一个自定义的样式

//定义一个混入样式
@

mixin mixinname{
   
    display:block;
    color:white;
}

//引入混入样式
body {
@include mixinname
}

//带参数的引入样式

@mixin mixinname ($para1,$para2){
   
    display:block;
    color:white;
}

body {
   
    @include mixname(2px,$value2) //可引入直接值和变量
}

//关键字参数(就是给参数起变量名,用于方便阅读)
body {
@include mixname( c o l o r : b l u e , color:blue, color:blue,size:3) //
}

//可变参数…(参数数目可变)
@mixin mixinname($para…){ //参数后面加…
}
@content 内容混入
SASS可以自定义内容,并引入

//定义一个自定义内容name

@mixin name{
   
    @content
}

p {
   
    include name {
      //引入自定义内容name
        ..... //content
    }
}

函数指令
SASS可以声明函数

@function func_name ($para){
   
    @return $para*2
}

//使用

p {
   
    width: func_name(5);
 }

相关推荐

  1. SASS基本语法总结

    2023-12-06 07:26:03       42 阅读
  2. SASS语法基础

    2023-12-06 07:26:03       8 阅读
  3. Sass的简单总结

    2023-12-06 07:26:03       8 阅读
  4. Sass(Scss)、Less的区别与选择 + 基本使用

    2023-12-06 07:26:03       34 阅读
  5. SASS基础知识

    2023-12-06 07:26:03       10 阅读
  6. Sass有哪些基本功能?

    2023-12-06 07:26:03       6 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 07:26:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 07:26:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 07:26:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 07:26:03       20 阅读

热门阅读

  1. 学习kafka

    2023-12-06 07:26:03       42 阅读
  2. 【超全】React学习笔记 上:基础使用与脚手架

    2023-12-06 07:26:03       127 阅读
  3. 软件工程 课堂测验 简答

    2023-12-06 07:26:03       30 阅读
  4. MySQL一 | SQL语句

    2023-12-06 07:26:03       44 阅读
  5. 软件工程(十)

    2023-12-06 07:26:03       34 阅读
  6. 软件工程 复习笔记

    2023-12-06 07:26:03       30 阅读
  7. 第18关 K8s数据安全无忧——持久化存储详解

    2023-12-06 07:26:03       72 阅读
  8. Ubuntu22 安装 mysql5.7 过程记录

    2023-12-06 07:26:03       39 阅读
  9. Redis使用Lua脚本

    2023-12-06 07:26:03       45 阅读
  10. ubuntu 修改系统时间,解决更新软件报错问题

    2023-12-06 07:26:03       46 阅读
  11. Flink入门之DataStream API及kafka消费者

    2023-12-06 07:26:03       37 阅读