sass的文件后缀名

sass是目前流行的css预处理语言。sass有两种后缀文件,一种是.sass,不允许使用大括号和分号;另一种是.SCSS,允许使用大括号和分号,类似于我们平时写css的语法习惯。其实sass最早出现在2007年,但却没有后来的LESS流行和易于接受,最主要的原因是sass严格的语法要求不太符合csser编写,sass为了改变这种现状,迎合大众,推出了更为宽松的SCSS这种类css写法。

sass文件的编译

sass扩展了css的写法,为css提供了变量,继承,宏等能够提高效率和增强维护性的新概念。是不是说我们直接就可以在html文件中引用.sass文件了么?答案是否定的,浏览器并不会认识sass语法形式,而只会解析.css文件资源,所以我们需要将sass编译成css。

主要有以下几种编译方式:

命令编译

单文件编译:

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

多文件编译:

1
sass sass/:css/

实时监听文件更改

1
sass --watch <要编译的sass文件路径>/style.scss:<要输出的css文件路径>/style.css

GUI界面工具编译

Koalo
CodeKit

自动化编译

自动化编译因你使用的工具的不同而不同。当前流行的有gulp,grunt,webpack等。

不同样式风格的css输出方法

嵌套输出方式(nested)

1
sass test.scss:test.css --style nested

展开输出方式(expanded)

1
sass test.scss:test.css --style expanded

紧凑输出方式(compact)

1
sass test.scss:test.css --style compact

压缩输出方式(compressed)

1
sass test.scss:test.css --style compressed

变量

声明变量

— 1.变量声明符号($)
— 2.变量名称
— 3.赋予变量的值

1
$width: 100px;

普通变量和默认变量

在普通变量后加上关键字!default即可声明默认变量.默认变量的价值再进行组件化开发的时候非常有用。

1
$width: 100px !default;

局部变量和全局变量

在选择器,函数,混合宏…外面声明的变量为全局变量。相应的在块内部声明的变量为局部变量。局部变量在块内会覆盖全局变量。

