一、简介

SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护。以上都是百度的,哈哈;

其实个人认为sass就是一套提高编写css效率的规则,我们在本地用sass编写.sass或.scss文件,然后用工具将该文件编译为.css文件,最终我们上传

到服务器的还是后缀名为.css文件,简言之,sass的一切操作都是在本地进行的

二、编译工具

网上都说要先安装Ruby,再安装sass,还需要命令行操作,其实这些都是原生的操作方式,既然我们已经有了图形界面工具,干嘛不去用呢?对吧;

koala编译器提供了编译sass文件的功能,其实它有好多功能,只是我们暂且只用到其中之一,下图为koala软件的截图:

三、基本用法

1.变量

sass允许使用变量,所有变量以$开头

$blue : #1875e7; 
div {
 color : $blue;
}

如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中。

$side : left;
.rounded {
  border-#{$side}-radius: 5px;
}

2.计算功能

SASS允许在代码中使用算式

body {
  margin: (14px/2);
  top: 50px + 100px;
  right: $var * 10%;
}

3.嵌套

SASS允许选择器嵌套。比如,下面的CSS代码:

div h1 {
  color : red;
}

可以写成:

div {
  hi {
    color:red;
  }
}

属性也可以嵌套,比如border-color属性,可以写成:

p {
  border: {
    color: red;
  }
}

注意,border后面必须加上冒号。

在嵌套的代码块内,可以使用&引用父元素。比如a:hover伪类,可以写成:

