【问题标题】:User profiles custom css用户配置文件自定义 css
【发布时间】:2012-05-28 21:05:02
【问题描述】:

在我正在开发的网站中,我希望用户在他们的个人资料页面上设置自己的自定义“css”。

例如,我让用户能够使用 js 颜色选择器为 <body> 选择背景颜色。

然后使用 php 创建一个“css-ready”字符串并将其保存在数据库中。

我要问的是:每次用户输入另一个用户个人资料时,我怎样才能使这个 css 应用?

可能会有很多用户可以自定义的东西,所以会有一个很大的 css 字符串,我需要一些可以跨浏览器的东西,如果可能的话,它也可以在没有 javascript 的情况下工作..

谢谢。

【问题讨论】:

  • 我真的看不出有什么问题。
  • 这完全取决于您如何构建您的网站。没有更多细节,这个问题是无法回答的。
  • 对于初学者,您可以随时将他们的 CSS 首选项保存在数据库中,并在每次登录时将 CSS 文件的内容替换为他们的首选项。
  • 问题很明确。当我在我的站点中打开用户的个人资料页面时,在我的 php 函数中,在获取 db 以获取有关用户的信息时,我还获取了自定义 css 字符串。所以我把它放在一个变量中。问题是.. 我怎样才能将此字符串应用为 css 以在查看时自定义该用户页面?我可以在 js 中做到这一点,但我更喜欢服务器端解决方案。

标签: php javascript css


【解决方案1】:

您可以尝试一个带有内容类型文本/css 标头的 php 文件,该文件根据从数据库中获取的 CSS 回显 CSS,您可以将默认 CSS 添加到您的网站,并在链接标签列表中创建最后一个路径那个php文件,这样你就有一个默认的CSS来回退和自定义的CSS,如果有定义的话,可以在默认之上应用..

【讨论】:

    【解决方案2】:

    这可以通过asp.net中的Handler来完成。我相信 PHP 中也会有类似的解决方案。首先,您需要将每个用户的样式属性保存在数据库中。确保样式的语法(选择器名称、大括号、分号等)是有序的。您可以从会话对象中获取用户信息或将带有查询字符串的变量传递给处理程序。

    从处理程序收到的响应可以直接放在标签之间作为内容类型 - text/css 像这样:

    有了这个,你应该准备好了!

    但是,它会导致性能损失,因为每次页面加载时,都会加载整个文件(在普通的 css 文件中,它只加载一次)。最好只将那些您真正希望用户自定义的项目保存在数据库中。您可以将它与您的父 css 文件级联以获得更好的性能。

    【讨论】:

      【解决方案3】:

      你可以使用这个是user-profile.tpl.php

      <?php 
      if(isset($account->user_css)){
      ?>
      <style>
      <?php echo $account->user_css; ?>
      </style>
      <?php
      }
      ?>
      

      【讨论】:

        猜你喜欢
        • 2011-10-30
        • 1970-01-01
        • 2013-09-08
        • 2017-02-10
        • 1970-01-01
        • 2020-12-23
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        相关资源
        最近更新 更多