Skip to content

Scss语法

1、定义和使用变量

$primary-color: #333;
$secondary-color: #666;
$font-stack: Helvetica, sans-serif;

body {
  font: 100% $font-stack;
  color: $primary-color;
}

h1 {
  color: $secondary-color;
}

2、全局变量

body {
  $secondary-color: #666 !global;
  color: $secondary-color;
}

h1 {
  color: $secondary-color; // 现在可以访问 $secondary-color
}

3、deep写法

<!-- scss写法 -->
::v-deep .a{

}

<!-- less写法 -->
/deep/ .a {
  
}

4、定义和使用混合宏

使用 @mixin 来定义混合宏,并使用 @include 来调用混合宏。

@mixin border-radius($radius) {
  border-radius: $radius;
}

.box {
  @include border-radius(10px);
}

5、带参数的混合宏

$blue: #324157;
$light-blue: #3A71A8;

@mixin colorBtn($color) {
  background: $color;

  &:hover {
    color: $color;

    &:before,
    &:after {
      background: $color;
    }
  }
}

.blue-btn {
  @include colorBtn($blue)
}

.light-blue-btn {
  @include colorBtn($light-blue)
}

6、继承(@extend)

.button {
  padding: 10px 20px;
  font-size: 16px;
  border-radius: 5px;
}

.primary-button {
  @extend .button;
  background-color: #3498db;
  color: #fff;
}

.secondary-button {
  @extend .button;
  background-color: #2ecc71;
  color: #fff;
}

7、占位选择器

占位选择器以 % 符号开头,只有在被继承时才会生成CSS代码。

%message {
  border: 1px solid #ccc;
  padding: 10px;
  color: #333;
}

.success {
  @extend %message;
  border-color: green;
}

.error {
  @extend %message;
  border-color: red;
}

<!-- 编译后 -->
.success, .error {
  border: 1px solid #ccc;
  padding: 10px;
  color: #333;
}
.success {
  border-color: green;
}
.error {
  border-color: red;
}

8、运算

示例:数值运算

$base-padding: 10px;
$double-padding: $base-padding * 2;
$half-padding: $base-padding / 2;

.container {
  padding: $double-padding $half-padding;
}

示例:颜色运算

<!-- lighten和darken为内置函数 -->
$base-color: #3498db;
$light-color: lighten($base-color, 20%);
$dark-color: darken($base-color, 20%);

.button {
  background-color: $base-color;
  border-color: $dark-color;

  &:hover {
    background-color: $light-color;
  }
}

9、自定义函数

@function px-to-rem($px, $base-font-size: 16px) {
  @return $px / $base-font-size * 1rem;
}

.container {
  font-size: px-to-rem(18px);
}

<!-- 编译后 -->
.container {
  font-size: 1.125rem;
}