SCSS的学习和使用

2019-08-15  本文已影响0人  小热呀丶

介绍

SASS是最早的css预处理语言之一。
为了适应编程风格的需求,sass在编程风格上做了一些修改,现在称之为SCSS。
SCSS增加了一些新的功能,增强了对css3的支持,其语法完全兼容CSS3,并且继承了sass的强大功能。
任何标准的css3样式表都是具有相同语义的有效的scss文件。另外,SCSS还能识别大部分css hacks和特定于浏览器的语法,例如:古老的IE filter。由于SCSS是CSS的扩展,因此,所有在css中工作的代码也能在scss中正常工作。
现在学习scss完全没有必要关注以前sass的规则。

$nav-color: #F90;
nav {
  $width: 100px;
  width: $width;
  color: $nav-color;
}
// 编译过后
nav {
  width: 100px;
  color: #F90;
}

变量

变量的声明

使用$符号可以标识一个变量,代码如下:

$width

$width: 100px;

$basic-border: 1px solid black;

以前都是用!来标识一个变量,之所以改成$符号,是因为比较美观- -!

变量的引用
$highlight-color: red;
.selected {
  border: 1px solid $highlight-color;
}
/* 编译过后 */
.selected {
  border: 1px solid red;
}
$highlight-color: red;
$highlight-border: 1px solid $highlight-color;
.selected {
  border: $highlight-border;
}
/* 编译过后 */
.selected {
  border: 1px solid red;
}
$ground-color: red;
.selected{
  border: $ground_color;
}
/* 编译过后 */
.selected{
  border: red;
}
作用域

SCSS中,变量具有两种作用域类型:
(1).全局作用域。
(2).局部作用域。
默认情况下,定义在选择器之内的变量为局部变量,定义在选择器之外的为全局变量。

$bg-color: green;
## 正常 $bg-color 是一个全局变量,所以在下面可以应用到
div{
  $border-width:5px;
  color:$bg-color;
  border:$border-width solid red;
}
## 会报错,$border-width属于局部变量,而p中是引用不到的
p{
  border:$border-width solid red;
}
$text-color:red;
@mixin button-style {
  $text-color: lime;
  color: $text-color;
}
@mixin link-style {
  $text-color: black;
  color: $text-color;
}
button {
  @include button-style;
}
a {
  @include link-style;
}
.wrap {
  background: $text-color;
}
/* 编译过后 */
button {
  color: lime; 
}
a {
  color: black; 
}
.wrap {
  background: red; 
}
@mixin button-style {
  $btn-bg-color: lightblue !global;
  color: $btn-bg-color;
}
button {
  @include button-style;
}
.wrap {
  background: $btn-bg-color;
}
/* 编译过后 */
button {
  color: lightblue; 
}
.wrap {
  background: lightblue; 
}
默认值

在变量赋值之前, 利用!default为变量指定默认值。
也就是说,如果在此之前变量已经赋值,那就不使用默认值,如果没有赋值,则使用默认值。

$content: "hi" !default;
.main {
  content: $content;
}

## 编译之后
.main {
  content: "hi"; 
}
$content:"hello";
$content: "hi" !default;
.main {
  content: $content;
}

## 编译之后
.main {
  content: "hello"; 
}
上一篇下一篇

猜你喜欢

热点阅读