1.加法

加法运算是Sass中运算的一种,在变量或属性中都可以做加法运算。如:

.box {
width: 20px + 8in;
}

编译出来的CSS:

.box {
width: 788px;
}

但对于携带不同类型的单位时,在Sass中计算会报错。如下所示:

.box {
width: 20px + 1em;
}

编译的时候,编译器会报错:"Incompatible units: 'em' and ‘px'."

2.减法

Sass的减法运算和加法运算类似,我们通过一个简单的示例来做阐述:

$full-width: 960px;
$sidebar-width: 200px; .content {
width: $full-width - $sidebar-width;
}

编译出来的CSS如下:

.content {
width: 760px;
}

同样的,运算时碰到不同类型的单位时,编译也会报错,如:

$full-width: 960px;

.content {
width: $full-width - 1em;
}

编译的时候,编译器报"Incompatible units: 'em' and ‘px’."错误。

3.乘法

  Sass中的乘法运算和加法减法运算略有不同,虽然它支持多种单位,但当一个单位同时声明两个值时会有问题。比如下面的示例:

.box {
width:10px * 2px;
}

编译的时候报"20px*px isn't a valid CSS value."错误信息。

如果进行乘法运算时,两个值单位相同时,只需要为一个数值提供单位即可,上面的示例可以修改成:

.box {
width: 10px * 2;
}

编译出来的CSS:

.box {
width: 20px;
}

Sass的乘法运算和加法、减法运算一样,在运算中有不同类型的单位时,也将会报错。

.box {
width: 20px * 2em;
}

编译时报: " 40em*px isn't a valid CSS value. " 的错误信息。

4.除法

  Sass的乘法运算规则也适用于除法运算。不过除法运算还有一个特殊之处。在Sass中做除法运算时,直接使用" / "符号作为除号时,将不会生效,编译时既得不到我们需要的效果也不会报错。来看一个简单的示例:

.box {
width: 100px / 2;
}

编译出来的CSS如下:

.box {
width: 100px / 2;
}

  这样的结果对于大家来说没有任何意义。要修正这个问题,只需要给运算的外面添加一个小括号 () 即可:

.box {
width: (100px / 2);
}

编译出来的CSS如下:

.box {
width: 50px;
}

  除了上面情况带有小括号," / " 符号会当作除法运算符之外,如果" / "符号在已有的数学表达式中时,也会被认作除法符号。如下面示例:

.box {
width: 100px / 2 + 2in;
}

编译出来的CSS:

.box {
width: 242px;
}

  另外,在 Sass 除法运算中,当用变量进行除法运算时," / " 符号也会自动被识别成除法,如下例所示:

$width: 1000px;
$nums: 10; .item {
width: $width / 10;
} .list {
width: $width / $nums;
}

编译出来的CSS:

.item {
width: 100px;
} .list {
width: 100px;
}

综合上述," / " 符号被当作除法运算符时有以下几种情况:

  • 如果数值或它的任意部分是存储在一个变量中或是函数的返回值。
  • 如果数值被圆括号包围。
  • 如果数值是另一个数学表达式的一部分。

如下所示:

//SCSS
p {
font: 10px/8px; // 纯 CSS,不是除法运算
$width: 1000px;
width: $width/2; // 使用了变量,是除法运算
width: round(1.5)/2; // 使用了函数,是除法运算
height: (500px/2); // 使用了圆括号,是除法运算
margin-left: 5px + 8px/2px; // 使用了加(+)号,是除法运算
}

编译出来的CSS:

p {
font: 10px/8px;
width: 500px;
height: 250px;
margin-left: 9px;
}

  Sass的除法还有一个情况,如果两个值带有相同的单位值时,除法运算之后会得到一个不带单位的数值,如下所示:

.box {
width: (1000px / 100px);
}

编译出来的CSS如下:

.box {
width:;
}

5.变量计算

  在Sass中除了可以使用数值进行运算之外,还可以使用变量进行计算。这让Sass的数学运算功能变得更加实用。一起来看一个简单的例子:

$content-width: 720px;
$sidebar-width: 220px;
$gutter: 20px; .container {
width: $content-width + $sidebar-width + $gutter;
margin: 0 auto;
}

编译出来的CSS:

.container {
width: 960px;
margin: 0 auto;
}

6.数字运算

  在Sass运算中数字运算时较为常见的,数字运算包括前面介绍的:加法、减法、乘法和除法等运算,而且还可以通过括号来修改它们的运算先后顺序。和我们的数学运算是一样的,一起来看一个示例:

.box {
width: ((220px + 720px) - 11 * 20 ) / 12 ;
}

编译出来的CSS:

.box {
width: 60px;
}

7.颜色运算

  所有算数运算都支持颜色值,并且是分段运算的。也就是说,红、绿和蓝各颜色分段单独进行运算。如:

p {
color: #010203 + #040506;
}

  计算公式为01 + 04 = 05、02 + 05 = 07 和 03 + 06 = 09,并且被合成,编译出来的CSS为:

p {
color: #050709;
}

算数运算也能将数字和颜色值一起运算,同样也是分段运算的。如:

p {
color: #010203 * 2;
}

计算公式为01 * 2 = 02 、02 * 2 = 04 和 03 * 2 = 06,并且被合成为:

