scss

scss在css基础语法上面增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline imports) 等高级功能,使用scss可以很方便的提高开发效率

scss语法以.scss文件后缀结尾,其中语法格式有两种sass,scss,两种语法在书写风格有差异,如下代码所示

scss

.container {
width: 100px;
height: 100%;
.nav {
width: 100px;
}
}

sass

.container
width: 100px;
height: 100%;
.nav
width: 100px;

语法


嵌套规则 (常用)

scss允许将一套css样式嵌入另一套样式中,外层的容器将作为内层容器的父选择器,如下代码

.container {
width: 500px;
height: 100px;
header {
width: 100%;
height: 20%;
}
main {
width: 100%;
height: 20%;
}
footer {
width: 100%;
height: 20%;
}
}

编译后

.container {
width: 500px;
height: 100px;
}
.container header {
width: 100%;
height: 20%;
}
.container main {
width: 100%;
height: 20%;
}
.container footer {
width: 100%;
height: 20%;
}

父选择器 (常用)

有时需要在内层样式内选择外层的父元素,那么就可以使用&符号,如下代码所示

.container {
width: 500px;
height: 100px;
&_header {
width: 100%;
height: 20%;
&:hover {
color: red($color: #000000);
}
}
&_main {
width: 100%;
height: 20%;
&:disabled {
color: red;
}
}
&_footer {
width: 100%;
height: 20%;
&::after {
position: absolute;
content: '';
}
}
}

编译后

.container {
width: 500px;
height: 100px;
}
.container_header {
width: 100%;
height: 20%;
}
.container_header:hover {
color: 0;
}
.container_main {
width: 100%;
height: 20%;
}
.container_main:disabled {
color: red;
}
.container_footer {
width: 100%;
height: 20%;
}
.container_footer::after {
position: absolute;
content: '';
}

属性简写 (不常用)

.container {
width: 500px;
height: 100px;
font: {
family: fantasy;
size: 30em;
weight: bold;
}
background: {
image: url('xxx');
size: 100%;
}
}

编译后

.container {
width: 500px;
height: 100px;
font-family: fantasy;
font-size: 30em;
font-weight: bold;
background-image: url('xxx');
background-size: 100%;
}

变量 (常用)

scss中使用$符号定义变量

  • 全局变量

    在scss文件顶部定义的变量,为全局变量
$font-color: red;
$font-size: 18px;
$font-size-base: $font-size; .text {
color: $font-color;
font-size: $font-size;
} span {
font-size: $font-size-base;
}

编译后

.text {
color: red;
font-size: 18px;
} span {
font-size: 18px;
}
  • 局部变量

    在属性内定义的变量为块级变量
.text {
$font-color: red;
$font-size: 18px;
$font-size-base: $font-size;
h1 {
color: $font-color;
font-size: $font-size;
span {
color: $font-color;
font-size: $font-size;
}
}
}

编译后

.text h1 {
color: red;
font-size: 18px;
}
.text h1 span {
color: red;
font-size: 18px;
}

运算 (常用)

scss中支持+ - * /运算

$base-width: 10;
$small-width: 30;
$large-width: $base-width + $small-width; .div {
width: $large-width + px;
} .div1 {
width: $small-width - $base-width + px;
} .div2 {
width: $small-width * $base-width + px;
} .div2 {
width: calc($small-width / $base-width) + px;
}

编译后

.div {
width: 40px;
} .div1 {
width: 20px;
} .div2 {
width: 300px;
} .div2 {
width: 3px;
}

@extend

scss允许使用@extend集成其他样式规则

.item {
width: 100%;
height: 20%;
background-color: red;
} .item-1 {
@extend .item;
border: 1px solid blue;
} .item-2 {
@extend .item;
border: 2px solid blue;
}

编译后

.item,
.item-2,
.item-1 {
width: 100%;
height: 20%;
background-color: red;
} .item-1 {
border: 1px solid blue;
} .item-2 {
border: 2px solid blue;
}

@if

当条件满足时,输入对应的样式

p {
@if 1 + 1 == 2 {
border: 1px solid;
}
@if 5 < 3 {
border: 2px dotted;
}
@if null {
border: 3px double;
}
} $type: monster;
p {
@if $type == ocean {
color: blue;
} @else if $type == matador {
color: red;
} @else if $type == monster {
color: green;
} @else {
color: black;
}
}

编译后

p {
border: 1px solid;
} p {
color: green;
}

@for

  • 语法一:@for $var from <start> through <end>

    从start开始,包含end
@for $i from 1 through 3 {
.item-#{$i} {
width: 2em * $i;
}
}

编译后

.item-1 {
width: 2em;
} .item-2 {
width: 4em;
} .item-3 {
width: 6em;
}
  • 语法二:@for $var from <start> to <end>

    从start开始,不包含end
@for $i from 1 to 3 {
.item-#{$i} {
width: 2em * $i;
}
}

编译后

.item-1 {
width: 2em;
} .item-2 {
width: 4em;
}

最新文章

  1. 三、Android学习第三天——Activity的布局初步介绍(转)
  2. 使用kuernetes提供高可用的kibana服务
  3. 【HDU 4408】Minimum Spanning Tree(最小生成树计数)
  4. ul li 下的元素内容垂直居中
  5. ios 在ios9中 NSNotificationCenter addObserver 不会影响对象释放
  6. JavaWeb动态导出Excel可弹出下载
  7. SQL调优
  8. Spring源码学习之:ClassLoader学习(1)
  9. MariaDB远程连接配置
  10. Python学习笔记(4):自定义时间类
  11. H3C S5000和H3C S5500,俺来罗
  12. Android开发手记(20) 数据存储五 网络存储
  13. 【转】Android开源项目 分类 便于查看
  14. win7笔记本电脑实现wifi共享
  15. 【Android】Android在AlertDialog使用大全
  16. mysql 中文字段排序( UTF8按拼音首字母排序)
  17. 【优秀的iPhone/iPad数据恢复工具】Omni Recover for Mac 2.5
  18. 12生成器,send,推导式
  19. TCP长连接保持连接状态
  20. Expression 生成 Lambda

热门文章

  1. 【算法训练营day1】LeetCode704. 二分查找 LeetCode27. 移除元素
  2. Volatile介绍
  3. PHP配置负载均衡
  4. 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):MPG:一种有效的自我监督框架,用于学习药物分子的全局表示以进行药物发现
  5. python实现鼠标手动截图(类似于QQ截图)
  6. 四、Pod 介绍
  7. vulnhub靶场之CORROSION: 2
  8. ubuntu下Mysql安装与root密码重置
  9. pod(七):静态pod
  10. 纯css爱心代码-最近超级火的打火机与公主裙中的爱心代码(简易版)