我是在一个反应网站,使用sass管理风格。因此,在网站上,我通过sass实现了英语语言的排版。排版中有不同的标题和体,如heading1、heading2、body1、body2等。排版中每个元素的格式如下
@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种语言,我不知道哪种通用方法最适合实现。
注:
发布于 2020-07-26 18:28:11
你可以这样用
占位符
%body1{
font-size:10px;
font-weight: 700;
letter-spacing: 1px;
line-height:1;
}
%body2{
font-size:5px;
font-weight: 400;
letter-spacing: 1px;
line-height:1;
}
%body3{
font-size:5px;
font-weight: 400;
letter-spacing: 1px;
line-height:1;
}配置
$langsConfig: (
"en": (body2),
"fr": (body1, body2),
"cn": (body2, body3),
"bn": (body1, body2, body3),
);css发生器
@each $lang, $placeholderList in $langsConfig {
.#{$lang} {
.primaryButton {
.text {
@each $placeholder in $placeholderList {
@extend %#{$placeholder}
}
}
}
}
}输出
.bn .primaryButton .text, .fr .primaryButton .text {
font-size: 15px;
font-weight: 700;
letter-spacing: 1px;
line-height: 1;
color: red;
}
.bn .primaryButton .text, .cn .primaryButton .text, .fr .primaryButton .text, .en .primaryButton .text {
font-size: 20px;
font-weight: 400;
letter-spacing: 1px;
line-height: 1;
color: green;
}
.bn .primaryButton .text, .cn .primaryButton .text {
font-size: 25px;
font-weight: 400;
letter-spacing: 1px;
line-height: 1;
color: yellow;
}反应执行
export default function App() {
const lang = "en";
return (
<div className={`${lang}`}>
<div className="primaryButton">
<h1 className="text">Hello CodeSandbox</h1>
<h2 className="text">Start editing to see some magic happen!</h2>
</div>
</div>
);
}解释:
占位符:代替混合使用占位符。Config:语言名称和相关的混合列表生成器:它将使用信任创建一个循环,并创建css是动态的方法
注意:如果您想使用基于组件的scss。然后创建一个scss函数并在css生成器中传递变量。
这是沙箱连接
如果有帮助请告诉我。如果我能够知道在react方面的实现,它可能会更动态。
https://stackoverflow.com/questions/63099021
复制相似问题