最近研究了一下sass和scss,清晰结构化,在某些地方的确强大,所以写了一篇入门教程,大概15分钟左右就能明白基本原理

什么是sass(css预处理器)

Sass官网上是这样描述sass的,sass是一门高于css的元语言,他能用来清晰地,结构化的描述文件样式,有着比普通css功能更加强大的功能,sass能提供更简洁,更优雅的语法,同时提供多种功能来穿件可维护和管理的样式表.

SASS 和 SCSS 有什么区别?

文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名

语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。

命令编译:

sass <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css

单文件监听命令

sass --watch style.scss:style.css

GUI工具编译

自动化编译gulp

不同样式风格的输出方法

sass --watch style.scss:style.css --style compact

嵌套输出方式 nested

展开输出方式 expanded

紧凑输出方式 compact

压缩输出方式 compressed

$变量

普通变量

默认变量

$color:#ccc;
$color:#000 !default;

特殊变量(一般我们定义的变量都为属性值,可直接使用,但是如果变量作为属性或在某些特殊情况下等则必须要以#{$variables}形式使用。)

1.应用于class和属性

2.应用于复杂的属性值

嵌套

选择器嵌套

属性嵌套

伪类嵌套

例:hover

a{
  color: #ff0000;
  &:hover{
    color: green;
  }
}

需要在:hover前加&,不然选择的是a里面的元素hover

混合宏 @mixin 引用  @include

1、声明混合宏

@mixin border($color1,$color2){
  border:1px solid $color1;
  border-radius: 5px;
  box-shadow: 4px 5px 3px 5px $color2;
}

2、调用混合宏

.aa{
  width: 200px;
  height: 200px;
  @include border();
}

3、混合宏的参数   传一个不带值的参数  如上图的$color1,$color2

4、混合宏的参数   传带值的参数 (默认值)  可以在$color1,$color2后面加默认值,如($color1:#ccc,$color2:#ddd)

Eg:

@mixin css3($attr,$val){
  -webkit-#{$attr}:$val;
  -moz-#{$attr}:$val;
  -ms-#{$attr}:$val;
  -o-#{$attr}:$val;
  #{$attr}:$val;
}
.bb{
  @include css3(border-radius,10px);
}

继承 @extend

.ee{
  width: 200px;
  height: 300px;
  @extend .bb;
}

占位符 %placeholder   @extend

%ff{
  width: 200px;
  height: 200px;
}
.g{
  @extend %ff;
}

只有在引入后占位符的样式才会生效

@import  引入另一个scss文件,一般引入公共样式

自定义函数@function

@function add($a,$b){
  @return $a+$b;
}
.k{
  width: add(200px,300px);
}

sass具有运算的特性,可以对数值型的Value(如:数字、颜色、变量等)进行加减乘除四则运算。

数据类型Data Type

Sass -i   type-of()

1. 数字: 如,1、 2、 13、 10px;

2. 字符串:有引号字符串或无引号字符串,如,”foo"、 'bar'、 baz;

3. 颜色:如,blue、 #04a3f9、 rgba(255,0,0,0.5);

4. 布尔型:如,true、 false;

5. 空值:如,null;

6. 值列表:用空格或者逗号分开,如,1.5em 1em 0 2em。

函数

1. 数字函数: abs()、round()、ceil()、floor()

2. 字符串函数:to-upper-case()、to-lower-case()、str-length()、str-index()

3. 颜色:rgb()、lighten()、darken()

4. 值列表:length()、nth()、index()、append()、join()

注释

注释对于一名程序员来说,是极其重要,良好的注释能帮助自己或者别人阅读源码。在 Sass 中注释有两种方式:

1、类似 CSS 的注释方式,使用 ”/*  */ ”

2、类似 JavaScript 的注释方式,使用“//”

两者区别,前者会在编译出来的 CSS 显示,后者在编译出来的 CSS 中不会显示,

Sass的控制命令

1. @if

三目判断语法为:if($condition, $if_true, $if_false)

2. @for循环

@for $i from <start> through <end>

@for $i from <start> to <end>

3. @while循环

4. @each循环

@each $var in <list>

sass.scss简单入门的更多相关文章

  1. Sass介绍及入门教程

    Sass是什么? Sass是"Syntactically Awesome StyleSheets"的简称.那么他是什么?其实没有必要太过于纠结,只要知道他是“CSS预处理器”中的一 ...

  2. CSS预处理器 Less Sass,Scss 编译 Sourcemap调试

    sass.less和stylus的安装使用和入门实践     SASS用法指南    Sass Basics CSS预处理器 css preprocessor 预处理器即preprocessor,预处 ...

  3. SCSS快速入门

    SCSS快速入门 1. 使用变量sass引入了变量.通过变量名来引用它们,使用$符号来标识变量.且在CSS中并无他用,不会导致与现存或未来的css语法冲突. 1-1. 变量声明sass变量的声明和cs ...

  4. sass/scss 和 less的区别

    一. Sass/Scss.Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量 ...

  5. sass/scss 和 less对比

    一. Sass/Scss.Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量 ...

  6. 2019最新create-react-app创建的react中使用sass/scss,以及在react中使用sass/scss公共变量的方法

    Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hampton Catlin设计并由Natalie Weizenbaum开发的层叠样式表语言.Sas ...

  7. 用IntelliJ IDEA创建Gradle项目简单入门

    Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...

  8. [原创]MYSQL的简单入门

    MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...

  9. Okio 1.9简单入门

    Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...

随机推荐

  1. PPT中翻书动画的制作

    一.新建一个空白的PowerPoint文档.   二.制作两个页面:   1.点击“自选图形”右边的小三角,选择“基本图形”下的“折角形”图形,在PowerPoint中画出一个书页样的图形,宽度最好小 ...

  2. ionic接入广告

    一.获取Admob phonegap 广告插件(cordova 广告平台插件) 在cordova 和phonegap等html5手机应用里面展示Admob,百度移动联盟,广点通广告需要Cordova ...

  3. stm32 复位后 引起引脚的变化,输出电平引起的问题

    在做项目的时候,需要通过蓝牙发送指令给STM32,使其复位,然后进入bootloader程序进行升级,但是复位后会导致蓝牙模块关机.stm32有个引脚连接着蓝牙的开关机引脚,高电平开机,低电平关机,我 ...

  4. 网络性能测试工具Iperf/Jperf解读

    Iperf 是一个网络性能测试工具.Iperf 可以测试TCP 和UDP 带宽质量.Iperf 可以测量最大TCP 带宽,具有多种参数和UDP 特性. Iperf 可以报告带宽,延时抖动和数据包丢失. ...

  5. windows 安装 Scrapy的套路

    我最近在琢磨scrapy爬虫框架,在windows中安装scrapy遇到了不少坑:直接 pip install scrapy 安装不成功的,百度说要安装vc2008+等等,安装这些时间太长,最后找到一 ...

  6. webpack 引用 jquery + bootstrap 报错解决

    webpack 引用 jquery + bootstrap , error : jQuery is not defind 在webpack.dev.conf.js plugins[] 加入 new w ...

  7. Python入门教程(3)

    人生苦短,我学Pyhton Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于199 ...

  8. CLR查找和加载程序集的方式

    C#开发者在开发WinForm程序.Asp.Net Web(MVC)程序等,不可避免的在项目中引用许多第三方的DLL程序集, 编译后引用的dll都放在根目录下.以我个人作品 AutoProject S ...

  9. 基于C#的UDP通信(使用UdpClient实现,包含发送端和接收端)

    UDP不属于面向连接的通信,在选择使用协议的时候,选择UDP必须要谨慎.在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重.但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小, ...

  10. JAVA发送邮件的DEMO

    最近有朋友问邮件怎么发送,就简单写了个demo,因为懒得找jar包,所以项目是创建的maven工程,具体的maven引用的jar如下: <dependency> <groupId&g ...