SCSS-1的简单介绍

前期准备

软件使用:

  • 最开始使用及配置:
  • 利用终端先创建一个文件夹,之后把文件夹拖入vscode
    我创建的是SCSSDEMO1文件


    TIM图片20190113143444.png
  • 使用箭头所指图标,创建文件


    TIM图片20190113143543.png
  • 创建好两个文件,一个.html文件,一个.scss文件


    TIM图片20190113143808.png
  • 在.html文件中写!之后按tab键。


    TIM图片20190113144032.png
  • 在1.scss中写入类CSS样式,刚开始加载是没有效果的。
  • 点击view-terminal进入终端


    TIM图片20190113144222.png
  • 利用http-server . -c-1获取http协议,在浏览器上预览。
    TIM图片20190113145320.png
  • 要想样.scss文件中的样式生效,一定要先安装parcel,安装步骤
  1. npm init -y
  2. npm i -D parcel
    如果安装过程出错,百度错误处理方法
  • Parcel 是 Web 应用打包工具,适用于经验不同的开发者。它利用多核处理提供了极快的速度,并且不需要任何配置。
  • 之后利用命令行npx parcel index.html就可以把.scss转换成css。
    TIM图片20190113145219.png
  • 利用这个命令行会得到http协议,利用网址预览就可以了。
    TIM图片20190113150856.png

    一定要先安装parcel,是http-server . -c-1中间有一个.和Gitbase的不一样。一定要在.html文件中引入.scss文件。
  • html文件中引入scss文件
    <link rel = "stylesheet" href = "./1.scss">

Sass特色:

  • 完全兼容 CSS3
  • 在 CSS 语言基础上添加了扩展功能,比如变量、嵌套 (nesting)、混合 (mixin)
  • 对颜色和其它值进行操作的{Sass::Script::Functions 函数}
  • 函数库控制指令之类的高级功能
  • 良好的格式,可对输出格式进行定制
  • 支持 Firebug

Scss和Sass的区别:

  • Sass( 英文全称:Syntactically Awesome Stylesheets)
    Sass 是对 CSS 的扩展,让 CSS 语言更强大、优雅。 它允许你使用变量嵌套规则mixins导入等众多功能, 并且完全兼容 CSS 语法。 Sass 有助于保持大型样式表结构良好, 同时也让你能够快速开始小型项目, 特别是在搭配 Compass 样式库一同使用时。
    优点:
  1. 兼容 CSS 语法:Sass 完全兼容各个版本的 CSS 语法,对语法兼容的把控严格,可以放心的使用任何现有的 CSS 库。
  2. 功能丰富:Sass 比其他 CSS 扩展语言具有更多的功能和特性。Sass 虽然一直被追赶,但从未被超越。
  3. 稳定成熟:Sass2007年发表,2016年成熟。
  4. 久经考验:多次实验证明,Sass 是业界的首选 CSS 扩展语言。
  5. 广泛的社区:数家企业和数百位开发者在为 Sass 提供支持。
  6. 前端框架的基石:无数前端框架由 Sass 构建:CompassBourbonSusy 等。
  • Scss(Sassy CSS)的介绍:
    Scss 是 Sass 3 引入的新语法,其语法完全兼容 CSS3,并且继承了 Sass 的强大功能。也就是说,任何标准的 CSS3 样式表都是具有相同语义的有效的SCSS 文件。另外,SCSS 还能识别大部分 CSS hacks(一些 CSS 小技巧)和特定于浏览器的语法。
  • Sass的语法:
    Sass 有两种语法:第一种被称为 SCSS (Sassy CSS);第二种比较老的语法称为缩排语法(或者就称为 "Sass"), 提供了一种更简洁的 CSS 书写方式。
  • 使用:
    Sass 有三种使用方式: 命令行工具、独立的 Ruby 模块,以及包含 Ruby on Rails 和 Merb 作为支持 Rack 的框架的插件。
  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-convert 命令行工具,就可以将一种语法转换为另一种语法:
# 将 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可以认为是一个函数,可以传递一个参数
@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)的区别:

  • @mixin可以传递参数,而%不行;
  • @mixin的调用方式是@include,而%的调用方式是@extend;
  • @include产生的样式是以复制拷贝的方式存在的,而@extend产生的样式是以组合申明的方式存在的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 早上,老婆做了饭,来叫我起床。 老婆说,昨天让你干活,你说行,没事,放心!结果啥也没干。 我说,答应得痛快也不错。...
    神飞扬阅读 207评论 0 0
  • 今天为大家讲解锦囊26,巧用手势动画制作页眉gif! Step 1:素材制作 1⃣️调整幻灯片大小:【设计】-【幻...
    G187王圣阅读 1,172评论 0 1
  • 接下来是坚持邀约,坚持分享,坚持分店主鼓励。 特约,远还是不远,我也不知道。 在黑马没出现之前就把自己变成黑马吧。...
    温木暖晴阅读 99评论 0 0
  • 宝贝果果的降临,给了我莫大的勇气,也让90后的我对生活有了新的定义。 负重前行。不悔前行。努力绽...
    阿布十月阅读 140评论 0 1
  • 1. 今天北京空中管制,飞机比原计划晚两个小时到达机场,匆匆忙忙出来,直奔机场大巴售票处了,就怕没车。 去到售票处...
    帅帅的厨男子阅读 435评论 0 0