此篇会着重在客制化修改会用到的 sass 基础语法以及观念分为上下两集。
scss 注解有分为
会被编译
、不会被编译
两种。
写法://
// 不会被编译到 css 档案中
写法:/**/
/* 会被编译到 css 档案中 */
几乎全部自定义样式所需要的变数都由
_variable.scss
作为基底。
重新赋值
的特性,将尚未重新被赋予新值的变数,保留预设值的设置。预设值(若没有设置其它颜色,则会是黑色)
$paragraph-color : blue;
$paragraph-color : #000 !default;
p {
color : $paragraph-color;
}
因此在 _variable.scss
档案中大部分变数结尾都有加上 !default
,使开发者进行客制化时,能更方便覆盖原有的变数。
唯一例外情况:
null
则不会被覆盖。$paragraph-color : null;
$paragraph-color : #000 !default;
p {
color : $paragraph-color;
}
$paragraph-margin-bottom
、$btn-padding-y
)简化开头相同的 css 样式。
举例 border
// 原本
.box {
border: 1px solid #000;
border-radius: 10%;
border-color: blue;
}
// 简化
.box {
border: 1px solid {
radius: 10%;
color: blue;
}
}
sass 提供蛮多好用的函式,简单介绍几个常用的。
type-of:返回目标类型。
type-of(目标)
type-of(#000); // color;
type-of("Kent"); // string;
zip:合并多个阵列(每个阵列长度必须一致,否则会 编译失败
)
zip(阵列, 阵列, ...)
zip(1 2, 3 4) //((1 2), (3 4))
zip(1, 4) // (1, 4)
append:新增资料到阵列中
append(目标阵列, 参数)
append: (1px 2px, 3px); // 1px 2px 3px
append((), "Kent"); // (Kent) 将型态转为阵列
针对字串操作的函式。
str-length:返回字串长度。
str-length(目标字串)
str-length("Kent"); // 回传 4
str-index:返回索引值。(搜寻字串中第一次出现的位置,没搜寻到
则会回传 null
)
str-index(目标字串, 要搜寻的字)
str-index("Kent", "K"); // 回传 1
str-slice:返回撷取後的字串。(从 1 开始,若省略第三个参数则会预设撷取到字串最後)
str-slice(目标字串, 起始位置, 结束位置)
str-slice("Kent", 1 ,3); // 回传 Ken
str-slice("Kent", 2); // 回传 ent
针对阵列操作的函式,索引值从 1 开始。
length:返回阵列长度。
length(目标阵列)
$color: (#000 #fff #111)
length($color) //3
length(1px 2px 3px) //3
index:返回索引值。(搜寻阵列中第一次出现的索引值,没搜寻到
则会回传 null
)
$color: (#000 #fff #111)
length($color, #000) //1
length(1px 2px 3px, 3px) //3
nth:返回该索引的值。(获取阵列中对应位置的值,没搜寻到
则会编译错误
。)
$color: (#000 #fff #111)
length($color, 1) //#000
length(1px 2px 3px, 3) //3px
针对 map 型态操作的函式。
map-get:返回取的值
map-has-key:返回布林值。(搜寻 map 中 key 值是否存在)
map-keys:返回阵列。(由所有 key 值所组成)
map-values:返回阵列。(由所有 value 值所组成)
map-remove:删除 map 指定的 key 资料。(若 key 不存在 map 中,则会回传和之前一样的 map)
map-merge:合并两个 map。
$font-sizes: (
"1": 1rem,
"2": 2rem,
"3": 3rem
);
map-get($font-sizes, "2"); // 2rem
map-has-key($font-sizes, "2"); // true
map-keys($font-sizes) // ("1", "2", "3")
map-values($font-sizes) // (1rem 2rem 3rem)
map-remove($font-size, "3"); //("1": 1rem, "2": 2rem)
map-merge($font-sizes, (
"4": 4rem,
"5": 5rem
));
//("1": 1rem, "2": 2rem, "4": 4rem, "5": 5rem)
想了解更内建函式请参考官方文件:Built-In Modules
-
、_
符号
变数名称
或 函式名称
时是相同的。变数范例
$banner_title: 87px;
.banner {
font-size: $banner-title;
}
覆盖特性
$banner-title: 87px;
$banner_title: 987px;
.banner {
font-size: $banner-title;
}
函式范例
@function mix_color($color1, $color2) {
@return mix($color1, $color2);
}
.text-color {
color: mix-color(#010203, #040506);
}
⚠️ 注意
变数名称
或 函式名称
使用上才是相同,如果是 样式名称
就不同了。
&
符号,用於连接的父层撰写巢状结构(类似 BEM 命名结构)
.banner {
&-title {
font-size: 3rem;
}
&-color {
color: red;
}
}
编译後的 css
.banner-title {
font-size: 3rem;
}
.banner-color {
color: red;
}
巢状结构真的写过都说赞,写到後面根本无法离开。
想了解更多符号请参考官方文件:Style Rules
下一集将介绍资料型态、运算符号、插补。
>>: Day 28 Compose UI ModalBottomSheetLayout
上次我们最後提到一些例子 -sh sharpness -100~100 -br brightness...
tags: 工作後才知道的後端30件小事 可以先思考一下以下的输出的什麽? <?php $ar...
前言 受惠於深度学习框架的多元性,开发者可以选自己喜欢的框架, 像是: Theano、Caffe、O...
听听其他人对於快速面试的应对。 有被问到专案的优化方式如何,当时我答不好(冏)後来听到组员回答的很...
软件专案通常由许多程序码档案以及资源档组成,C++ 专案透过编译、连结产生各平台的可执行档。多数专案...