我有一个棱角分明的应用程序。该应用程序支持rtl和ltr布局的多种语言。布局将根据用户的语言更改而更改。
我有两个SCSS文件,每个方向一个。 我想根据变量的值加载其中之一。我迷路了,我不知道应该在哪里做。此类问题的最佳做法是什么?
谢谢!
答案 0 :(得分:3)
您可以创建一个rtl
,ltr
之类的类标志,并将所选主题(scss文件)导入到类的主体中,这意味着该类出现时将应用特定主题。
_ltr.scss
h1 {
background: #4285f4;
color:#fff;
text-align: left;
}
_rtl.scss
h1 {
background: #ea4335;
color:#fff;
text-align: right;
}
style.scss
.rtl {
@import "theme/_rtl.scss"
}
.ltr {
@import "theme/_ltr.scss"
}
已编译的style.scss
.rtl h1 {
background: #ea4335;
color: #fff;
text-align: right
}
.ltr h1 {
background: #4285f4;
color: #fff;
text-align: left
}
app.component.html
<div>Selected theme :
<select [(ngModel)]="selectedTheme">
<option value="rtl">RTL</option>
<option value="ltr">LTR</option>
</select>
</div>
<div [class]="selectedTheme">
....
</div>
答案 1 :(得分:0)
您不能(或者,在运行时加载不同的.scss
文件是没有意义的,因为首先需要将它们编译为CSS才能在浏览器中工作。
另一个答案显示了bundling both versions of styles两种布局的实现方法,但是根据您的代码组织,这可能会导致很多重复,这可能不理想。
其他选项包括:
[style.text-align]="direction"
;