1
2
3
4
5
6
7
8
$color: orange !default; //全局变量
.a{
$color: red; // 全局变量
color: $color; // color: red大专栏  scss入门学习(一)br/>}
.b{
color: $color; // color: orange
}

变量的调用

1
2
3
4
$width: 100px !default;
.container{
width: $width;
}

混合宏(mixin)

当你的网站中有几处样式类似,比如颜色,字体时用变量就可以统一处理了;但是当你有大段的样式需要复用时,变量就无法达到目的了。而混合宏就变得很有意义了。

声明混合宏

— 混合宏声明符号(@mixin)
— 混合宏名称
— (可重用的)代码片段

  1. 不带参数的混合宏

    1
    2
    3
    4
    @mixin border-radius {
    -webkit-border-radius: 5px;
    border-radius: 5px;
    }
  2. 带参数的混合宏

    1
    2
    3
    4
    @mixin border-radius($radius:5px){
    -webkit-border-radius: $radius;
    border-radius: $radius;
    }
  3. 复杂的混合宏

    1
    2
    3
    4
    5
    6
    7
    8
    @mixin box-shadow($shadow...){
    @if length($shadow)>=1{
    @include prefixer(box-shadow,$shadow)
    }
    } @else{
    $shadow: 0 0 4px rgba(0,0,0,.3);
    @include prefixer(box-shadow, $shadow)
    }

调用混合宏

— 混合宏调用的关键字@include
— 混合宏的名称

继承/扩展

当两个样式有高度可重用代码时,我们可以定义一个基类,将相似度高的代码提取出来,然后子类继承(extend)父类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- 定义一个基类 -->
.btn{
border: 1px solid
padding: 6px 10px;
font-size: 14px;
}
.btn-primary {
background-color: #f36;
color: #fff;
@extend .btn; // 继承
} .btn-second {
background-color: orange;
color: #fff;
@extend .btn; // 继承
}

占位符%placeholder

当定义一个基类的时候,如果没有子类继承他(extend),就会造成代码冗余。我们使用占位符声明的代码,如果不被@extend调用的话,将不会产生任何代码。

1
2
3
%mt5{
margin-top: 5px; //如果没有子类继承,代码中不会显示
}

优先使用占位符;如果需要传参数,使用宏;没有参数,使用继承。

scss入门学习(一)的更多相关文章

  1. Sass简单、快速上手_Sass快速入门学习笔记总结

    Sass是世界上最成熟.稳定和强大的专业级css扩展语言 ,除了Sass是css的一种预处理器语言,类似的语言还有Less,Stylus等. 这篇文章关于Sass快速入门学习笔记. 资源网站大全 ht ...

  2. vue入门学习(基础篇)

    vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...

  3. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

  4. Hadoop入门学习笔记---part3

    2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...

  5. PyQt4入门学习笔记(三)

    # PyQt4入门学习笔记(三) PyQt4内的布局 布局方式是我们控制我们的GUI页面内各个控件的排放位置的.我们可以通过两种基本方式来控制: 1.绝对位置 2.layout类 绝对位置 这种方式要 ...

  6. PyQt4入门学习笔记(一)

    PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...

  7. Hadoop入门学习笔记---part2

    在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...

  8. Retrofit 入门学习

    Retrofit 入门学习官方RetrofitAPI 官方的一个例子 public interface GitHubService { @GET("users/{user}/repos&qu ...

  9. MyBatis入门学习教程-使用MyBatis对表执行CRUD操作

    上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...

随机推荐

  1. Using sudo inside a docker container

    https://stackoverflow.com/questions/25845538/using-sudo-inside-a-docker-container FROM ubuntu:12.04 ...

  2. windows Apache 配置支持HTTPS的SSL证书

    在设置Apache + SSL之前, 需要做: 安装Apache, 下载安装Apache时请下载带有ssl版本的Apache安装程序. 并且ssl需要的文件在如下的位置: [Apache安装目录]/m ...

  3. 4)PHP命名规则,传值方式

    (1)命名规则: 包括变量名,类名,接口名函数名等等 ①基本规则: 只能使用小写字母,下划线或者数字 数字不能开头 不能跟环境和系统关键字重复(比如,if,else,function) ② 驼峰式   ...

  4. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:数据集高层操作

    import tempfile import tensorflow as tf # 1. 列举输入文件. # 输入数据生成的训练和测试数据. train_files = tf.train.match_ ...

  5. 【转】浅述WinForm多线程编程与Control.Invoke的应用

    环境:VS2008.C#3.0 在WinForm开发中,我们通常不希望当窗体上点了某个按钮执行某个业务的时候,窗体就被卡死了,直到该业务执行完毕后才缓过来.一个最直接的方法便是使用多线程.多线程编程的 ...

  6. 静态代码检测CppCheck的使用

    CppCheck的官网下载地址:http://cppcheck.sourceforge.net/ 使用方法有两种: 一:以VS插件的形式使用 二:直接使用客户端界面的GUI,来进行检测 第二种方法忽略 ...

  7. 再来看看Java的新特性——Stream流

    半年前开始试着使用Java的新特性,给我印象最深的就是Stream流和Optional.其中Stream提高了看法效率,让代码看起来十分清爽. 为什么要使用流? 摘要中已经说明了,为了提高开发效率.流 ...

  8. SAP 配置表根据输入的值带出描述

    在SAP客制功能需求中,为了程式的灵活配置采用配置表的形成,使后期使用中不需要更改源代码实现功能的增加.在配置表的使用过程中,有时候会有这样的需求:在配置中输入或选择了编码,根据编码带出描述.以下详细 ...

  9. RHEL安装神器EPEL

    什么是EPEL? EPEL的全称叫 Extra Packages for Enterprise Linux .EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS.Scie ...

  10. SMTP错误码/建议解决方法

    SMTP错误码/建议解决方法 错误总表 420 1. Timeout Communication Problem Encountered During Transmission. Thie Is a ...