1. 加减法

加减法不是重点,重点是在SassScript中用到的两种单位之间的转换;
绝对单位:px, pt, pc, in, mm, cm...绝对单位都能运算;
相对单位:ex, em, rem...相对当前字体的都不能运算;

1.1 编译报错的栗子


SCSS:

 $plus1: 100px + 20ex; //不能换算的编译都会报错;
$plus2: 100px + 20em;
$plus3: 100px + 20rem;
.plus{
width: $plus1 + 10px; //在变量或属性中均可做加减法运算;
}
编译报错:
Incompatible units: 'ex' and 'px'.
Incompatible units: 'em' and 'px'.
Incompatible units: 'rem' and 'px'.

1.2 正常编译的栗子


SCSS:

 $minus1: 100px - ; //第二个值可不带单位;
$minus2: 100pt - 20px; //运算是从左到右,如第二个值的单位不同于第一个值的单位(pt),
$minus3: 100px + 20cm; //将会对其进行转换(pt)后再运算;编译出来的值的单位也是(pt);
$minus4: 100rem; //可以正常编译输出;
$minus5: 100rem + 10em; //报错;--Incompatible units: 'em' and 'rem'.);
.minus{
width: $minus1;
height: $minus1 + ; //在属性还可以继续做运算;
min-width: $minus2;
min-height: $minus3;
max-width: $minus4;
max-height: $minus1 + $minus2;
}

//普遍情况下很少会搞两个单位在那加加减减,闲得蛋疼,反正我不会,在这只是举个栗子。

被编译为:

 .minus {
width: 80px;
height: 110px;
min-width: 85pt;
min-height: .90551px;
max-width: 100rem;
max-height: .33333px;
}

2. 乘法

SassScript中的乘法运算和加减法运算还略有不同。虽然他也能够支持多种单位(比如 em ,px , %),但当一个单位同时声明两个值时会有问题。比如下面的示例:

SCSS:
 .ride { width: 20px * 10px; }
 

编译报错:

 20px*px isn't a valid CSS value.

如果进行乘法运算时,两个值单位相同时,只需要为一个数值提供单位即可。改成:

SCSS:
 .ride { width: 20px * ; }


编译输出:
 .ride { width: 200px; }
 

在乘法运算中如有不同类型的单位时,也将会报错。

SCSS:
 .ride { width: 20px * 10rem; }
 

编译报错:

 200px*rem isn't a valid CSS value.

2.1 结合#@for来个好玩的

雪碧图一般都用compass@import "compass/utilities/sprites";来玩

SCSS:

 $icon-list: down, up, file, hot;
@for $c from through length($icon-list){
.icon-#{nth($icon-list,$c)}{
background-position: -30px * $c;
}
}

被编译为:

 .icon-down {
background-position: -30px;
}
.icon-up {
background-position: -60px;
}
.icon-file {
background-position: -90px;
}
.icon-hot {
background-position: -120px;
}

3. 除法

CSS 允许 / 出现在属性值里,作为分隔数字的一种方法。 既然 SassScript 是 CSS 属性语法的扩展, 他就必须支持这种语法,同时也允许 / 用在除法运算上。 也就是说,默认情况下,在 SassScript 里用 / 分隔的两个数字, 都会在 CSS 中原封不动的输出。

SCSS:

 .main {
font: 10px/8px; // 纯 CSS,不是除法运算
$width: 100px;
width: $width/; // 使用了变量,是除法运算
width: round(1.5)/; // 使用了函数,是除法运算
height: (500px/); // 使用了圆括号,是除法运算
margin-left: 5px + 8px/2px; // 使用了加(+)号,是除法运算 $font-size: 12px;
$line-height: 30px;
font: #{$font-size}/#{$line-height}; //纯CSS中使用变量和 /, 可以用 #{} 包住变量;
}

被编译为:

 .main {
font: 10px/8px;
width: 50px;
width: ;
height: 250px;
margin-left: 9px;
font: 12px/30px;
}

