gpt4 book ai didi

css - 如何使用 sass 自动化多语言背景图像

转载 作者:行者123 更新时间:2023-11-28 11:10:38 25 4
gpt4 key购买 nike

这是所需的 CSS:

    body[lang=en] .my-div {background-image:url('my-image-en.png')}
body[lang=de] .my-div {background-image:url('my-image-de.png')}
body[lang=fr] .my-div {background-image:url('my-image-fr.png')}
...

我想使用像这样的 mixin 来自动化这个过程:

body {
.my-div {
@include i18n-background-image('my-image')
}
}

现在,我已经接近使用这个 mixin 的解决方案了:

$languages = ["en", "de", "fr", ...];    
@mixin i18n-background-image($name) {
@each $lang in $languages {
background-image: url(#{$name}-#{$lang}.png)
}
}

但我的问题是我无法添加 body[lang=#{$lang}] 因为它已经嵌套在其中。我可以找到一个 hacky 解决方案而不是嵌套类,但这并不好——我想实现一个干净且可读的混合。有办法解决吗?也许在所有嵌套类上循环迭代?

最佳答案

你真的想尽可能地尝试超额资格。这应该可以完成工作:

$languages: en, de, fr;    
@mixin i18n-background-image($name) {
@each $lang in $languages {
&:lang(#{$lang}) {
background-image: url(#{$name}-#{$lang}.png);
}
}
}

.my-div {
@include i18n-background-image('my-image');
}

输出:

.my-div:lang(en) {
background-image: url(my-image-en.png);
}
.my-div:lang(de) {
background-image: url(my-image-de.png);
}
.my-div:lang(fr) {
background-image: url(my-image-fr.png);
}

A significant difference between :lang and the other methods is that it recognizes the language of the content of an element even if the language is declared outside the element in question.

http://www.w3.org/International/questions/qa-css-lang

关于css - 如何使用 sass 自动化多语言背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20867061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com