变量 、嵌套、Mixin混合、function函数、插值

变量及文件导入

通过$定义变量

$white:#fff;
$black:#000;

变量引用

.containner{
color:$black;
}

通常我们会单独创建一个局部scss文件来定义这些变量 例如 _varables.scss

varables前面的下划线用来区分这是局部文件,不会生成对应的css文件,通过@import方式在其他文件中导入该文件(下划线可以省略)

@import 'varables';

嵌套

例如我们有这样一个html结构

<div class="containner">
<div class="banner"></div>
</div>

使用嵌套语法可以写成:

.containner{
background: #eee;
color:$black;
.banner{
background: red;
}
}

最后编译成css:

.containner {
background: #eee;
color: #000; }
.containner .banner {
background: red; }

高级用法

&、>、+、~

使用&符合使得区分元素不以后代选择器的方式连接,例如链接使用到的hover效果

a{
color:red;
&:hover{
color:blue;
}
}

编译后

.containner a:hover {
color: blue; }

mixin混合

如果我们有多个地方使用到相同的样式,我们就可以将其写成一个mixin方法,然后在不同的地方去使用它

一般通过@mixin来定义一个函数,@include来引用

例如定义一个用于清除浮动的mixin方法

 @mixin clearfix() {
&::after {
display: block;
clear: both;
content: "";
}
}

我们就可以这样使用

.list{
list-style: none;
@include clearfix();
.item{
float: left;
}
}

mixin方法传参

类似JavaScript函数我们可以传递参数

@mixin colorlink($normal, $hover, $visited){
color: $normal;
&:hover { color: $hover; }
&:visited { color: $visited; }
}

使用

@include colorlink(blue,red,green);

也可以使用这种方式,不用区分参数顺序

@include colorlink(
$normal: blue,
$visited: green,
$hover: red
);

设置默认参数值

通过以下方式来这是默认参数值

@mixin size($size:50px){
font-size: $size;
}

调用的时候我们可以根据需求来决定是否传递参数

.title{
// @include size();
@include size(20px);
}

@fuction和@mixin

区别:

  • sass本身就有一些内置的函数,方便我们调用,如强大的color函数,还有darken、rgba、ie-hex-str、percentage、lighten、length、nth、unit、unitless等
  • 其次就是它返回的是一个值,而不是一段css样式代码什么的

内置函数

1、rgba

rgba(blue, 0.2) => rgba(0, 0, 255, 0.2)

2、percentage

将一个没有单位的数字转成百分比形式

percentage(0.2) => 20%

通过@function来自定义函数

// px转em
@function pxToEm($px, $base: 16) {
@return ($px / $base) * 1em;
}

调用

p{
font-size:pxToEm(20);
}

解析

p{
font-size: 1.25em;
}

其他

1、插值语句 #{}

通过 #{} 插值语句可以在选择器或属性名中使用变量:

$name: foo;
$attr: border;
p.#{$name} {
#{$attr}-color: blue;
}

生成

p.foo {
border-color: blue; }

2、使用@for指令输出重复格式内容

