2014-07-23 42 views
1

我正在使用JavaScript在运行时为CSS文件生成文本。我知道我可以通过将它附在<style>标签中来将这个CSS添加到HTML文档中,但是它是一个大文件,如果它作为外部资源链接到它,我的代码将不那么混乱。是否可以链接到运行时生成的CSS文件?没有涉及的服务器,这必须在客户端完成。链接到程序生成的CSS,就好像它是外部文件一样?

+0

生成(非源代码)混乱?你可以把这个风格放到''标签内添加css。 –

+0

这就是我要做的事情,如果没有办法做到这一点,但它是一个非常大的文件,我想尽可能避免这种情况。 – Keavon

回答

-1

您是否尝试过这个 -

loadCssFile = function(fileName) { 
var cssLink = $("<link rel='stylesheet' type='text/css' href='"+fileName+"'>"); 
$("head").append(cssLink); 

};

// load the css file 

loadCssFile(“style.css”);

+0

我以为你想要一种方式来加载外部的CSS文件?是不是你所需要的 - 动态地添加一个CSS文件到你的页面? – Pav

+0

没有文件路径; CSS在运行时生成。 – Keavon

0

免责声明:我会更新这个答案,因为这个问题是完善的。

编辑

这听起来像你在本地做的一切。在这种情况下,它可能是而不是可能从在浏览器中运行的脚本(如JavaScript)写入到您的文件系统(主要是为了安全起见)。虽然您可以从本地机器链接和加载CSS文件,但无法写入它们。

OLD ANSWER

你有几个选择,但我最感兴趣的是什么样的环境,你在工作,它的假设是大胆的。

存储在服务器上的JSON颜色文件:您应该在服务器端生成此样式表,并将其提供给客户端。这包括创建一个路径(URL)来访问动态生成的样式表,输出格式化的CSS(不太难),并设置具有正确MIME类型的标题。如何做最后一部分取决于你的服务器实现(Node.js与PHP等)

只能在客户端(无服务器)生成样式表:在这种情况下,假设你没有有权访问服务器,但你可以获取你的JSON颜色文件(从某处,我猜),你真的没有任何样式表资源链接到。这确实限制了缓存等方面的优化潜力。

您唯一真正的选择是在浏览器中创建和填充样式表。在这里有一个体面的文章如何做到这一点:Add Rules to Stylesheets with JavaScript

+0

“你的*唯一的选择*在这里......”嗯......这是不正确的。 (请参阅http://stackoverflow.com/questions/1720320/how-to-dynamically-create-css-class-in-javascript-and-apply) –

+0

另请注意,OP说“外部文件”是“...您可以在CSS文件中找到的文本,但**不会保存到文件系统**。“所以我不认为加载JSON文件是他们正在寻找的正确路径(但绝对有可能)。 –

+0

好的,这里有一些澄清:没有涉及服务器。 JSON文件从本地文件加载并用于生成CSS文件的文本。第二部分对我来说就是这样,但是该链接表示使用'