gpt4 book ai didi

php - 有没有办法在需要时附加带有其他样式的 CSS 文件?

转载 作者:太空宇宙 更新时间:2023-11-04 13:07:34 24 4
gpt4 key购买 nike

我在一个会引入许多 CSS 文件的网站上工作。其中一些是针对国际用户的特定语言覆盖(我们更改了一些样式,因此较长的翻译文本字符串不会破坏布局)。所以我们有类似 french.css、spanish.css 等的东西。当用户点击我们的语言切换器时,页面会重新加载,并在 body 标签上添加一个特殊的类。这就是页面选择其他样式的方式。

我们在不久的将来的目标之一是只为我们的国际用户提供适合他们的一种特定语言的文件。现在,每个人都可以获得所有样式,即使它们不是必需的。同时,其中一位经理希望将我们的样式合并到一个文件中,以减少http请求。我们如何才能拥有一个 css 文件而不包含每个用户的所有语言覆盖?有没有办法在需要时将样式附加到一个主 css 文件?我们使用 Compass SASS;有没有办法编译我们的主文件的不同版本,一个包含西类牙风格,一个包含法国风格等?理想情况下,我们不希望我们的工作目录中有不同版本的主 css 文件,因为我们总共支持 25 种语言。此外,我们的开发人员使用 PHP 和 JavaScript,以防有人拥有使用这些编程语言的解决方案。

编辑 - 我应该澄清一下。是否有一个脚本或函数可以从一个 css 文件中获取样式 block 并将它们直接添加到另一个文件中,这将是为用户提供的一个主要 css 文件?只有当用户在我们的网站上更改他们的语言选择时才会执行。或者,由于我们使用的是 SASS,框架中是否有一种方法可以让编译器生成 main.scss 的 25 个 css 版本,每个版本都包含特定的语言覆盖(我们的 sass 目录的根目录中没有 25 个 .scss 版本) ?

最佳答案

您可以使用 php 来做到这一点。您需要创建一个包含所有 css 的 php 文件,并将其包含在索引文件中:

<link rel="stylesheet" type="text/css" href="css_file.php">

然后您必须创建 css_file.php 并使用以下代码:

<?php
header("Content-type: text/css; charset: UTF-8");

// get the language variable from url
$language = $_GET['langvar'];

if($language == "en"){
// english language css code goes here
echo "
body { margin: 0; padding: 0; }
";
} else if($language == "fr"){
// french language css code goes here
echo "
body { margin: 0; padding: 0; }
";
} else if($language == "other"){
// other language css code goes here
echo "
body { margin: 0; padding: 0; }
";
}
?>

编辑:

如果您的代码中不存在语言变量,您可以从 session 中获取语言:

<?php
session_start();
header("Content-type: text/css; charset: UTF-8");

// get the language variable from active session
$language = $_SESSION['langvar'];

if($language == "en"){
// english language css code goes here
echo "
body { margin: 0; padding: 0; }
";
} else if($language == "fr"){
// french language css code goes here
echo "
body { margin: 0; padding: 0; }
";
} else if($language == "other"){
// other language css code goes here
echo "
body { margin: 0; padding: 0; }
";
}
?>

编辑:

如果您想加载单独的 css 文件,您需要将以下 php 代码添加到您的索引文件中:

<?php
session_start();

// get the language variable from active session
$language = $_SESSION['langvar'];

if($language == "en"){
// english css file load
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"english.css\">";
} else if($language == "fr"){
// french css file load
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"french.css\">";
} else if($language == "other"){
// other css file load
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"other.css\">";
}
?>

如果语言 session 名称与 css 文件相同,您可以使用:

<?php
session_start();

// get the language variable from active session
$language = $_SESSION['langvar'];

echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"".$language.".css\">";
?>

关于php - 有没有办法在需要时附加带有其他样式的 CSS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24978603/

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