Sass是CSS的一种预处理器语言,类似的语言还有Less,Stylus等。

那么什么是CSS预处理器?

CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。

换言之就是说,CSS预处理器是一种专门的变成语言,在通过这种语言编写之后,再将其编译成正常的CSS文件。

CSS预处理器给CSS增加了编程的特性,例如可以使用变量、函数、以及逻辑。

CSS预处理器的优势:

可以让你的CSS变得更加简洁,适应性,可读性都变得更好,同时代码的维护也变得更方便。

关于Sass:

引用一段Sass官网上的描述:

  1. Sass是一门高于CSS的元语言,它能用来清晰地、结构化地描述文件样式,有着比普通CSS更加强大的功能。
  2. Sass能够提供更简洁、更优雅的语法,同时提供多种功能来创建可维护和管理的样式表。

Sass是最早的CSS预处理语言,诞生于2007年,采用Ruby语言编写。比LESS的功能更加强大,不过早期的缩进式语法(Sass的老版本语法,抛弃CSS的封号,大括号等符号)无法被大众接受(无法想象没有大括号的CSS的世界)。

虽然像html一样的缩进式风格可以缩减代码量,强制规范的变成风格,但是大部分的前端工程师都难以接受没有花括号的世界,倒是Sass早起没有LESS普及。

Sass和SCSS:

其实Sass和SCSS是同一种东西,平时都被我们称之为SCSS,不过还是一些区别:

1.文件拓展名不同,拓展名分别是".sass"和".scss"。

2.语法书写方式不同:Sass使用严格的缩进式语法书写,不使用大括号和封号(换行解决一切问题)。而SCSS更接近我们平时书写CSS的方式。

下边是两种语法的示例:

Sass 语法

  1. $font-stack: Helvetica, sans-serif  //定义变量
  2. $primary-color: #333 //定义变量
  3. body
  4. font: 100% $font-stack
  5. color: $primary-color

SCSS 语法

  1. $font-stack: Helvetica, sans-serif;
  2. $primary-color: #333;
  3. body {
  4. font: 100% $font-stack;
  5. color: $primary-color;
  6. }

编译出来的 CSS

  1. body {
  2. font: 100% Helvetica, sans-serif;
  3. color: #333;
  4. }

其实SCSS语法便是Sass后续推出的新版本语法,可以理解成一种语法糖,不再沿用ruby的语法习惯。(熟悉的大括号和封号又回归了)。

Sass学习之路(1)——Sass简介的更多相关文章

  1. Sass学习之路:Sass、Compass安装与命令行

    导言 CSS不是一门真正意义上的编程语言,很多编程语言理所当然的特性(比如变量),都不被支持.同时再开发模块化的web项目的时候,也要避免相互干扰.为了弥补CSS的这些不足,就产生了CSS预处理器,S ...

  2. Sass学习之路(3)——Sass编译

    Sass的编译也是在我们使用Sass的时候必须要经过的一个步骤,因为".sass"和".scss"文件并不能直接使用<link>标签引用,最终其实还 ...

  3. Sass学习之路(2)——Sass环境安装(windows版)

    因为本喵目前用的是window10的本子,所以这里就发windows版本的安装流程啦.(希望有朋友可以赞助我一个mac(┳_┳)): 第一步:安装ruby 因为Sass是基于ruby编写的,所以先去官 ...

  4. Sass学习之路(4)——不同样式风格的输出方式

    因为每个前端工程师编写代码的风格都不太一样,所以Sass的编译也非常人性化的提供了不同风格的编译方式,主要分为4种. 比如下面这一段Sass代码,我们来看看在不同风格下,会编译成什么样吧: nav { ...

  5. Sass学习之路(5)——变量

    1.定义变量:Sass中定义变量的关键字是'$'(毕竟程序员缺钱),并使用冒号(:)进行赋值,例如: $width:200px;//定义了一个名为width的变量,值为200px 2.普通变量和默认变 ...

  6. Sass学习之路:注释、变量以及导入

    前言 由于.sass不兼容CSS代码,所以以下内容完全使用.scss的语法. Sass注释 Sass中除了提供CSS中的标准注释之外,还提供了一种静默注释: /* 我是标准注释 */ // 我是静默注 ...

  7. python学习之路-1 python简介及安装方法

    python简介 一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. 目前最新版本为3.5.1,发布于2015年12月07日 ...

  8. GIT学习之路第一天 简介及其安装

    本文参考廖雪峰老师的博客进行总结,完整学习请转廖雪峰博客 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说就是:高端大气上档次! 那什么是版本控制 ...

  9. Qt 学习之路:Qt 简介

    Qt 是一个著名的 C++ 应用程序框架.你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个“一站式”的解决方案:不再需要研究 S ...

随机推荐

  1. Android Touch消息传递机制探究分析

    在Android中,消息的传递控制主要是通过两个方法共同配合使用来对用户的触摸消息进行分发的,下面就来看看这两个方法: onInterceptTouchEvent:此方法定义于ViewGroup中,顾 ...

  2. win10下LPT并口打印失败和POS打印机的钱箱不能打开,win10的坑

    最近在弄一个收银软件,因为使用到了触摸屏,该PC出厂安装的是老掉牙的XP.SSD固态硬盘,装XP实在是太浪费了.然后尝试了WIN7发现不能激活,然后试win8.1发现比较满意终于觉得配得上触摸屏了,但 ...

  3. 读书笔记_Effective_C++_条款四十五:运用成员函数模板接受所有兼容类型

    比如有一个Base类和一个Derived类,像下面这样: class BaseClass {…}; class DerivedClass : public BaseClass {…}; 因为是父类与子 ...

  4. Django Push HTTP Response to users

    Django Push HTTP Response to users I currently have a very simple web application written in Django, ...

  5. dSYM atos crash log 定位到代码行的方法(转)

    做iOS开发的时候,常常会遇到crash,需要分析call stack的时候.有时候App在别人的设备崩溃,把crash report在自己的机器上打开,Xcode没有自动的进行符号化.这时候就需要自 ...

  6. C#中,接口不能被实例化,但存在特例

    看一个例子: interface IFoo { string Message { get; } } 则, IFoo obj = new IFoo("abd"); 将会报错:接口不能 ...

  7. [Design Patterns] 1. Primary concept & term - UML

    It's time to review design patterns, especially when I reach the turning-point of my career. That's ...

  8. EventBus初理解

    缘由:     平时工作,因为懒于动笔的原因,也没注重技术和经验的积累,导致之前曾经研究过的问题现在又忘记了,所以要慢慢注重积累,那么就从写作开始,谈谈对工作中碰到的问题进行整理和归纳.     我们 ...

  9. POI中getLastRowNum() 和getLastCellNum()的区别 hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1

    hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1

  10. MIUI选项框开关样式模拟

    有IOS的开关模拟,当然也有MIUI的开关模拟 看到设置选项里面的开关样式,突发奇想地来试试    最终效果如图: 实现过程 1. 选项框checkbox 模拟开关当然需要一个选项框,这里用到了复选框 ...