css预处理器 sass 部分语法说明


以下介绍一些 sass 中常用的语法

1,@at-root

@at-root 是一种控制选择器生成的语法,它允许你在嵌套的规则块中,跳出并生成根级别的选择器

举例1:

p {
  @at-root .inner {
    color: red;
  }
}

/* 相当于 */
.inner {
  color: red;
}

/* 编译为 */
.inner {
  color: red;
}

举例2:

p {
  @at-root .inner {
    &.abc {
      color: red;
    }
  }
}

/* 相当于 */
.inner {
  &.abc {
     color: red;
   }
}

/* 编译为 */
.inner.abc {
  color: red;
}

举例3:

下面这种情况,@at-root{} 是无效的,但也不报错。

p {
  @at-root {
    &.abc {
      color: red;
    }
  }
}

/* 相当于 */
p {
  &.abc {
    color: red;
  }
}

/* 编译为 */
p.abc {
  color: red;
}

2,!default

!default 是一个重要的标记:

当定义一个带有 !default 标记的变量时,sass 会检查变量是否已经存在。
如果变量已经被定义(即已经有值),则 !default 不会对其进行任何操作,保留之前的值。
但是,如果变量尚未被定义(即没有值),则 !default 会将给定的值赋给变量。

举例:

$primary-color: blue;
$primary-color: red !default;
body {
  background-color: $primary-color;
}

/* 编译为 */
body {
  background-color: blue;
}

3,Map & map-has-key() & map-get()

  1. Map 是一种键值对的数据结构,类似于 JavaScript 中的对象。
    可以使用 Map 存储一组相关的键值对,并通过键来访问对应的值。

  2. map-has-key() 函数接受两个参数:Map 和键。
    它会返回一个布尔值,表示该键是否存在于 Map 中。

  3. map-get() 函数接受两个参数:Map 和键。获取对应的值。

举例1:

$colors: (
  red: #ff0000,
  green: #00ff00,
  blue: #0000ff
);

.has-red-color {
  @if map-has-key($colors, red) {
    color: map-get($colors, red);
  } @else {
    color: black;
  }
}

/* 编译为 */
.has-red-color {
  color: #ff0000;
}

举例2

// 定义变量
$sm: 768px !default;
$md: 992px !default;
$lg: 1200px !default;
$xl: 1920px !default;

// 定义 Map
$breakpoints: (
  'xs': '(max-width: #{$sm})',
  'sm': '(min-width: #{$sm})',
  'md': '(min-width: #{$md})',
  'lg': '(min-width: #{$lg})',
  'xl': '(min-width: #{$xl})',
) !default;

// 定义 mixin
/* unquote 是一个内置的函数,用于移除字符串的引号 */
@mixin res($key, $map: $breakpoints) {
  @if map-has-key($map, $key) {
    @media only screen and #{unquote(map-get($map, $key))} {
      @content;
    }
  } @else {
    @warn "Undefined points: `#{$map}`";
  }
}

.media-block {
  @include res(xs) {
    display: block;
  }
}

/* 编译为 */
@media only screen and (max-width: 768px) {
  .media-block {
    display: block;
  }
}

4,内置模块

官网介绍

内置模块是一些定义好的函数或 mixin,通过特定语法 sass: 引入。

举例,使用 math 模块:

@use 'sass:math';

// math.div(1, 24) = 1/24
.class {
  max-width: (math.div(1/24) * 100) * 1%;
}

待续,以上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下雪天的夏风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值