css 是一些非常简单得语句的组合,既然简单的语句,就不可避免的有很多重复的,冗余的东西,而且没有传统
编程语言变量,控制语句等高级特性,所以造成了css 编写低效,往往需要查找替换,大量复制来修改或者编写。Sass 是用
弥补这些缺陷的,使开发更加的方便快捷,更加方便管理。
  1.Sass和SCSS的区别。
    文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名
    语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而
  SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。
    例如:Sass语法
      $font-stack: Helvetica, sans-serif //定义变量
      $primary-color: #333 //定义变量

      body
        font: 100% $font-stack
        color: $primary-color
    例如:SCSS语法
        $font-stack: Helvetica, sans-serif;
        $primary-color: #333;
    body {
      font: 100% $font-stack;
      color: $primary-color;
    }
   编译出来的 CSS
    body {
      font: 100% Helvetica, sans-serif;
      color: #333;
    }

在使用的页面时依然引用.css文件。
Sass中编译出来的样式风格可以按不同的样式风格显示。
  1.嵌套输出方式nested
    例如: nav {
          ul {
            margin: 0;
            padding: 0;
            list-style: none;
          }
          li { display: inline-block; }
          a {
            display: block;
            padding: 6px 12px;
            text-decoration: none;
           }
        }
    编译出来的风格:nav ul {
              margin: 0;
              padding: 0;
              list-style: none; }
            nav li {
              display: inline-block; }
            nav a {
              display: block;
              padding: 6px 12px;
              text-decoration: none; }
    2.展开输出方式expanded
        例如: nav {
              ul {
                margin: 0;
                padding: 0;
                list-style: none;
                }
          li { display: inline-block; }
          a {
            display: block;
            padding: 6px 12px;
            text-decoration: none;
            }
          }
      编译出来的风格:
        nav ul {
            margin: 0;
            padding: 0;
            list-style: none;
          }
        nav li {
          display: inline-block;
        }
        nav a {
          display: block;
          padding: 6px 12px;
          text-decoration: none;
        }
    3.紧凑输出方式 compact
      例如: nav {
            ul {
                margin: 0;
                padding: 0;
                list-style: none;
          }
        li { display: inline-block; }
        a {
          display: block;
          padding: 6px 12px;
          text-decoration: none;
          }
        }
    编译出来的风格:
      nav ul { margin: 0; padding: 0; list-style: none; }
      nav li { display: inline-block; }
      nav a { display: block; padding: 6px 12px; text-decoration: none; }
  4.压缩输出方式compressed
    例如: nav {
          ul {
            margin: 0;
            padding: 0;
            list-style: none;
            }
          li { display: inline-block; }
          a {
            display: block;
            padding: 6px 12px;
            text-decoration: none;
            }
        }
  编译出来的风格:
      nav ul{margin:0;padding:0;list-style:none}nav li{display:inline-block}nav a{display:block;padding:6px 12px;
          text-decoration:none}
  声明变量用“$”开头,
      $width:300px;
      "$":变量声明符
      width: 变量名称
      300px 变量值
  全局变量与局部变量
    在选择器、函数、混合宏...的外面定义的变量为全局变量
      例如:
        .block {
            color: $color;//调用全局变量
          }
        em {
            $color: red;//定义局部变量
        a {
            color: $color;//调用局部变量
          }
        }
      span {
        color: $color;//调用全局变量
      }
    编译后:
      //CSS
        .block {
            color: orange;
          }
        em a {
          color: red;
          }
       span {
        color: orange;
        }

      $color 就是一个全局变量,而定义在元素内部的变量,比如 $color:red; 是一个局部变量。
      什么时候声明变量?
          1.该值至少重复出现了两次;
          2.该值至少可能会被更新一次;
          3.该值所有的表现都与变量有关(非巧合)。
      Sass 的嵌套分为三种:
        选择器嵌套
        属性嵌套
        伪类嵌套
      例如:在css 会这样写
        nav a {
            color:red;
          }
      header nav a {
          color:green;
      }
    在sass中
    nav {
      a {
        color: red;
       header & {
      color:green;
      }
  嵌套-属性嵌套
  Sass中提供属性嵌套,css有一些属性前缀相同。
  例如用到的样式:
  .box{
    border-top:1px solid red;
    border-bottom:1px solid green;
  }
  在Sass中我们可以这样写:
  .box {
    border: {
    top: 1px solid red;
    bottom: 1px solid green;
    }
  }

Sass 基础(一)的更多相关文章

  1. [转]前端利器:SASS基础与Compass入门

    [转]前端利器:SASS基础与Compass入门 SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让 ...

  2. Sass基础——Rem与Px的转换

    rem是CSS3中新增加的一个单位值,他和em单位一样,都是一个相对单位.不同的是em是相对于元素的父元素的font-size进行计算:rem是相对于根元素html的font-size进行计算.这样一 ...

  3. sass基础编写流程

    这是之前整理在word上的基础流程 sass是Ruby语言开发的一个用于动态编程css文件的框架 所以sass的运行依赖Ruby环境 所以要先安装Ruby 参见详细教程(安装参照慕课网有详细的教程) ...

  4. 前端利器:SASS基础与Compass入门

    SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让css看起来更像是一门语言,这种特性也被称为“cs ...

  5. Sass基础语法

    Sass是CSS3语言的扩展,在CSS的基础之上添加了新特性和语法,能省事地写出更好的样式表.Sass引擎是基于Ruby的. 导入Sass文件: @import "colors" ...

  6. sass基础—具体编译步骤及对应命令:详细

    /*基础语法*/h1{ color: red;} /*变量定义*/ $color: red; /*嵌套*/body{ header{ } footer{ }} /*mixin函数*/@mixin al ...

  7. Sass 基础教程

    0. Sass 文件后缀名 sass 有两种后缀名文件:一种后缀名为 sass,不使用大括号和分号:另一种就是我们这里使用的 scss 文件,这种和我们平时写的 css 文件格式差不多,使用大括号和分 ...

  8. Sass 基础(七)

    Sass Maps 的函数-map-remove($map,$key),keywords($args) map-remove($map,$key) map-remove($map,$key)函数是用来 ...

  9. sass基础用法

    嵌套: 1.选择器嵌套: 2.属性嵌套; .box {     border-top: 1px solid red;     border-bottom: 1px solid green; } .bo ...

  10. sass笔记-3|Sass基础语法之样式复用和保持简洁

    上一篇详述了Sass如何嵌套.导入和注释这3个基本方式来保持条理性和可读性,这一篇更进一步地阐述sass保持样式复用和简洁的方式--混合器和选择器继承--这两种方式都能复用样式,使用它们也不难,但一定 ...

随机推荐

  1. js中的Function和Object

    说到构造器(condtructor).原型链(prototype),说道Function与Object,总要祭出下面这张图 1.Function是最顶层的构造器,Object是最顶层的对象 2.先有的 ...

  2. Junit入门教程

    做开发的时候,完成一个接口.方法.函数或者功能等,需要测试,是否有bug,有逻辑错误.这里有两种方案测试 1. 在main中写测试方法 2. 使用开源框架,这里使用的junit main写测试方法优点 ...

  3. LI居中

    在用UL-LI时,有适合需要将Li里面的内容居中显示:方法有两种:(推荐)1.设置LI的display为inline(规定应该从父元素继承 display 属性的值),为LI设置长度,设置text-a ...

  4. CSS3中的变形与动画(一)

    CSS3变形篇 旋转rotate() 旋转rotate()函数通过指定的角度参数使元素相对原点进行旋转.它主要在二维空间内进行操作,设置一个角度值,用来指定旋转的幅度.如果这个值为正值,元素相对原点中 ...

  5. broadcastemit

    http://code.angularjs.org/1.0.2/docs/api/ng.$rootScope.Scope#$broadcast scope可以以类似于DOM事件的方式进行事件传播.事件 ...

  6. jdbc、Connection pool、jndi的理解和关系

    一.概念和理解: ①.jdbc:Java Data Base Connectivity,java数据库连接,最为传统的一种方式,直接连接操作数据库,需要连接时创建连接,使用结束时销毁连接. ②.Con ...

  7. Android之Fragment 基本介绍(转)

    Fragment Android是在Android 3.0 (API level 11)开始引入Fragment的. 可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的 ...

  8. Python装饰器AOP 不定长参数 鸭子类型 重载(三)

    1 可变长参数与关键字参数 *args代表任意长度可变参数 **kwargs代表关键字参数 用*args和**kwargs只是为了方便并没有强制使用它们. 缺省参数即是调用该函数时,缺省参数的值若未被 ...

  9. March 20 2017 Week 12 Monday

    A goal is a dream with a deadline. 目标就是给梦想一个期限. Dream without dealine is just daydream, because you ...

  10. SpringBoot应用和PostgreSQL数据库部署到Kubernetes上的一个例子

    创建一个名为ads-app-service的服务: 上述Service的yaml文件里每个字段,在Kubernetes的API文档里有详细说明. https://kubernetes.io/docs/ ...