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