0

我一直在努力寻找一个好的方法来做到这一点,但到目前为止还空无一物,需要一些指导。

基本上,我现在拥有的是一个样式选择器,它为网站提供了 10 种预定义样式供用户选择。它们中的大多数都是怪诞的,并且仅仅是概念的证明。

这是由 PHP 和 mysql 控制的。当用户登录并选择非默认样式时,它会针对他们在数据库中的用户记录添加。然后站点刷新并加载所选样式。

它工作得非常好,但现在我想尝试进行一些细粒度的控制。例如,我希望用户能够选择自己的标题背景颜色、标题文本颜色、子标题颜色和一些字体大小。

这是一件相当微不足道的事情,如果我找不到实现它的方法,那就这样吧。

我最初的想法是有一个表格,其中包含每个可定制的大小部分的列,例如字体大小、颜色等。在表格中,将是每个用户的记录。然后他们使用一些界面来挑选他们想要的东西,然后将其添加到表格中。

我的问题是如何处理我从数据库中检索到的值。我本来希望将它们直接插入到 CSS 文件中,但我认为如果没有一些服务器配置更改,这是不可能的,我无法开始工作。

那么,如果有任何方法的话,是否有人对最好的方法有任何建议。

问候编辑

4

3 回答 3

2

对我来说最明显的选择是构建一个 PHP 脚本来动态生成样式表。只有当表中存在包含所有用户特定样式的特定用户的记录时,才会调用此方法。

因此,例如,<head></head>您可以在您之间放置:

<?php if($user_has_style): ?><link rel="stylesheet" href="user_style.php" /><? endif; ?>

这将调用user_style.php脚本并生成所需的样式表。您必须将正确的标题添加到 PHP 样式表的输出中,它们是:

<?php header("Content-type: text/css"); ?>

如果您选择此方法,该网站可能会有一些用处:http: //mou.me.uk/2008/08/03/generating-dynamic-stylesheets-on-the-fly-using-php/

于 2012-08-01T09:28:42.417 回答
1

你有几种方法可以做到这一点。

您可以直接在 HTML 标签的属性中指定 CSS 属性style,但这很快就会变得乏味,因为您可能必须在内容中间的分散区域插入代码,从而使维护更加困难。

您还可以将所有样式定义放在<style></style>标签之间的<head>部分内,这部分消除了将内容与表示混合的缺点。

最后,还可以使用数据库信息使用 PHP 生成 CSS 文件。将您的样式表重命名为.php,然后将其放在文件的顶部:

<?php header('content-type: text/css'); ?>

这告诉 PHP 它将生成的内容需要作为 CSS 文件发送,以便用户的浏览器知道它是一个样式表。剩下要做的就是在包含您的 HTML 内容的 PHP 脚本中正确引用您的“可变”样式表:

<link href="../layout/css/something.php" 
    rel="stylesheet" type="text/css" media="all" />

这将允许您在“CSS”文件中使用这种东西:

body
{
  background-color:
  <?php echo $userstyle['color']; // Retrieved from database somewhere above ?>;
}

但是,如果您关心性能,后一种解决方案可能需要使用Cache-control标头进行一些改进,以避免每当用户点击您网站中的链接时重新加载 CSS 文件。

于 2012-08-01T09:32:44.500 回答
0

您可以通过两种方式将 CSS 放入 html 文件中。您可以将代码放在<style>标签下的标题中,也可以将 css 放在特定项目上,例如<body style="background-image:url('file.png')">. 两种方式都不需要与 .html 文件分离的 css 文件:)

于 2012-08-01T08:58:04.053 回答