@for $i from 1 through 28
{
.bg-#{$i}
{
background: url(brand_day_review#{$i}.jpg) no-repeat center / 1560px auto;
}
}

生成

.containner .bg-1 {
background: url(brand_day_review1.jpg) no-repeat center/1560px auto; }
.containner .bg-2 {
background: url(brand_day_review2.jpg) no-repeat center/1560px auto; }
.containner .bg-3 {
background: url(brand_day_review3.jpg) no-repeat center/1560px auto; }
.containner .bg-4 {
background: url(brand_day_review4.jpg) no-repeat center/1560px auto; }
.containner .bg-5 {
background: url(brand_day_review5.jpg) no-repeat center/1560px auto; }

除了@for,其他的还有@if 、@each、@while等,这些都属于控制指令

参考阅读

sass中文网

组织你的Sass文件

sass揭秘之@mixin,%,@function

Sass基础——Rem与Px的转换

Scss预处理器的使用总结的更多相关文章

  1. CSS预处理器Sass(Scss)、Less、Stylus

    CSS 预处理编译器能让我成程序化其的方式编写CSS代码,可以引入CSS中没有的变量.条件.函数等特性,从而让代码更简单易维护,但一般按预处理器语法编写的代码无法直接在浏览器中运行,需用通过工具比如g ...

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

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

  3. Vue-cli 3.0 使用Sass Scss Less预处理器

    项目中使用预处理器,可以有效减少css代码量,使用Sass||Scss||Less; 预处理器 你可以在创建项目的时候选择预处理器 (Sass/Less/Stylus).如果当时没有选好, 内置的 w ...

  4. 前端CSS预处理器Sass

    前面的话   "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...

  5. css预处理器sass使用教程(多图预警)

    css预处理器赋予了css动态语言的特性,如变量.函数.运算.继承.嵌套等,有助于更好地组织管理样式文件,以及更高效地开发项目.css预处理器可以更方便的维护和管理css代码,让整个网页变得更加灵活可 ...

  6. 关于前端CSS预处理器Sass的小知识!

    前面的话   "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...

  7. CSS预处理器Sass、LESS 和 Stylus

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...

  8. 为您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...

  9. css的一种预处理器 sass

    之前觉得关于css什么的没什么,后来让别人给问住了...然后就悲催了... sass是一种css的预处理器,是一种函数式的css的编程: 主要还是看官网 http://www.w3cplus.com/ ...

随机推荐

  1. 设置yum源:

    1.企业    阿里开源镜像站:   http://mirrors.aliyun.com/ 搜狐开源镜像站: http://mirrors.sohu.com/ 网易开源镜像站: http://mirr ...

  2. spss汉化详解

    今天写一下关于SPSS的汉化以及激活码 下载spss: 安装过程比较简单,主要就是激活码: 9DNCAF2O3QVDV7FBIO696OO6GWLNXZPPRYTPWF2PPX7C8T6Y24LMVV ...

  3. 本周新学的 GUI绘图技术

    作者语录:"终于学到绘图了 看到这种有图案的心情美丽多了  希望自己可以越学越多 越学越好" 本次就不用图片展示效果了,纯文字. 1.Graphics类概述 画图时我们都需要拥有一 ...

  4. CSS3实例分享之多重背景的实现(Multiple backgrounds)

    CSS3的诞生为我们解决了这一问题,在CSS3里,通过background-image或者background可以为一个容器设置多张背景图像,也就是说可以把不同背景图象只放到一个块元素里. 首先我们来 ...

  5. 记一次产品需求:图片等比缩放和CSS自适应布局16:9

    前言 前阵子,产品跑过来问我现有的模板中没有图片模板,需要添加一个图片模板:然而,他要求图片在展示区最好能够实现随着窗口的变化而自动按图片比例等比缩放,并且居中展示图片.我当时想着,抛开技术实现层面, ...

  6. Emmagee--APP性能测试工具的基本使用

    一.Emmagee介绍 Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具.该工具的优势在于如同windows系统性能监视器类似,它提供的是数据采集的功能,而 ...

  7. 【.NET异步编程系列3】取消异步操作

    在.Net和C#中运行异步代码相当简单,因为我们有时候需要取消正在进行的异步操作,通过本文,可以掌握 通过CancellationToken取消任务(包括non-cancellable任务).  早期 ...

  8. 【机器学习基础】熵、KL散度、交叉熵

    熵(entropy).KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)在机器学习的很多地方会用到.比如在决策树模型使用信息增益来选择 ...

  9. linux文件权限总结(创建root不可以删除文件、只可追加的日志文件等)

    文件类型 对于文件和目录的访问权力是根据读访问,写访问,和执行访问来定义的. 我们来看一下 ls 命令的输出结果 [root@iZ28dr6w0qvZ test]# ls -l 总用量 72 -rw- ...

  10. 骁龙735处理器细节曝光:7nm工艺加持,支持5G

    骁龙700系列是高通公司的中高端芯片组系列,该系列包括10nm骁龙710和骁龙712 SoC:以及8nm骁龙730和骁龙730G SoC.最新消息显示,高通公司正在开发一款新的7nm芯片组,将被称为骁 ...