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. Amazon才推众包物流,“京东众包”已红绿上阵,“达达”还手握10万配送大军

    据外媒消息,Amazon正在开发一款App,想让大家都来为他家送包裹. Amazon的设想是,在市区招募实体零售商,租用空间或者按包裹向其支付费用.这项服务在内部代号为“On My Way”,目前还在 ...

  2. UOJ#117. 欧拉回路

    #117. 欧拉回路 题目描述 有一天一位灵魂画师画了一张图,现在要你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次. 一共两个子任务: 这张图是无向图.(50分) 这张图是有向图.(5 ...

  3. JS的console使用

    一,console输出的几种写法: console.error('错误信息') console.info('提示信息') console.warn('警告信息') console.log('普通信息' ...

  4. List去重

    因为用到list,要去除重复数据,尝试了几种方法.记录于此... 测试数据: List<string> li1 = new List<string> { "8&quo ...

  5. LR回放和录制设置

    1.回放迭代设置:run-time settings 日志:扩展的-参数替换(常用).服务器返回数据.高级 2.回放时视图显示设置 设置 效果

  6. C#带参数打开网页及url获取

    1.带参数打开网页 Response.Redirect("form2.aspx?id=url1&name=ok"); 其中?后面为参数. 2.获取url 命令 结果 Req ...

  7. WebTours服务的启动

    简介: HP loadrunner自带的一个飞机系统订票网站. 启动服务的步骤: 1.启动StartServer.bat 所在的路径: (\HP LoadRunner 12.02 Community ...

  8. angular-ui-bootstrap插件API - Tabs

    Tabs 案例 <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> ...

  9. vim - 自动补齐

    OmniComplete是基于ctags的,所以要先安装ctags 到http://www.vim.org/scripts/script.php?script_id=2358下载cpp_src.tar ...

  10. Angular JS Scope(作用域)

    Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带. Scope 是一个对象,有可用的方法和属性. Scope 可应用在视图和控制器上. 当你在 Ang ...