饥人谷技术博客

SCSS-1的简单介绍

2019-01-13  本文已影响9人  学的会的前端

前期准备

软件使用:

  1. npm init -y
  2. npm i -D parcel
    如果安装过程出错,百度错误处理方法

Sass特色:

Scss和Sass的区别:

  1. 兼容 CSS 语法:Sass 完全兼容各个版本的 CSS 语法,对语法兼容的把控严格,可以放心的使用任何现有的 CSS 库。
  2. 功能丰富:Sass 比其他 CSS 扩展语言具有更多的功能和特性。Sass 虽然一直被追赶,但从未被超越。
  3. 稳定成熟:Sass2007年发表,2016年成熟。
  4. 久经考验:多次实验证明,Sass 是业界的首选 CSS 扩展语言。
  5. 广泛的社区:数家企业和数百位开发者在为 Sass 提供支持。
  6. 前端框架的基石:无数前端框架由 Sass 构建:CompassBourbonSusy 等。
  1. Sass不使用花括号,而是通过缩排的方式来表达选择符的嵌套层级,而且也不使用分号,而是用换行符来分隔属性。
#sidebar
  width: 30%
  background-color: #faa
  1. SCSS 需要使用分号和花括号而不是换行和缩进。
#sidebar {
  width: 30%;
  background-color: #faa;
}
  1. SCSS 对空白符号不敏感,所以以上代码也可以写成下面的形式:
#sidebar {width: 30%; background-color: #faa}
# 将 Sass 转换为 SCSS
$ sass-convert style.sass style.scss

# 将 SCSS 转换为 Sass
$ sass-convert style.scss style.sass

sass-嵌套选择器:选择器里面在写选择器,和顺序无关

.nav {
    border: 1px solid green;
    > ul {
        background: white;
        >li {
            border: 1px solid red;
        }
    }
}

sass-变量:便于修改,还可以使不同的变量是同一个值。

$grey: #666;
$gray: $grey;
.nav {
    border: 1px solid $gray;
    > ul {
        background: white;
        >li {
            border: 1px solid $grey;
        }
    }
}

sass-mixin:设置@mixin debug(可以为空){} ----引用@include debug(){}

$border-width: 1px;
@mixin debug {
    border: 1px solid red;
    background: $grey;//可以添加多个样式
}
.nav {
    @include debug;
    > ul {
        background: white;
        >li {
            @include debug;
        }
    }
}
@mixin debug($border-color) {
    border: 1px solid $border-color;
    background: $grey;
}
.nav {
    @include debug(red);
    > ul {
        background: white;
        >li {
            @include debug(green);//传递的参数不同
        }
    }
}
@mixin debug($border-color:red) {
    border: 1px solid $border-color;
    background: $grey;
}
.nav {
    @include debug;//有传入的默认red。
    > ul {
        background: white;
        >li {
            @include debug(green);
        }
    }
}

%---placeholder:设置%box{}---引用@extend %box;

不拷贝样式,只是把选择器移到代码的前面

  <div class="nav">
      <ul>
          <li>1</li>
          <li>2</li>
          <li>3</li>
      </ul>
  </div>
  <div class="demo"></div>

若果想让demo和nav有相同的样式,可以采用mixin方法,但是实际只是减少了手写代码,CSS解析时没有减少

@mixin box {
    box-shadow: 0 0 3px black;
            margin: 10px;
            background: white;
            border-radius: 10px;
}
.nav {
   
    > ul {
        background: white;
        border: $grey;
        >li {
            @include box;
        }
    }
}
.demo{
    width: 100px;
    height: 100px;
    @include box;
}
TIM图片20190112210634.png

所以可以采用以下方法:

%box {
    box-shadow: 0 0 3px black;
            margin: 10px;
            background: white;
            border-radius: 10px;
}
.nav {
    > ul {
        background: white;
        border: $grey;
        >li {
            @extend %box;
        }
    }
}
.demo{
    width: 100px;
    height: 100px;
    @extend %box;
}

通过这种方法。CSS只是解析了一次


TIM图片20190112210931.png

@mixin和%(placeholder)的区别:

上一篇 下一篇

猜你喜欢

热点阅读