4. 来个栗子试试——颜色运算

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

 .main-col{ color: # + #; }
计算公式为 + = 、 + = 和 + = ,
被编译为: .main-col { color: #; }

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

 p { color: # * ; }
计算公式为 * = 、 * = 和 * = ,
被编译为: p { color: #; }

IE 滤镜需要每个颜色都包含 alpha 层, 并且得用 #AABBCCDD 这样严格的格式。你可以轻松的利用 {Sass::Script::Functions#ie_hex_str ie_hex_str} 函数对其做转换。 例如:

 $translucent-red: rgba(, , , 0.5);
$green: #00ff00;
div {
filter: progid:DXImageTransform.Microsoft.gradient(
enabled='false',
startColorstr='#{ie-hex-str($green)}',
endColorstr='#{ie-hex-str($translucent-red)}'
);
}
被编译为: div {
filter: progid:DXImageTransform.Microsoft.gradient(
enabled='false',
startColorstr=#FF00FF00,
endColorstr=#80FF0000
);
}

4. 最后一个栗子——字符运算

 + 运算符可以用来连接字符串:

 p { cursor: e + -resize; }
被编译为: p { cursor: e-resize; }
注意,如果有引号的字符串被添加了一个没有引号的字符串 (也就是,带引号的字符串在 + 符号左侧), 结果会是一个有引号的字符串。 同样的,如果一个没有引号的字符串被添加了一个有引号的字符串 (没有引号的字符串在 + 符号左侧), 结果将是一个没有引号的字符串。 例如: $c: "Hello" + " " + "Sass!";
.box:before {
content: " #{$c} ";
}
被编译为: .box:before {
content: " Hello Sass! ";
}

CSS之运算,Sass 之运算(加、减、乘、除)的更多相关文章

  1. js实现文本框支持加减运算的方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/T ...

  2. velocity加减运算注意格式 ,加减号的左右都要有空格

    velocity加减运算注意格式 ,加减号的左右都要有空格 #set( $left= $!biz.value - $vMUtils.getReturnMoney($!biz.billBuy) )

  3. [Swift]LeetCode592. 分数加减运算 | Fraction Addition and Subtraction

    Given a string representing an expression of fraction addition and subtraction, you need to return t ...

  4. C语言中指针变量的加减运算

    1.指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是0x20000000,表示表示此指针变量存放的是内存中位于0x20000000地方的内存地址.指针变量可以加减,但是只能与整型数 ...

  5. 大整数加减运算的C语言实现

    目录 大整数加减运算的C语言实现 一. 问题提出 二. 代码实现 三. 效果验证 大整数加减运算的C语言实现 标签: 大整数加减 C 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器 ...

  6. Linux中日期的加减运算

    Linux中日期的加减运算 目录 在显示方面 在设定时间方面 时间的加减 正文 date命令本身提供了日期的加减运算. date 可以用来显示或设定系统的日期与时间. 回到顶部 在显示方面 使用者可以 ...

  7. void *指针的加减运算

    1.手工写了一个程序验证void *指针加减运算移动几个字节: //本程序验证空类型指针减1移动几个字节 #include <stdio.h> int main(int argc, cha ...

  8. Oracle 日期加减运算

    -- Start 我们都知道数字可以进行加.减.乘.除等运算.那么,日期可不可以呢?答案是,日期只能进行加.减运算. 在开始操作日期之前,我们先了解一下 Oracle 支持哪些日期数据类型,如下所示: ...

  9. Leetcode 592.分数加减运算

    分数加减运算 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分 ...

随机推荐

  1. IIS配置相关问题:Framework 4.5 在IIS 7.5中运行

    <system.webServer>    <validation validateIntegratedModeConfiguration="false" /&g ...

  2. VS2008编译boost1.53

    1. 准备工作:下载boost_1_53_0.zip(bzip2-1.0.6.tar.gz/icu4c-4_4_2-Win32-msvc9.zip/Python-2.5.2.tar.bz2/zlib- ...

  3. python 爬虫 基于requests模块发起ajax的get请求

    基于requests模块发起ajax的get请求 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据 用抓包工具捉取 使用ajax加载页面的请求 鼠标往下 ...

  4. Oracle表的Rowid字段

    Rowid 字段类型: Rowid 是一行数据的一个唯一标识. ROWID 是数据的详细地址,通过 rowid,oracle 可以快速的定位某行具体的数据的位置. ROWID 可以分为物理 rowid ...

  5. skiplist(跳表)的原理及JAVA实现

    前记 最近在看Redis,之间就尝试用sortedSet用在实现排行榜的项目,那么sortedSet底层是什么结构呢? "Redis sorted set的内部使用HashMap和跳跃表(S ...

  6. RuntimeError: Model class user.models.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

    Django 2.x版本迁移数据库报这个错误,user表使用的Django的验证系统 本来就想改一下用户表的表名,莫名的报了个这个错误,在网上找到了解决办法 打开user应用模块下的apps.py文件 ...

  7. java基础: synchronized与Lock的区别

    主要区别 1. 锁机制不一样:synchronized是java内置关键字,是在JVM层面实现的,系统会监控锁的释放与否,lock是JDK代码实现的,需要手动释放,在finally块中释放.可以采用非 ...

  8. Codeforces 1196C. Robot Breakout

    传送门 维护合法区域的四个边 $xa,ya,xb,yb$ 表示在以 $(xa,ya)$ 为左下角,以 $(xb,yb)$ 为右上角的矩形内的点都是合法答案 对于一个起点 $(x,y)$,如果没法往左, ...

  9. MySQL性能优化(六):分区

    原文:MySQL性能优化(六):分区 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vbi ...

  10. 第一章 T-SQL查询和编程基础 T-SQL语言基础(1)

    T-SQL查询和编程基础(1) 1.1 理论背景 SQL是为查询和管理关系型数据库管理系统(RDBMS)中的数据而专门设计的一种标准语言. RDBMS是一种基于关系模型的数据库管理系统,关系模型则是一 ...