2010-06-30 61 views
1

嘿,任何人有任何想法什么是允许用户保存自定义CSS的最佳方式是什么?具体来说,我希望允许用户选择约4种颜色值,这些颜色将用于为用户创建自定义主题。我想保存在数据库中的值,然后使用DOM:加载原型来设置自定义样式值,但我想知道如果更快的方式?像动态创建css文件或什么的?用户生成自定义css

+0

正如你所提到的那样,将值放在内联javascript中将是最简单和最简单的方法。否则,如果不为每个页面加载创建css文件,则必须管理动态创建css文件并控制浏览器缓存。看到我的回答如下: – 2010-06-30 19:42:38

回答

4

,然后使用DOM:装有原型

噢,不这样做! JavaScript关闭时不起作用。

方法1:静态样式表,在文件头

对于没有使用动态创建的样式表工作的缘故动态值,与所有定义一个单独的,静态的CSS文件韩元't变化。

<link rel="stylesheet" href="styles/static.css" type="text/css"> 
<!-- Or whatever you name it --> 

所有这一切变化,你可以放入HTML文档的head,从数据库中获取用户可更换值的定义。

<style type="text/css"> 
.classname { font-size: (fontsize); } <-- Insert dynamic value here 
.classname { color: (color); }   <-- Insert dynamic value here 
.... 
<style> 

这样,CSS的大部分停留在静态可缓存文件中,而动态部分不会导致另一个HTTP请求。

方法2:动态样式表

如果你有大量的动态变化值,把整个样式表到一个脚本文件并输出,与数据库中的值替换占位符。 这样做的缺点是,为了强制浏览器重新加载样式表上的更改,你必须使用stylesheet.css?version=400版本的方法,这是相当复杂的,但有时可能比乱扔垃圾head部分CSS 。

您决定哪种方法更适合您的情况。我发现自己最经常选择第一个。

+0

+1,这次不需要使用JS,甚至不需要额外的文件抓取。 – 2010-07-01 05:47:06

1

我会将4个值保存在数据库中,然后从这些值中创建一个css文件。您需要确保并缓存为每个用户创建的css文件,这样您就不必在每个页面视图中动态创建它。

1

创建一个自定义的css文件会增加浏览器的另一个请求,因此您需要确保正确设置标题以缓存它。如果用户做了更改他们的设置您需要做一些事情,以确保浏览器立即停止兑现旧的CSS文件并加载新的文件。一种方法是更改​​css文件的URL。

例子:

/usercustom.css?version=(last saved date hash)

相反我会用你的第一种方法,并创建你注入到页面中一个JSON数组,然后你用你的JavaScript框架加载和使用数组风格这一页。

您还可以将颜色值存储在服务器的Cookie中,并在客户端上使用和写入它们。