【发布时间】:2020-07-26 10:38:22
【问题描述】:
我正在开发一个使用 sass 来管理样式的 react 网站。所以在网站上,我通过 sass mixins 实现了英语排版。 排版中有不同的标题和正文,例如标题1、标题2、正文1、正文2等。排版中每个元素的格式是这样的
@mixin body1{
font-size:10px,
font-weight: 700,
letter-spacing: 1px,
line-height:1
}
@mixin body2{
font-size:5px,
font-weight: 400,
letter-spacing: 1px,
line-height:1
}
然后我将这个主体包含在我的组件 css 中,例如:
.primaryButton .text{
@include body1;
}
.secondaryButton .text{
@include body2;
}
所以按钮是单个组件是反应,我们只是根据变体道具改变父类和它的样式。
现在的问题是我必须为不同的语言实现排版,比如大约 50 种语言,我不确定哪种通用方法最适合实现。
注意:
- 我们没有使用通用类而不是 mixin 来进行排版,因为我们为每个组件都有变体和主题,并且对于每个变体和主题,相同的元素可能具有不同的字体大小和其他属性,因此对于不同的变体,我们会加载不同的排版元素在组件父类上。
- 另外,我不想进入每个文件,然后根据每种语言的父类覆盖英文版式,因为项目规模太大,而且 50 种语言对于这种方法来说也太多了。并且在未来语言可以增加。
【问题讨论】:
-
像这样过度使用 mixin 会大大增加输出 CSS 文件的大小。请记住,它基本上只是复制粘贴,因为 CSS 是一种“愚蠢”的声明性语言。而且你仍然可以灵活地使用通用 css 类——你只需要做得更好。
-
@max 我也可以将泛型类用于排版,但对于每个组件,我们都有不同样式的变体。因此,对泛型类的每个 HTML 元素设置条件也是一种不好的做法。我不是在每个 html 元素上设置条件,而是在父类上设置条件,然后通过使用该类,我使用 mixins 为子元素设置样式。
标签: javascript html css sass frontend