a {
  &:hover { color: #ffb3ff; }
}

4.注释

SASS共有两种注释风格。

标准的CSS注释 /* comment */ ,会保留到编译后的文件。

单行注释 // comment,只保留在SASS源文件中,编译后被省略。

在/*后面加一个感叹号,表示这是"重要注释"。即使是压缩模式编译,也会保留这行注释,通常可以用于声明版权信息。

/*!
  重要注释!
*/

四、代码的重用

1.继承

SASS允许一个选择器,继承另一个选择器。比如,现有class1:

.class1 {
  border: 1px solid #ddd;
}

class2要继承class1,就要使用@extend命令:

.class2 {
  @extend .class1;
  font-size:120%;
}

2.minxin

Mixin有点像C语言的宏(macro),是可以重用的代码块。

使用@mixin命令,定义一个代码块。

@mixin left {
  float: left;
  margin-left: 10px;
}

使用@include命令,调用这个mixin。

div {
  @include left;
}

mixin的强大之处,在于可以指定参数和缺省值。

@mixin left($value: 10px) {
  float: left;
  margin-right: $value;
}

使用的时候,根据需要加入参数:

div {
  @include left(20px);
}

下面是一个mixin的实例,用来生成浏览器前缀。

@mixin rounded($vert, $horz, $radius: 10px) {
  border-#{$vert}-#{$horz}-radius: $radius;
  -moz-border-radius-#{$vert}#{$horz}: $radius;
  -webkit-border-#{$vert}-#{$horz}-radius: $radius;
}

使用的时候,可以像下面这样调用:

#navbar li { @include rounded(top, left); }
#footer { @include rounded(top, left, 5px); }

3.颜色函数

SASS提供了一些内置的颜色函数,以便生成系列颜色。

lighten(#cc3, 10%) // #d6d65c
darken(#cc3, 10%) // #a3a329
grayscale(#cc3) // #808080
complement(#cc3) // #33c

4.插入文件

@import命令,用来插入外部文件。

@import "path/filename.scss";

如果插入的是.css文件,则等同于css的import命令。

@import "foo.css";

五、高级用法

1.条件语句

@if可以用来判断:

p {
  @if 1 + 1 == 2 { border: 1px solid; }
  @if 5 < 3 { border: 2px dotted; }
}

配套的还有@else命令:

@if lightness($color) > 30% {
  background-color: #000;
} @else {
  background-color: #fff;
}

2.循环语句

SASS支持for循环:

@for $i from 1 to 10 {
  .border-#{$i} {
    border: #{$i}px solid blue;
  }
}

也支持while循环:

$i: 6;
@while $i > 0 {
  .item-#{$i} { width: 2em * $i; }
  $i: $i - 2;
}

each命令,作用与for类似:

@each $member in a, b, c, d {
  .#{$member} {
    background-image: url("/image/#{$member}.jpg");
  }
}

3.自定义函数

SASS允许用户编写自己的函数。

@function double($n) {
  @return $n * 2;
}
#sidebar {
  width: double(5px);
}

(完)

原文章出处:http://www.ruanyifeng.com/blog/2012/06/sass.html

sass的基本语法与使用的更多相关文章

  1. 【css预处理器】------sass的基本语法------【巷子】

    001.安装sass 1.删除gem源:gem sources --remove https://rubygems.org/ 2.添加国内源:gem sources -a http://gems.ru ...

  2. 学习Sass 的基本语法规则[Sass和compass学习笔记]

    自从发现可编程的css语法 Sass和基于Sass的css库compass 一个给我的感觉像c# 另外一个给我的感觉像.NET Framework,一切都为了提升开发效率和降低开发大型web的门槛. ...

  3. Sass 的基本语法规则

    转自:http://www.cnblogs.com/qqloving/p/3676852.html 自从发现可编程的css语法 Sass和基于Sass的css库compass 一个给我的感觉像c# 另 ...

  4. Sass入门——简介+语法格式及编译调试

    本文来自慕课网大漠. Sass简介 Sass和SCSS区别 1.后缀名不同,很好理解 2.Sass以严格的缩进语法规则书写,不带大括号和分号:而SCSS的语法规则和CSS的语法很类似. Sass: $ ...

  5. sass安装和语法

    1.简介 sass 它的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.这被叫做“css预处理器”(css preprocessor).它提供了很便利的语法,节省了我 ...

  6. sass的高级语法

    1. 变量 sass允许使用变量,所有变量以$开头 2.引用父元素 & 这里 "&" 就代表是 a 3.继承 这样  class2 就 拥有了class1的所有属性 ...

  7. angular使用sass的scss语法

    一.现象 为了简写样式 二.解决 1.安装sass ,利用npm 安装(npm工具如果没有,请先自行安装好) (1).npm install node-sass --save-dev (2).npm ...

  8. Vue使用PostCSS 插件和如何使用sass及常用语法

    为什么要使用PostCss 转换 px 单位的插件有很多,知名的有 postcss-px-to-viewport 和 postcss-pxtorem,前者是将 px 转成 vw,后者是将 px 转成 ...

  9. 关于sass的介绍和基本语法

    引入 什么是sass?sass是css预处理器. 那预处理器又是什么?css本身不是一种编程语言,而预处理器是用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件. 如今主流的预处理器 ...

随机推荐

  1. re模块练习

    1.匹配标签 1 import re 2 ret = re.search('<(?P<tag_name>\w+)>\w+</(?P=tag_name)>','< ...

  2. leetcode852

    int peakIndexInMountainArray(vector<int>& A) { int Len = A.size(); ; ; i < Len - ; i++) ...

  3. Activex感知网页刷新关闭事件

    原因 大多数ActiveX控件框架,例如MFC和ATL,在本地激活ActiveX控件时创建控件.基于性能上的考虑,直到控件第一次可见的时候,IE才本地激活ActiveX控件.这样包含ActiveX控件 ...

  4. docker-compose之Nginx+Tomcat代理配置

    Tomcat镜像制作与启动 Dockerfile如下 FROM docker.io/sssllc/centos7.-jdk1. #update RUN yum -y update; yum clean ...

  5. 【HDU5187】zhx's contest

    [问题描述] 作为史上最强的刷子之一,zhx的老师让他给学弟(mei)们出n道题.zhx认为第i道题的难度就是i.他想要让这些题目排列起来很漂亮. zhx认为一个漂亮的序列{ai}下列两个条件均需满足 ...

  6. libevent源码深度剖析五

    libevent源码深度剖析五 ——libevent的核心:事件event 张亮 对事件处理流程有了高层的认识后,本节将详细介绍libevent的核心结构event,以及libevent对event的 ...

  7. php扩展开发2--添加类

    1.需要实现的细节 实现一个person类 实现一个doing方法和saying方法 2.第一个扩展 2.1创建类的扩展: [root@bogon ext]# cd /usr/local/src/ph ...

  8. 2-javascript::笔记

    0.位置: HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 <head& ...

  9. 我搭建大数据Hadoop完全分布式环境遇到的坑---hadoop: command not found

    搭建大数据hadoop环境,遇到很多问题,这里记录一部分,以备以后查看. [遇到问题].在安装配置完hadoop以后,需要格式化namenode,输入指令:hadoop namenode -forma ...

  10. scala _ parameter

    Given that sequence, use reduceLeft to determine different properties about the collection. The foll ...