我运行并积极开发一个论坛(它本身运行在经过大量修改的SMF 1.1.16上) - 我想要添加的一个功能是用户能够从一个小部件中选择自定义颜色(比如2-4)在页面的一角,自定义论坛的颜色。
论坛的HTML输出结构使得可以使用纯CSS修改颜色,我想知道插入这个CSS的正确方法是什么。
我的想法是,一旦用户保存了他们的颜色信息,一段javascript将生成必要的CSS并使用HTML5 localStorage(可能使用polyfill库)保存它。然后,在$(document).ready()上,我们检查这个CSS是否存在,如果是,我们将它注入页头。
这种方法是否合理?它很容易开发,但在应用自定义样式之前会导致通常样式的闪烁(假设页面相当重量级)吗?
如果是这样,有没有更好的方法来完成客户端?如果可能的话,我宁愿不涉及服务器,但如果我必须,我可以让服务器为每个保存自定义样式的用户生成CSS文件。
最好的方法是什么?
答案 0 :(得分:1)
我建议您首先为页面设置一个基本样式,这样就不会有FOUC。然后,让你的JS加载自定义样式,解析它,然后将其应用到页面。你可以做一个“淡入式更改”(比如在背景中淡出等),这样样式就不会像快照一样加载。
您还可以先将页面空白,例如在加载样式之前将主体设置为display:none
,然后在应用样式后删除display:none
您还必须注意本地存储的大小限制。不要加载太多。考虑寻找LZW compression in JS。这可能有所帮助。