📜  SASS | @转发规则

📅  最后修改于: 2021-08-29 12:24:50             🧑  作者: Mango

@forward 规则处理 Sass 样式表,并在使用 @use 规则加载样式表时使它们的函数、mixin 和变量可用。跨多个文件组织 Sass 库成为可能,同时为用户提供处理单个入口点文件。

句法:

@forward ""

上面的代码加载给定 URL 上可用的模块。它使加载模块的公共成员可供模块用户使用,就好像它们是直接在模块中定义的一样。如果需要,这些成员在模块中不可用,也可能会使用@use规则。它只处理模块一次。如果@forward@use都是为同一个文件中的同一个模块编写的,那么总是先写@forward 。通过这种方式,如果用户想要配置转发的模块,那么在@use 处理它之前,该配置将应用于@forward,无需任何配置。
例子:

// gfg/_list.css
@mixin geeks 
  font-family: times new roman
  font-size: 4px
  padding: 2px
  
  
// geeksforgeeks.scss
@forward "gfg/list"
  
  
// style.scss
@use "geeksforgeeks"
gfg1 
  @include geeksforgeeks.geeks

这将导致以下 CSS 输出:

gfg1 {
  font-family: times new roman
  font-size: 4px
  padding: 2px
}

添加前缀:
有时名称在定义它们的模块之外可能不正确,因此,@forward 可以选择为它指向的所有成员添加额外的前缀。
句法:

@forward "" as -*

这会将给定的前缀添加到模块指向的每个 mixin、函数和变量名称的开头。
例子:

// gfg/_list.css
@mixin forgeeks
  font-family: times new roman
  font-size: 4px
  padding: 2px
  
  
// geeks.scss
@forward "gfg/list" as geeks*
  
  
// style.scss
@use "geeksforgeeks"
gfg1 
  @include geeks.geeksforgeeks

这将导致以下 CSS 输出:

gfg1 {
  font-family: times new roman
  font-size: 4px
  padding: 2px
}

配置模块:
也可以使用@forward 规则处理带有配置的模块。 @forward 规则的配置也可以在其配置中使用 !default 标志。这允许模块更改上游样式表的默认值,同时还允许下游样式表覆盖它们。
例子:

// _gfg.sass
$green: #000 !default
$border-radius: 2px !default
$box-shadow: 0 2px 1px rgba($green, 1) !default
  
  
geeks
  border-radius: $border-radius
  box-shadow: $box-shadow
  
// _geeksforgeeks.sass
@forward 'gfg' with ($green: #222 !default,
               $border-radius: 4px !default)
  
  
// style.sass
@use 'geeksforgeeks' with ($green: #333)

这将导致以下 CSS 输出:

geeks {
  border-radius: 4px;
  box-shadow: 0 2px 1px rgba(51, 51, 51, 1);
}