从另一个文件中的 class 名称扩展 sass
extend from class name in another file sass
所以我目前正在按照 BEM 标准进行一些样式设计。
我正在做的一个例子可能是这样的:
.block{
&__element {
}
}
我想做的是:
// file a
.block {
...
}
-
// file b
// add magic to reference the `block`class in file a
&__elelemnt {
...
}
我目前在做什么:
// file a
.block {
...
}
-
// file b
.block__elelemnt {
...
}
(手动将 block
部分添加到名称中)
有什么方法可以更聪明地引用它吗?
提前致谢
这可能是您能做的最好的了。
$namespace: "block";
.#{$namespace}-myClass {
...
}
输出
.block-myClass {
...
}
您可以将变量 $namespace
保留在文件顶部或其他文件中,然后 import
它。使用变量的好处是你可以更新一次,你所有的引用都会被更新。
SASS 就是干货。
就像,如果你想修改任何东西,你应该能够从一个地方修改它。如果您需要跨多个文件可用的任何内容,请考虑在 _vars
文件中定义其值并将其包含在您需要的任何位置。另请注意,这与代码短小无关,但与代码的可维护性和灵活性有关。
事实上,即使您确实需要编写更多代码(实际上不会发生这种情况),DRY 的优势也远远超过它。
应该怎么做:
/* _vars.scss: */
$block:block;
/* a.scss: */
@import _vars;
.#{$block} {
...
}
/* b.scss: */
@import _vars;
.#{$block}__element {
...
}
现在,无论何时您需要更改 block
值,您都可以从一个地方进行:_vars.scss
。
但是,在实践中,大多数人使用初始技术(嵌套):
.block {
...
&__element {
...
}
}
可能 .block
和 .block__element
是相关的,总的来说,将它们放在同一个文件中更有意义。随着您的应用程序变得越来越复杂,如果您将代码过度复杂化,您会发现很难跟踪代码。
你可以有这样的文件结构:
block-1/
--block-1.scss
--element-1.scss
--element-2.scss
block-2/
--block-1.scss
--element-1.scss
--element-2.scss
并导入元素文件信息块文件。
block.scss:
.block {
color: red;
@import "element-1.scss";
@import "element-2.scss";
}
元素-1.scss:
&__element-1 {
color: green;
}
编译为:
.block {
color: red;
&__element-1 {
color: green;
}
}
所以我目前正在按照 BEM 标准进行一些样式设计。
我正在做的一个例子可能是这样的:
.block{
&__element {
}
}
我想做的是:
// file a
.block {
...
}
-
// file b
// add magic to reference the `block`class in file a
&__elelemnt {
...
}
我目前在做什么:
// file a
.block {
...
}
-
// file b
.block__elelemnt {
...
}
(手动将 block
部分添加到名称中)
有什么方法可以更聪明地引用它吗?
提前致谢
这可能是您能做的最好的了。
$namespace: "block";
.#{$namespace}-myClass {
...
}
输出
.block-myClass {
...
}
您可以将变量 $namespace
保留在文件顶部或其他文件中,然后 import
它。使用变量的好处是你可以更新一次,你所有的引用都会被更新。
SASS 就是干货。
就像,如果你想修改任何东西,你应该能够从一个地方修改它。如果您需要跨多个文件可用的任何内容,请考虑在 _vars
文件中定义其值并将其包含在您需要的任何位置。另请注意,这与代码短小无关,但与代码的可维护性和灵活性有关。
事实上,即使您确实需要编写更多代码(实际上不会发生这种情况),DRY 的优势也远远超过它。
应该怎么做:
/* _vars.scss: */
$block:block;
/* a.scss: */
@import _vars;
.#{$block} {
...
}
/* b.scss: */
@import _vars;
.#{$block}__element {
...
}
现在,无论何时您需要更改 block
值,您都可以从一个地方进行:_vars.scss
。
但是,在实践中,大多数人使用初始技术(嵌套):
.block {
...
&__element {
...
}
}
可能 .block
和 .block__element
是相关的,总的来说,将它们放在同一个文件中更有意义。随着您的应用程序变得越来越复杂,如果您将代码过度复杂化,您会发现很难跟踪代码。
你可以有这样的文件结构:
block-1/
--block-1.scss
--element-1.scss
--element-2.scss
block-2/
--block-1.scss
--element-1.scss
--element-2.scss
并导入元素文件信息块文件。
block.scss:
.block {
color: red;
@import "element-1.scss";
@import "element-2.scss";
}
元素-1.scss:
&__element-1 {
color: green;
}
编译为:
.block {
color: red;
&__element-1 {
color: green;
}
}