【问题标题】:Is using SCSS maps this way bad practice?以这种方式使用 SCSS 地图是不好的做法吗?
【发布时间】:2020-07-22 13:54:56
【问题描述】:

这是不好的做法还是为什么没有人这样做?我认为这对于您在大型项目中反复使用的某些属性非常有用,例如您自己的框架等,因为它使代码保持简短并易于编辑。

$flex: '.nav', 'nav', '.grid', '.row';
$inline-flex: '.button', 'button', '.icon';

@mixin passElement($list, $property, $value) {
  %#{$value} {
    #{$property}: #{$value};
  }
  @each $element in #{$list} {
    #{$element} {
       @extend %#{$value};
    }
  }
}

@include passElement($flex, display, flex);
@include passElement($inline-flex, display, inline-flex);

这将编译为:

.nav, nav, .grid, .row {
  display: flex;
}

.button, button, .icon {
  display: inline-flex;
}

【问题讨论】:

  • 我认为这个问题非常基于意见。我会说这段代码使阅读正在发生的事情变得更加困难,但这只是我的看法。
  • @Dominik 是的,但我想既然我只是要重复 @include 我会说这只是一个习惯的问题,idk

标签: css sass scss-mixins


【解决方案1】:

我认为它可能很有用,但我相信您现在是围绕选择器具有的属性而不是它所属的组件对代码进行分组。

“好的,这应该是粗体。我的粗体元素列表在哪里?”
“接下来,我的红色背景元素列表在哪里?”

我知道它没有那么糟糕,但很明显,当您编辑一个组件时,您希望该组件的所有属性都在一个地方。 看着这个,我只能假设.nav 将在 20 个不同的列表中

也许是字体之类的东西。因为您经常想知道“我在哪里使用这种字体?”。不过我还是很怀疑。

【讨论】:

  • 是的,这是我能找到的唯一反对它的论据。我不得不回忆很多,但我想总的来说这会弥补更短的时间,而且我相信更简洁的代码,但我想这只是一个偏好问题
猜你喜欢
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多