超对称电网具有$from-direction
变量,但我不能用它像这样:与Susy文本方向(指南针响应电网)
[dir="rtl"] {$from-direction: right;}
生成CSS改变了这一切的方向有关与Susy CSS为从右至并且不会与[dir="rtl"]
一起作为前缀。
我在做什么错?
超对称电网具有$from-direction
变量,但我不能用它像这样:与Susy文本方向(指南针响应电网)
[dir="rtl"] {$from-direction: right;}
生成CSS改变了这一切的方向有关与Susy CSS为从右至并且不会与[dir="rtl"]
一起作为前缀。
我在做什么错?
不幸的是,Sass(或Susy)无法知道任何有关您的HTML的信息。因为事情是预先编译的,所以你必须将实际的样式嵌套在开关内部,而不仅仅是变量设置。这可能意味着两种不同的编译样式表,您可以在Sass中轻松使用该设置。
您需要两个scss文件,例如rtl.scss
和ltr.scss
。与该变量的每一个开始,然后导入所有必要的谐音为您的网站:
// rtl.scss
$from-direction: right;
@import "my-site-partials.scss";
和
// ltr.scss
$from-direction: left;
@import "my-site-partials.scss";
然后你只需要加载正确的CSS输出文件在你的HTML视方向。您也可以在单个文件中完成,但是无论是哪种情况,您都将加载两次所用的代码,并将所有样式嵌套到一个额外的级别。我建议采用双文件方式。
UPDATE:单文件方法。
您可以在单个文件中使用相同的技术,但它需要在所有样式中使用额外的包装。事情是这样的:
@each $dir in ltr, rtl {
$from-direction: if(ltr, left, right);
[dir="#{$dir}"] {
// your styles
}
}
也许你认为成为一个mixin:
@mixin bi {
@each $dir in ltr, rtl {
$from-direction: if(ltr, left, right);
[dir="#{$dir}"] {
@content;
}
}
}
@include bi {
// your styles
}
或者你可以重写与方向改变只有特定的风格:
@mixin rtl {
$from-direction: right;
[dir="rtl"] {
@content;
}
$from-direction: left;
}
// your ltr styles
@include rtl {
// your rtl overrides
}
还有很多其他的变化在这一点上,你可以添加灵活性的功能。但是这应该让你开始。
谢谢,埃里克。这似乎是[bi-app](http://anasnakawa.github.io/bi-app-sass/)等解决方案所使用的方法。但是,我想使用'lang'和'dir'属性作为语言和文本方向样式的选择器,而不是单独的样式表。我正在追求一种[SMACSS](http://smacss.com/)战略,将与模块有关的所有样式(媒体查询,特定于浏览器的语言等)都保存在一起。 –
查看我的更新了解一些单文件选项。 –
谢谢你的时间(和电网),Eric,我很感激。我会玩这些方法。 –