使用css对网站样式进行细粒度控制

时间:2012-08-01 08:52:58

标签: php mysql css styles

我一直试图围绕一个很好的方式来做这件事,但到目前为止已经空了,需要一些指导。

基本上,我目前拥有的是样式选择器,它为用户可以选择的站点提供10种预定义样式。它们中的大多数都是怪诞的,仅仅是概念的证明。

这是由PHP和mysql控制的。当用户登录并清除非默认样式时,会将其添加到数据库中的用户记录中。然后网站刷新,并加载选定的样式。

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

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

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

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

如果有任何办法,那么有人对最佳方法有任何建议。

此致 编

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

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

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

您还可以在<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文件。

答案 2 :(得分:0)

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