一、变量声明 $

  变量的声明使用 $  所有的变量必须声明到变量调用之前

  从3.4版本开始,Sass已经可以正确处理作用域的概念
      在局部范围声明一个已经存在于全局内的变量时,局部变量就会成为全局变量的影子。局部变量只会在局部范围内覆盖全局变量。
    

$btn-primary-color:#000;

   定义默认变量 !default 
      如果有重名变量,则不管声明是否在默认变量之前,都将覆盖默认变量

 $btn-primary-color:#000;
$btn-primary-color:#fff !default;//加上 !default 表示默认值
$btn-primary-border:darken($btn-primary-color,5%); body {
color:$btn-primary-color;
background-color:$btn-primary-border;
}

  输出为:

 body {
color: #000;
background-color: black; }

二、嵌套 写法

  1.选择器嵌套  

 nav {
a{
color:red;
header & {
color:green;
}
}
}

  输出为:

 nav a {
color: red; }
header nav a {
color: green; }

  避免选择器嵌套:
        1.选择器嵌套最大的问题是将使最终的代码难以阅读。开发者需要花费巨大精力计算不同缩进级别下的选择器具体的表现效果。
        2.选择器越具体则声明语句越冗长,而且对最近选择器的引用(&)也越频繁。在某些时候,出现混淆选择器路径和探索下一级选择器的错误率很高,这非常不值得。

  2.属性嵌套

    个人理解:选择器嵌套和属性嵌套的区别就是,属性嵌套器的属性名加":" 而属性嵌套器没有

 box {
border: { //加了:就是属性嵌套,不加就是选择器嵌套
top: 1px solid red;
bottom: 2px solid green;
}

  输出为:

 .box {
border-top: 1px solid red;
border-bottom: 2px solid green; }

  3.伪类嵌套

 clearfix {
&:before,
&:after {
content:"";
display: table;
}
&:after {
clear:both;
overflow: hidden;
}
}

  输出为:

 .clearfix:before, .clearfix:after {
content: "";
display: table; }
.clearfix:after {
clear: both;
overflow: hidden; }

三、混合宏

    给我的感觉就是这就是一个函数;可调用,可传参,返回计算后的值放到调用函数的位置

  声明混合宏 - 使用"@mixin" 声明混合宏。
      可定义参数的默认值,可定义多个参数
      一个特别的参数"..."; 当混合宏的参数过多之时,可以使用参数来替代
           示例:

 @mixin border-radius {//不带参数
-webkit-border-radius: 5px;
border-radius: 5px;
}
 /*
声明带参数的混合宏
*/
@mixin border-radius2($radius:3px) {
//调用时不传递参数则使用默认值3px;传递参数怎使用传递过来的参数
-webkit-border-radius: $radius;
border-radus: $radius;
}
 @mixin box-shadow($shadows...){
@if length($shadows)>=1 {
-webkit-box-shadow: $shadows;
box-shadow: $shadows;
} @else {
$shadows: 0 0 2px rgba(#000,.25);
-webkit-box-shadow: $shadows;
box-shadow: $shadows;
}
}

      调用混合宏 - 使用 @include
        优点:复用重复代码块
        缺点:不能智能的将相同的样式代码块合并在一起,生成冗余代码块。

  调用不带参数混合宏:

 button {
@include border-radius;
}

  输出为:

 button {
-webkit-border-radius: 5px;
border-radius: 5px; }

  调用带参数(但不传递参数)混合宏:

 button {
@include border-radius2;//使用默认值
}

  输出为:

 button {
-webkit-border-radius: 3px;
border-radus: 3px; }

  调用带参数(传递参数)混合宏:

 button {
@include border-radius2(10px);//传递值
}

  输出为:

 button {
-webkit-border-radius: 10px;
border-radus: 10px; }

  调用多参数... 的混合宏

 .box {
@include box-shadow(0 0 1px rgba(#000,.5),0 0 2px rgba(#fff,.2));
}

  输出为:

 .box {
-webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.5), 0 0 2px rgba(255, 255, 255, 0.2);
box-shadow: 0 0 1px rgba(0, 0, 0, 0.5), 0 0 2px rgba(255, 255, 255, 0.2); }

四、扩展/继承 - @extend 继承已存在的类样式块

   与要继承的类样式块,组成组合选择器

   示例:

 .btn {
border: 1px solid #ccc;
padding: 6px 10px;
font-size: 14px;
}
.btn-primary {
background-color: #f36;
color: #fff;
@extend .btn;
}
.btn-second {
background-color: orange;
color: #fff;
@extend .btn;
}

  输出为:

 .btn, .btn-primary, .btn-second {
border: 1px solid #ccc;
padding: 6px 10px;
font-size: 14px; } .btn-primary {
background-color: #f36;
color: #fff; } .btn-second {
background-color: orange;
color: #fff; }

五、占位符 %placeholder

   它可以取代以前css中的基类造成的代码冗余的情形。因为 %placeholder 声明的代码,如果不被 @extend 调用的话,不会产生任何代码。
       示例:

 %mt5 {
margin-top: 5px;
}
%pt5 {
margin-top: 5px;
} .btn {
@extend %mt5;
@extend %pt5;
}

  输出为:

 .btn, .btn-primary, .btn-second {
margin-top: 5px; } .btn, .btn-primary, .btn-second {
margin-top: 5px; }

六、插值 - #{}

  当你想设置属性值的时候你可以使用字符串插入进来,构建一个选择器。

  示例:

 $properties: (margin, padding);
@mixin set-value($side, $value){
@each $prop in $properties {
#{$prop}-#{$side}: $value;
}
}
.login-box {
@include set-value(top, 14px);
}

  输出为:

 .login-box {
margin-top: 14px;
padding-top: 14px; }

七、混合宏  扩展/继承  占位符 比较

学习 大漠老师 - Sass入门篇 笔记 http://www.w3cplus.com/

Sass 基本特性-基础 笔记的更多相关文章

  1. php代码审计基础笔记

    出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...

  2. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

  3. C#基础笔记(第十天)

    C#基础笔记(第十天) 1.字段.属性.方法.构造函数字段:存储数据属性:保护字段,对字段的取值和设值进行限定方法:描述对象的行为构造函数:初始化对象(给对象的每个属性依次的赋值)类中成员,如果不加访 ...

  4. CSS3基础——笔记+实战案例(CSS基本用法、CSS层叠性、CSS继承性)

    CSS3基础——笔记 CSS是Cascading Style Sheet的缩写,翻译为"层叠样式表" 或 "级联样式表".CSS定义如何显示HTML的标签央视, ...

  5. HTML5基础——笔记

    HTML5基础——笔记 近几年来,互联网+.大数据.云计算‘物联网‘虚拟现实‘人工智能.机器学习.移动互联网等IT相关新名词.新概念层出不穷,相关产业发展如火如荼.互联网+移动互联网已经深入到人民日常 ...

  6. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  7. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  8. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  9. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

随机推荐

  1. 新人学PHP,认为手动搭建环境而苦恼吗?这篇文章告诉你多简单!

    本教程适用于初学PHP,想了解手动搭建PHP环境的童鞋. 一键环境和高手勿喷. 本教程以下列版本软件为例: 所需软件目录 我在这里的目录结构是(个人习惯) 安装与配置 apache 双击安装Apach ...

  2. lintcode-161-旋转图像

    161-旋转图像 给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像. 样例 给出一个矩形[[1,2],[3,4]],90度顺时针旋转后,返回[[3,1],[4,2]] 挑战 能否在原地完成? 标 ...

  3. OSG数学基础:坐标系统

    坐标系是一个精确定位对象位置的框架,所有的图形变换都是基于一定的坐标系进行的. 三维坐标系总体上可以分为两大类:左手坐标系和右手坐标系. 常用的坐标系:世界坐标系.物体坐标系和摄像机坐标系. 世界坐标 ...

  4. 敏捷冲刺Day1

    前言: 之前的各种对教务系统的分析,再加上我们两三天的讨论和一个小时的站立会议,我们做出最终的决定.--我们决定换个项目主题,将原来的教务辅助系统换成现在的校园帮帮帮服务,并在之后会将完成后的计划书附 ...

  5. Vue脚手架开发使用sass

    vue默认采用的是原生的css,如果想要使用css预编译工具,比如sass,需要下载对应的scss的loader, 具体是 npm install --save-dev sass-loader npm ...

  6. C#中的unsafe

    为了保持类型安全性,默认情况下,C# 不支持指针算法. 但是,通过使用 unsafe 关键字,可以定义可在其中使用指针的不安全上下文. 有关指针的详细信息,请参阅主题指针类型. 备注 在公共语言运行时 ...

  7. VS2010中的sln,suo分别是什么含义

    我们通过双击.sln加载出我们的工程. Visual Studio.NET采用两种文件类型(.sln和.suo)来存储特定于解决方案的设置,它们总称为解决方案文件.为解决方案资源管理器提供显示管理文件 ...

  8. div、span绑定内容改变事件

    内容改变事件onchange只适用于form表单标签(input.select.textarea) 当需要对div.span标签进行内容改变监听则无法适用,查阅了一些资料发现jquery有针对的方法, ...

  9. Struts2自定义结果视图(servlet验证码)

    1.编写一个类实现com.opensymphony.xwork2.Result,或者继承org.apache.struts2.dispatcher.StrutsResultSupport 2.自定义的 ...

  10. [洛谷P3627][APIO2009]抢掠计划

    题目大意:给你一张$n(n\leqslant5\times10^5)$个点$m(m\leqslant5\times10^5)$条边的有向图,有点权,给你起点和一些可能的终点.问从起点开始,到任意一个终 ...