【发布时间】:2014-07-27 06:48:05
【问题描述】:
我在一个包含许多 css 文件的网站上工作。其中一些是针对国际用户的特定语言覆盖(我们更改了一些样式,因此较长的翻译文本字符串不会破坏布局)。所以我们有类似 french.css、spanish.css 等的东西。当用户点击我们的语言切换器时,页面会重新加载,并在 body 标记上添加一个特殊的类。这就是页面选择其他样式的方式。
我们在不久的将来的目标之一是只为我们的国际用户提供一种适合他们的特定语言文件。现在,每个人都可以获得所有样式,即使它们不是必需的。同时,其中一位经理希望将我们的样式合并到一个文件中以减少 http 请求。我们如何才能拥有一个 css 文件而不包括每个用户的所有语言覆盖?有没有办法在需要时将样式附加到一个主 css 文件?我们使用 Compass SASS;有没有办法编译我们主文件的不同版本,一个包括西班牙风格,一个包括法国风格等?理想情况下,我们不希望在工作目录中有不同版本的主 css 文件,因为我们总共支持 25 种语言。此外,我们的开发人员使用 PHP 和 JavaScript,以防任何人有使用这些编程语言的解决方案。
编辑 - 我应该澄清一下。是否有一个脚本或函数可以从一个 css 文件中获取样式块并将它们直接添加到另一个,这将是为用户提供的一个主要 css 文件?这只会在用户更改他们在我们网站上的语言选择时执行。或者,因为我们使用的是 SASS,框架中有没有办法让编译器生成 25 个 css 版本的 main.scss,每个都包含特定的语言覆盖(在我们的 sass 目录的根目录中没有 25 个 .scss 版本) ?
【问题讨论】:
-
多个HTTP请求有什么问题?
-
你得问我们的经理 :) 他可能会告诉你问他的经理。
-
您可以为所有用户提供 main.css 和 1 个默认语言文件 (EN)。然后用户选择不同的语言并使用 JS,您将该语言样式表附加到文档中吗?那是3个不同的请求。是不是太多了?如果您将所有内容包含在 1 个文件中,它将具有 24 种他们不需要的语言的样式,这比 3 个小请求更大的服务器负载。
-
使用您的语言名称保留父类。在 CSS 内部,使用语言类来区分样式。例如,所有英语课程都以
.english .someclass{styles}开头。就像西班牙语以.spanish .someclass{styles}开头一样。现在我们在一个文件中有相同的名称.sameclass。但它会根据语言设置给出不同的输出。 -
我正在使用 .NET,在这种情况下,我们可以使用
[lang]-style.css之类的方法获取语言并附加所需的 css,然后您就不必使用if。我建议您阅读类似的内容以获取缩小等 css 文件和请求减少的内容。 robertnyman.com/2010/01/19/…
标签: php css compass-sass