【SCSS】常用的SCSS语法

CSS 预处理器用一种专门的编程语言,进行 Web 页面样式设计,然后再编译成正常的 CSS 文件,以供项目使用。CSS 预处理器为 CSS 增加一些编程的特性,无需考虑浏览器的兼容性问题”Sass 是采用 Ruby 语言编写的一款 CSS 预处理语言

Sass 和 SCSS 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点: 文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名 语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(😉,而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似

做一下对比: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MZXyIKC6-1658320195071)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bd10007ee21a44e988afe092aff50684~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?)]

单文件编译
sass <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css

多文件编译:
sass sass/:css/ 表示将项目中“sass”文件夹中所有“.scss”(“.sass”)文件编译成“.css”文件,
并且将这些 CSS 文件都放在项目中“css”文件夹中

sass --watch <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css开启“watch”功能,
这样只要你的代码进行任保修改,都能自动监测到代码的变化,并且给你直接编译出来: 

1.四种输出方式

嵌套输出方式 nested
展开输出方式 expanded  
紧凑输出方式 compact 
压缩输出方式 compressed 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kLJpY7sJ-1658320195071)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f949a8998ec847c390e860e45a81744a~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vwTzTGti-1658320195072)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/182e72492d1e47538aca4fffdcfdd6b6~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d4NCnMxo-1658320195072)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/45ece9b0ca844ae2b8c06520ea706383~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HSkAmkGQ-1658320195072)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2fdc14e52b90485d8fa8fa8810daa693~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?)]

2.嵌套

(1) 选择器嵌套

#css
nav a {
  color:red;
}
header nav a {
  color:green;
} 
#scss
nav {
  a {
    color: red;
    header & {
      color:green;
    }
  }  
} 

(2)属性嵌套

#css
.box {
    border-top: 1px solid red;
    border-bottom: 1px solid green;
} 
#scss
.box {
  border: {
   top: 1px solid red;
   bottom: 1px solid green;
  }
} 

(3)伪类嵌套

.clearfix{
    &:after {
        clear:both;
        overflow: hidden;
    }
} 

3.变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qCXG2rLY-1658320195072)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/94bc768126b644e7941e79746ca5ab20~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?)] 定义之后可以在全局范围内使用。在选择器、函数、混合宏…的外面定义的变量为全局变量。 如果值后面加上!default则表示默认值。

$btn-primary-color : #fff !default;

sass 的默认变量一般是用来设置默认值,然后根据需求来覆盖的,覆盖的方式也很简单,只需要在默认变量之前重新声明下变量即可。

$baseLineHeight: 2;
$baseLineHeight: 1.5 !default;
# 注意先后顺序 
em {
  $color: red;//定义局部变量
  a {
    color: $color;//调用局部变量
  }
} 
数据类型

在 Sass 中包含以下几种数据类型:

  • 数字: 如,1、 2、 13、 10px;
  • 字符串:有引号字符串或无引号字符串,如,“foo”、‘bar’、baz;
  • 布尔型:如,true、 false;
  • 空值:如,null;
  • 值列表:用空格或者逗号分开,如,1.5em 1em 0 2em 、 Helvetica, Arial, sans-serif。
  • 颜色:如,blue、 #04a3f9、 rgba(255,0,0,0.5);

(1)字符串
SassScript 支持 CSS 的两种字符串类型:

  • 有引号字符串 (quoted strings)
  • 无引号字符串 (unquoted strings)

在编译 CSS 文件时不会改变其类型。只有一种情况例外,使用 #{ }插值语句 (interpolation) 时,有引号字符串将被编译为无引号字符串。

(2)值列表
事实上,独立的值也被视为值列表——只包含一个值的值列表。 可以用 () 表示空的列表,这样不可以直接编译成 CSS,比如编译 font-family: ()时,Sass 将会报错。如果值列表中包含空的值列表或空值,编译时将清除空值,比如 1px 2px () 3px 或 1px 2px null 3px。

4. 混合宏

声明混合宏

在 Sass 中,使用“@mixin”来声明一个混合宏。

  • 不带参数混合宏:
@mixin border-radius{
    border-radius: 5px;
} 
  • 带参数混合宏
# 带值参数
@mixin border-radius($radius:5px){
    border-radius: $radius;
}
# 不带值参数
@mixin border-radius($radius){
    border-radius: $radius;
}
# 带多个参数
@mixin center($width,$height){
  width: $width;
  height: $height;
  margin-top: -($height) / 2;
  margin-left: -($width) / 2;
} 

带特别多参数混合宏:

有一个特别的参数“…”。当混合宏传的参数过多之时,可以使用参数来替代

# 带特别多参数
@mixin box-shadow($shadows...){
  @if length($shadows) >= 1 {
    -webkit-box-shadow: $shadows;
    box-shadow: $shadows;
  } @else {
    $shadows: 0 0 2px rgba(#000,.25);
    -webkit-box-shadow: $shadow;
    box-shadow: $shadow;
  }
} 
调用混合宏

匹配了一个关键词“@include”来调用声明好的

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LESS和SCSS都是一种基于CSS之上的高级语言,它们都提供了更多的功能和特性,可以大大提高代码编写的效率。LESS语法相对来说更加清晰明了,容易上手。而SCSS在功能上更加强大,支持条件语句等高级特性。 LESS语法示例: 1. 变量声明:使用@符号来声明变量,例如:@color: #333; 2. 混合器:使用.mixin来定义和使用代码块的片段,可以实现代码的复用,例如:.mixin { font-size: 14px; color: #333; } 3. 嵌套规则:可以在父选择器内嵌套子选择器,简化了选择器的书写,例如:.parent { .child { color: red; } } 4. 运算:可以对数值进行加减乘除等运算,例如:@width: 100px + 50px; 5. 导入文件:可以使用@import语句导入其他LESS文件,例如:@import "variables.less"; SCSS语法示例: 1. 变量声明:使用$符号来声明变量,例如:$color: #333; 2. 混合器:使用@mixin来定义和使用代码块的片段,可以实现代码的复用,例如:@mixin mixin { font-size: 14px; color: #333; } 3. 嵌套规则:可以在父选择器内嵌套子选择器,简化了选择器的书写,例如:.parent { .child { color: red; } } 4. 运算:可以对数值进行加减乘除等运算,例如:$width: 100px + 50px; 5. 导入文件:可以使用@import语句导入其他SCSS文件,例如:@import "variables.scss"; 总结来说,LESS和SCSS语法上有一些细微的差异,但整体上非常相似,都提供了类似的功能和特性,具体使用哪一种语法主要取决于个人喜好和项目需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [less和scss的区别](https://blog.csdn.net/Jadon_z/article/details/126750935)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [LESS 和 SCSS 的区别](https://blog.csdn.net/sky89299/article/details/124484021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值