我可以在CouchDB中将CSS“主题”存储为JSON文档吗? (然后加载并应用它?)

时间:2011-12-17 21:12:45

标签: jquery css json couchdb

CSS的语法有点类似于JSON,让我想知道我是否可以使用AJAX从CouchDB动态加载和应用CSS“主题”。我知道我已经可以将CSS文件作为附件提供,但如果CSS是实际文档,则可以由用户更新。也可能有几个这样的文件,如CSS“主题”。那会怎么样?我看到了两个问题:

1)如何将CSS存储为JSON(在一个大字符串字段中,或作为结构化文档?)

2)如何动态应用CSS。

我发现使用jQuery,我可以将CSS应用于所选元素,但它与“普通”CSS的工作方式不同,因为优先规则不适用 - 每次只影响所有选定的元素你调用.css()函数。我真正需要的是一种加载整个“css文件”(作为文档)的方法,并将整个事物应用为普通的css文件。

也许一个"_show"函数可以将结构化的JSON / CSS文档转换为具有标准CSS语法的“普通”CSS字符串?然后我只需要弄清楚如何在运行时“应用”它。

欣赏任何想法,想法和相关链接 - 谢谢。

2 个答案:

答案 0 :(得分:1)

关于_show函数是从CouchDB文档动态生成非json响应的好方法,你是对的。至于加载那个css,代码应如下所示:

var cssTag = $("head").add("link");
cssTag.attr("rel", "stylesheet");
cssTag.attr("type", "text/css");
cssTag.attr("href", filename);

简而言之,您要在link中添加head标记。

答案 1 :(得分:1)

你可以:

  1. 将CSS存储为CouchDB中的大字符串
  2. 创建一个ajax页面,它将简单地回显数据库中存储的数据,接收动态查询字符串以决定显示哪个文件。示例:http://example.com/change_css?file=new_style2.css
  3. 每当您需要更改当前用户的主题时,您可以删除旧主题,只需添加新内容,例如$('head').append('<link rel="stylesheet" type="text/css" href="http://example.com/change_css?file=new_style2.css">')
  4. 浏览器应自动加载并应用新的CSS。
  5. 不确定在CouchDB中动态存储它是最好的方法:您可以随时保留静态文件并动态更改它们。另一方面,将CSS存储为Json将需要解析并且可能是时间耗尽。