p {
color: #020406;
}

8.字符运算

在Sass中可以通过加法符号 "+" 来对字符串进行连接。例如:

$content: "Hello" + "" + "Sass!";
.box:before {
content: " #{$content} ";
}

编译出来的CSS:

.box:before {
content: " Hello Sass! ";
}

除了在变量中做字符连接运算之外,还可以直接通过+,把字符串连接在一起:

div {
cursor: e + -resize;
}

编译出来的CSS:

div {
cursor: e-resize;
}

  注意,如果有引号的字符串被添加了一个没有引号的字符串 (也就是,带引号的字符串在 + 符号左侧), 结果会是一个有引号的字符串。 同样的,如果一个没有引号的字符串被添加了一个有引号的字符串 (没有引号的字符串在 + 符号左侧), 结果将是一个没有引号的字符串。 例如:

p:before {
content: "Foo " + Bar;
font-family: sans- + "serif";
}

编译出来的CSS:

p:before {
content: "Foo Bar";
font-family: sans-serif; }

Sass入门:第四章的更多相关文章

  1. HTML与CSS入门——第四章 理解层叠样式表

    知识点: 1.创建基本样式表的方法 2.使用样式类的方法 3.使用样式ID的方法 4.构建内部样式表和嵌入样式的方法 4.1 CSS工作原理: CSS:层叠样式表的缩写,是一种定义样式结构如字体.颜色 ...

  2. Sass入门:第二章

    1.Sass语法格式 假设有这样一段CSS代码: body{ font : 100% Helvetica , sans-serif; color : #333; } Sass最初的语法格式 $font ...

  3. Sass入门:第一章

    1.什么是预处理器? CSS预处理器是用一种专门的编程语言,进行Web页面样式设计,然后再编译成正常的CSS文件,以供项目使用.CSS预处理器为CSS增加一些编程的特性,无需考虑浏览器的兼容性问题. ...

  4. MySQL----MySQL数据库入门----第四章 单表查询

    select [distinct] * | 字段1,字段2,字段3... from 表名 [where 条件表达式] [group by 字段名] [having 条件表示式] [order by 字 ...

  5. 多线程入门-第四章-线程的调度与控制之sleep

    /* sleep,阻塞当前线程,腾出CPU,让给其他线程 单位是毫秒 静态方法 */ public class ThreadTest04 { public static void main(Strin ...

  6. ES6标准入门 第四章:字符串的扩展

    1.字符串的Unicode 表示法 JavaScript 允许采用 \uxxxx 表示一个字符,其中 xxxx 表示字符的码点. "\u0061" // "a" ...

  7. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

  8. ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...

  9. D3.js的v5版本入门教程(第四章)—— 理解Update、Enter、Exit

    D3.js的v5版本入门教程(第四章) Update.Enter.Exit是D3.js中很重要的概念,下面来讲一下它们到底是什么?(当你看完后.你就会知道如果数据集个数和选择集个数不匹配的情况下使用d ...

  10. 《Java从入门到失业》第四章:类和对象(4.5):包

    4.5包 前面我们已经听过包(package)这个概念了,比如String类在java.lang包下,Arrays类在java.util包下.那么为什么要引入包的概念呢?我们思考一个问题:java类库 ...

随机推荐

  1. 20170114 - Mac 向上一级文件夹快捷键

    以前使用XtraFinder来实现向上跳转文件夹,Mac其实自带的向上一级文件夹,只是没有那么明显, Mac下跳转上一级文件夹的快捷键是 Command + Up Arrow,即: ⌘ ↑

  2. kworker

    通过 ps 命令查看进程状态时,可以查看到kworker相关, 大部分格式都是  kworker /u2:0 或者  kworker /0:0H, 查看资料得知: 内核中有很多kworker,有绑定c ...

  3. Linux网络常用头文件说明

    sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函 ...

  4. 终于了解了User-Agent的历史了

    你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样? 1 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.3 ...

  5. java程序基础

  6. OpenGL杂七杂八

    Projection Matrix 投影矩阵 3D -> 2D PFD_DOUBLEBUFFER 双缓冲 在图形图象处理编程过程中,双缓冲是一种基本的技术.我们知道,如果窗体在响应WM_PAIN ...

  7. Oracle新实例创建

    http://blog.itpub.net/29519108/viewspace-1443918/ 刚开始创建时,千万别点容器数据库,不然后面新建用户时,用户名前得加C##. 常用命令: sqlplu ...

  8. C#中的DataSet添加DataTable问题

    最近在使用DataTable来给前台控件绑定数据,开始时查了网上的一些给DataSet添加DataTable时需要注意的地方,一般都要添加表名并且使用DataTable.Copy()方法,否则会报错, ...

  9. lumen框架

    1,获取配置 app(); 说明:app()返回的是全局唯一的application对象,该对象的原型是Laravel\Lumen\Application 加载配置文件(config/app.php) ...

  10. ARXObject的入门学习

    刚刚学习一样新东西的时候,首先要解决的几个问题 1. 任何搭建一个项目环境: 2. 新建一个项目的流程: 3. 调试: 4. 熟悉其API: 5. 错误积累与解决办法: 6. 其中隐含的语法知识和UM ...