sass

nothing-sy2023-04-03css sass

前言

本章主要讲一些sass需要注意的点

嵌套语法

sass的嵌套语法能减少很多重复的工作量,包含了以下N种形式:

普通嵌套

div {
  p {
    color: red;
  }
  a {
    color: blue;
  }
}

编译成:

div p {color:red}
div a {color: blue}

父选择器

div {
  color: red;
  &:hover{ // 被转成 div:hover
    color: blue;
  }
 .custom {
  &__left { //被转成 div .custom__left,直接把&符号理解成替换符号

  }
 }
  & & { //你也可以重复使用父选择器,会被转成: div div {color: gray}
    color: gray;
  }

  & > { // 编译成: div > div {} 
    div {

    }
  }

}

注意

&选择符相当于替换,父级的选择器,当多层嵌套的时候,&表示N层父级。比如:

div {
  p {
    color:red;
    &:hover{}
  }
  .custom {
        &__left{}
  }
}

//编译成:
div p{color:red}
div p:hover{} // &等于 `div p`选择器
div p .custom__left {} //注意此处不会有层级.custom,而是直接.custom__left, 因为 &符号相当于`div p .custom`再拼接__left

属性嵌套

除了选择器嵌套,属性也可以嵌套,诸如border-left/border-right等等 可以使用如下方式。这样就无需去记一些组合属性的有序和无序问题

  div {
    border:solid {
      left: 5px red;
      right: 5px blue;
    }
    margin: {
      left: 5px;
      right: 10px
    }
  }

//会编译成
```css
div {
  border: solid; //记住这个特殊点,但是有些属性因为css本身的问题,编译出来可能不是最佳实践导致样式无效,比如此处三个border样式是无法达到预期的
  border-left: 5px;
  border-right: 5px;

  margin-left: 5px;
  margin-right: 10px;
}



## mixin 混合器

混合器主要是用于处理一些多处使用的复杂的样式,无法单纯使用变量处理。
这里主要讲如何使用mixin

:::: code-group
::: code-group-item MIXIN

```scss
@mixin custom-bg {
  color: red;
  background: blue;
}

:::

<style lang="scss" scope>
@import 'xxxxx.mixin.scss'
div {
  @include custom-bg;
}
</style>

::::

注意

使用mixin,要么在具体位置import,要么使用scss的data配置(详见官网),全局混入,否则会提示找不到这个混合器

Last Updated 2025-02-20 03:36:19