scss-函数
在scss中除了可以定义变量,具有@extend和@mixins等特性之外,还自备了一系列的函数功能。
scss本身带有大量的内置函数,具体可以参阅官网函数模块。
一、字符串函数
- unquote($string):只能删除字符串最前和最后的引号(双引号或单引号),而无法删除字符串中间的引号。如果字符没有带引号,返回的将是字符串本身。
- quote($string):只能给字符串增加双引号,而且字符串中间有单引号或者空格时,需要用单引号或双引号括起,否则编译的时候将会报错。
二、数字函数
- percentage($value):将一个不带单位的数转换成百分比值,如果转换的值是一个带有单位的值,那么在编译的时候会报错误信息:
- round($value):将数值四舍五入,转换成一个最接近的整数,可以携带单位的任何数值。
- ceil($value):将大于自己的小数转换成下一位整数;将一个数转换成最接近于自己的整数,会将一个大于自身的任何小数转换成大于本身1的整数。也就是只做入,不做舍的计算
- floor($value):将一个数去除他的小数部分;floor()函数刚好与ceil()函数功能相反,其主要将一个数去除其小数部分,并且不做任何的进位。也就是只做舍,不做入的计算
- abs($value):返回一个数的绝对值;
- min($numbers…):找出几个数值之间的最小值;
- max($numbers…):找出几个数值之间的最大值。
三、List函数
- length($list):返回一个列表的长度值;
- nth($list, $n):返回一个列表中指定的某个标签值
- join($list1, $list2, [$separator]):将两个列给连接在一起,变成一个列表;
- append($list1, $val, [$separator]):将某个值放在列表的最后;
- zip($lists…):将几个列表结合成一个多维的列表;
- index($list, $value):返回一个值在列表中的位置值。
四、自定义函数
可能有时候,内置的函数并不能够完全满足我们的需求,那么我们也自定义函数。
语法:
@function function-name($args) {
@return value-to-be-returned;
}
@function开头声明一个函数,函数内部使用@return返回一个值,参数可以省略。总体来讲scss中的函数和JavaScript中的函数大同小异,并且具备某些ES2015函数的特点。函数可以放置在想要使用函数返回值的地方,scss代码实例如下
div {
font-size: font-size($args);
}
特别说明:scss函数名中的中划线和下划线是等同的,font-size和font_size指向同一个函数。
@function column-width($col, $total) {
@return percentage($col/$total);
}
.col-3 {
width: column-width(3, 8);
}
编译后的css代码如下:
.col-3 {
width: 37.5%;
}
默认参数:scss代码实例如下:
@function column-width($col:3, $total:8) {
@return percentage($col/$total);
}
.col-3 {
width: column-width();
}
参数名称后面跟着一个冒号,冒号后面就是规定的默认参数值;函数调用时,对应的参数没有传递值,那么就使用默认参数值,上面代码编译结果如下:
.col-3 {
width: 37.5%;
}
再来看一段scss代码实例:
@function column-width($col:3, $total) {
@return percentage($col/$total);
}
.col-3 {
width: column-width(4);
}
上面的代码会报错,函数调用时只传递了一个参数,但是函数声明时规定了两个参数,并且第二个参数没有默认值,也就是说函数调用时所传递的参数必须和声明时规定的参数对应起来。
@function column-width($col:3, $total:8) {
@return percentage($col/$total);
}
.col-3 {
width: column-width(4);
}
传递的参数会覆盖默认的参数,所以4会覆盖3,第二个参数使用默认值。编译结果如下:
.col-3 {
width: 50%;
}
函数rest参数:
给函数传递的参数个数也许不是固定的,或者不能预知为函数传递参数的个数。代码实例如下:
@function column-width($index, $widths...){
@return nth($widths, $index);
}
.col-3 {
width: column-width(3, 25%, 50%, 75%, 100%);
}
rest参数的形式是参数名称后面跟三个点。上面代码中,3会传递给$index,后面的剩余参数会都传递给$widths($widths生成一个list列表)。nth()是一个内置函数,可以从列表中找到对应索引的值(索引是从1开始的,与大多数编程语言从0开始不同)。上面代码编译结果如下:
.col-3 {
width: 75%;
}
文本超出范围,显示省略号
/*文本格式化,超出范围,显示省略号*/
@mixin text-overflow($width:100%,$display:block) {
width: $width;
display: $display;
white-space: nowrap;
-ms-text-overflow: ellipsis;
text-overflow: ellipsis;
overflow: hidden;
}
调用@include text-overflow();也可以自己传入参数,display为block或inline-block才能达到预期的效果
编译的css代码如下:
width: 100%;
display: block;
white-space: nowrap;
-ms-text-overflow: ellipsis;
text-overflow: ellipsis;
overflow: hidden;
scss-函数的更多相关文章
- scss基本用法
特别说明:scss函数名中的中划线和下划线是等同的,font-size和font_size指向同一个函数. 1.变量 2.选择器嵌套 3.属性嵌套 规则如下: (1).把属性名从中划线-的地方断开. ...
- webpack单独构建scss文件与.vue组件里构建scss的一个坑
在入口main.js里构建scss是通过引入模块的方式 import './assets/_reset.scss'; import './assets/_flex.scss'; import './a ...
- scss的使用方法
引用scss文件--看上一篇的less使用,里面的Koala,一样的原理!!! 方法一: scss: /**定义变量 */$width:404px;$color:green;$font-size:20 ...
- webpack4.0各个击破(2)—— CSS篇
webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...
- scss--函数 (Functions)--unitless
(Sass::Script::Value::Bool) unitless($number) Returns whether a number has units. Examples: unitless ...
- vue-cli3项目搭建配置以及性能优化
项目初始化 注意:安装前请确保有安装node.js,并且node>=8.9 全局安装vue npm install -g @vue/cli 如果之前安装了vue旧版本,查看vue --versi ...
- Vue-cli 多页相关配置记录
Vue-cli 多页相关配置记录 搭建一个顺手的MPA项目脚手架,其实根据项目的不同目录结构和打包配置都可以进行灵活的调整.这次的项目可能是包含各种客户端和管理后台在一起的综合项目所以需要将样式和脚本 ...
- 移动端 rem和flexible
一.rem布局 rem是相对于根元素的字体大小单位. 假设html的字体大小为16px,那么1rem = 16px; 一旦根元素html定义的font-size变化,整个页面中运用到的rem都会随之变 ...
- SCSS & SASS Color 颜色函数用法
最近做一个没有设计师参与的项目,发现 scss 内置的颜色函数还挺好用.记录分享下 rgba() 能省掉手工转换 hex 到 rgb 格式的工作,如以下 SCSS 代码 $linkColor: #20 ...
随机推荐
- Python小白学习之路(三)—【数字功能】【字符串功能】
数字(int)常见功能 在网络课上,老师把这些功能称为神奇的魔法,想要揭开魔法神奇的面纱,想要看看有什么招数,在Pycharm里敲击三个字母(int),按住Ctrl,将鼠标点在int上,这时鼠标会变成 ...
- 微信小程序开发笔记1,认识小程序的项目构成
省去安装和基本操作, app.js脚本文件 qpp.json配置文件(添加删除页面,都要在这个文件下修改入口配置) app.wxss样式表文件 app前缀为全局的 在app.json中配置项目的每个页 ...
- hive与hbase的整合
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点学习成本低,可以通过类S ...
- (转)浅谈MySql的存储引擎(表类型)
原文:http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html 什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到 ...
- 快速初步了解Neo4j与使用
快速初步了解Neo4j与使用 Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中.它是一个嵌入式的.基于磁盘的.具备完全的事务特性的Java持久化引擎,但是它将结构化 ...
- Fiddler Web Debugger的代理功能(图文详解)
不多说,直接上干货! Fiddler的大部分功能都是在其作为本地代理的基础上实现的,如上面介绍的原理图一样,如果想实现数据包截断功能必须要设置为代理,它的代理功能设置比较简单,Fiddler版本2以后 ...
- 关于Item
0.Item The base class of all items, which implements default behavior. 项(Item)代表一个字节码中可以寻址的实体,有许多种类的 ...
- 《垃圾回收的算法与实现》——保守式GC
保守式GC 保守式GC指"不能识别指针和非指针的GC". 不明确的根,寄存器.调用栈.全局变量空间等属于GC root,这些GC均不能识别出是指针还是非指针. 指针的识别,在不明确 ...
- pycharm的python console报错CE.app/Contents/helpers/pydev/_pydev_bundle/pydev_ipython_console_011.py", line 87, in init self.matchers.remove(self.python_matches) ValueError: list.remove(x): x not in list
卸载ipython pip uninstall ipython 安装ipython6.2.0 pip install ipython==6.2.0
- C和C++结构体的区别
C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数.所以C的结构体是没有构造函数.析构函数.和this指针的. C的结构体对内部成员变量的访问权限只能是public,而C++ ...