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. Python基础知识学习_Day8

    一.类的扩展方法 1.静态方法 语法:@staticmethod,静态方法不能访问公有属性,不能访问类.可在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量. class eat( ...

  2. 使用pycharm+pyqt5 触发自定义方法

    1.依旧使用上次QtDesigner做的界面,如下图: 2.本次的使用text Browser 和 text Edit 和 pushButton控件做触发联系: 3.目的实现在text Edit中随意 ...

  3. Vim编辑器与Shell命令脚本

    章节简述: 本章节将教给您如何使用Vim编辑器来编写文档.配置主机名称.网卡参数以及yum仓库 ,熟练使用各个模式和命令快捷键. 我们可以通过Vim编辑器将Linux命令放入合适的逻辑测试语句(if. ...

  4. shrio登录验证

    shiro的认证过程也就是判断用户名和密码的过程,在认证过程中,用户需要提交实体信息(用户名)(Principals)和凭据信息(密码)(Credentials)来判断用户是否合法,最常见的" ...

  5. CSS之box-sizing的用处简单介绍

    前几天才发现有 box-sizing 这么个样式属性,研究了一番感觉很有意思, 通过指定容器的盒子模型类型,达到不同的展示效果 例如:当一个容器宽度定义为 width:100%;  之后,如果再增加 ...

  6. hdu1033

    #include<stdio.h> #include<string.h> const int MAXN=200; char str[MAXN]; int main() { in ...

  7. SEO之关键词选择

    在网站优化中,关键词应该是奠基石,选择好关键词的重要性也不言而喻了.怎样选择合理化的关键词呢?这个是我今天了解到的. 1.选择的关键词首先是有人搜索过的.没人搜索的词优化就是浪费时间. 2.做有效流量 ...

  8. C语言温度

    #include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or a ...

  9. node.js---package.json文件

    描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...

  10. JavaScriptSerializer返回一条Json,页面获取值问题,数据绑定

    一,后台处理数据方法 JavaScriptSerializer serializer = new JavaScriptSerializer(); string js = serializer.Seri ...