• Sass/Scss 入门不慌


    目录

    1. 变量声明

    2.嵌套选择器 

    3.嵌套中的父级选择器

    4.嵌套组合选择器

    5.嵌套属性

    6.注释

    7.使用SASS部分文件

    8.默认变量值

    9.混合器(函数)

    9.1 声明一个函数

    9.2 给混合器传参

    9.2 设置混合器的默认值

    10.选择器继承

    11.操作符


     所有 CSS3 语法在 SCSS 中都是通用的

    Sass / Scss 区别

    1. 变量声明

    $highlight-color: #F90;

    ⚠️注意:SCSS中变量名使用中划线或下划线都是指向同一变量的!!

    $highlight-color: #F90;

    $highlight_color: #890;

    最终生效值为#890


    ⚠️注意:css变量定义!!

    • 规则块外定义===全局变量===可全局使用
    • 规则块内定义===局部变量===只可规则块内使用

     举例:

    1. $nav-color: #F90; // 规则块外
    2. nav {
    3. $width: 100px; // 规则块内
    4. width: $width;
    5. color: $nav-color;
    6. }
    7. //编译后
    8. nav {
    9. width: 100px;
    10. color: #F90;
    11. }

    2.嵌套选择器 

    1. nav, aside {
    2. a {color: blue}
    3. }
    4. // 编译后:
    5. nav a, aside a {color: blue}

    3.嵌套中的父级选择器

    SCSS提供了一个选择器可以选中当前元素的父元素,使用&表示

    ⚠️注意:只能在嵌套内部使用父级选择器(&),否则SCSS找不到父级元素会直接报错

    1. /*scss*/
    2. .container ul {
    3. &:after {
    4. display:block;
    5. content:"";
    6. clear:both;
    7. }
    8. }
    9. // 编译后
    10. .container ul:after {
    11. display:block;
    12. content:"";
    13. clear:both;
    14. }

    4.嵌套组合选择器

    在嵌套规则中可以写任何css代码,包括群组选择器(,),子代选择器(>),同层相邻组合选择器(+)、同层全体组合选择器(~)等等

    1. article {
    2. ~ article { border-top: 1px dashed #ccc }
    3. > section { background: #eee }
    4. dl > {
    5. dt { color: #333 }
    6. dd { color: #555 }
    7. }
    8. nav + & { margin-top: 0 }
    9. }
    10. // 编译后:
    11. article ~ article { border-top: 1px dashed #ccc }
    12. article > footer { background: #eee }
    13. article dl > dt { color: #333 }
    14. article dl > dd { color: #555 }
    15. nav + article { margin-top: 0 }

    5.嵌套属性

    嵌套属性的规则是这样的:把属性名从中划线-的地方断开,在根属性后边添加一个冒号:,紧跟一个{ }块,把子属性部分写在这个{ }块中

    1. nav {
    2. border: 1px solid #ccc {
    3. left: 0px;
    4. right: 0px;
    5. }
    6. }
    7. // 编译后
    8. nav {
    9. border: 1px solid #ccc;
    10. border-left: 0px;
    11. border-right: 0px;
    12. }

    6.注释

    SCSS中的注释有两种

    (1)/*注释*/:这种注释会被保留到编译后的css文件中。

    (2)//注释:这种注释不会被保留到编译后生成的css文件中。

    7.使用SASS部分文件

    局部文件:专门为@import命令而编写的sass文件,并不需要生成对应的独立css文件,这样的sass文件称为局部文件

    sass局部文件的文件名以下划线开头,这样 sass就不会在编译时单独编译这个文件输出css,而只把这个文件用作导入 (eg: _night-sky.scss)

    1. // 当前是a.scss文件
    2. @import "themes/_night-sky.scss";// 局部文件
    3. @import "themes/night-sky";
    4. // 两者上述作用相同,都是引入sass局部文件
    5. //导入后,就可使用_night-sky中的变量

    8.默认变量值

    !default 仅用于变量

    含义是:如果这个变量被声明赋值了,那就用它声明的值,否则就用这个默认值

    1. // scss
    2. $fancybox-width: 400px !default;
    3. .fancybox {
    4. width: $fancybox-width;
    5. }

    9.混合器(函数)

    使用混合器把样式中的通用样式抽离出来,然后轻松地在其他地方重用

    (判断一组属性是否应该组合成一个混合器,一条经验法则就是你能否为这个混合器想出一个好的名字。如果你能找到一个很好的短名字来描述这些属性修饰的样式,比如rounded-cornersfancy-font或者no-bullets,那么往往能够构造一个合适的混合器。如果你找不到,这时候构造一个混合器可能并不合适)

    9.1 声明一个函数

    混合器使用@mixin标识符定义

    1. @mixin rounded-corners {
    2. -moz-border-radius: 5px;
    3. -webkit-border-radius: 5px;
    4. border-radius: 5px;
    5. }
    6. //使用函数的关键字为@include
    7. .notice {
    8. background-color: green;
    9. border: 2px solid #00aa00;
    10. @include rounded-corners;
    11. }
    12. //编译后:
    13. .notice {
    14. background-color: green;
    15. border: 2px solid #00aa00;
    16. -moz-border-radius: 5px;
    17. -webkit-border-radius: 5px;
    18. border-radius: 5px;
    19. }

    9.2 给混合器传参

    可以通过@include混合器时给混合器传参,来定制混合器生成的精确样式

    // 第一种传参形式:需要确定参数顺序

    // 第二种传参形式:通过语法$name: value的形式指定每个参数的值。 无需确定参数顺序,只要保证不漏掉参数就可以

    1. @mixin link-colors($normal, $hover, $visited) {
    2. color: $normal;
    3. &:hover { color: $hover; }
    4. &:visited { color: $visited; }
    5. }
    6. // @include时,给混合器传参
    7. // 第一种传参形式:需要确定参数顺序
    8. a {
    9. @include link-colors(blue, red, green); // 需要确定参数顺序
    10. }
    11. // 第二种传参形式: 无需确定参数顺序,只要保证不漏掉参数就可以
    12. a {
    13. @include link-colors(
    14. $normal: blue, // 通过语法$name: value的形式指定每个参数的值
    15. $visited: green,
    16. $hover: red
    17. );
    18. }
    19. //Sass最终生成的是:
    20. a { color: blue; }
    21. a:hover { color: red; }
    22. a:visited { color: green; }

    9.2 设置混合器的默认值

    1. @mixin get-border-radius($border-radius:5px,$color:red){
    2. -moz-border-radius: $border-radius;
    3. -webkit-border-radius: $border-radius;
    4. border-radius: $border-radius;
    5. color:$color;
    6. }

    10.选择器继承

    选择器继承是说一个选择器可以继承为另一个选择器定义的所有样式

    通过@extend语法实现继承

    1. //通过选择器继承继承样式
    2. .error {
    3. border: 1px solid red;
    4. background-color: #fdd;
    5. }
    6. .seriousError {
    7. @extend .error;
    8. border-width: 3px;
    9. }
    10. // 注意:.seriousError将会继承样式表中任何位置处为.error定义的所有样式
    11. // 任何位置处

    11.操作符

    SCSS提供了标准的算术运算符,例如+、-、*、/、%

    1. /*SCSS*/
    2. width: 600px / 960px * 100%;
    3. /*编译后的CSS*/
    4. width: 62.5%;

    参考文章:

    Sass基础教程 Sass快速入门 Sass中文手册 | Sass中文网

    scss快速入门 - 掘金

  • 相关阅读:
    Golang 协程池 Ants 实现原理,附详细的图文说明和代码
    文件管理 如何操作复制前删除原先目标文件夹中的文件
    LiDAR点云转换到大地坐标系——简单粗标定
    Python变强有这70个项目就够了,一定要收藏
    【笔试题】【day21】
    SpringBoot项目把Mysql从5.7升级到8.0
    springboot2.0+springcloud 版本冲突解决方案
    [Ubuntu]ssh: unrecognized service
    低代码+BPM+KM于一体的软件开发平台
    vue新一代状态管理插件Pinia
  • 原文地址:https://blog.csdn.net/q1ngqingsky/article/details/125905595