我有一个网站,我希望用户能够更改背景图像和其他一些CSS元素。我尝试这样做的方法是拥有多个html页面,用户可以通过下拉列表更改并重新加载页面。
示例:
href 1 = index.html
href 2 = red.html
href 3 = blue.html
每个页面都相同,都指向相同的样式表(style.php),但我希望链接的样式表元素根据用户选择的URL进行更改。
所以style.php就像这样开始
<?php
header("Content-type: text/css; charset: UTF-8");
include 'blue.php';
?>
body {
background: url(../images/backgrounds/<?php echo $background; ?>.jpg) no-repeat;
background-attachment: fixed;
}
每个html页面都有一个匹配的.php页面,用于定义背景的每个变量。
所以我需要的是一种选择包括&#39; blue.php&#39;如果用户在blue.html上。我可以使用不同的样式表,但在改变CSS时会很麻烦。
有基于url的php案例吗?
答案 0 :(得分:1)
假设您有三个主题:
为CSS中的每个创建一个类和主题。 E.g
body.hot
{
/*Set Base Theme details here, including background*/
}
body.hot p
{
/*Styles for hot paragraphs*/
}
/*etc*/
body.cold
{
/*Set Base Theme details here, including background*/
}
body.cold p
{
/*Styles for cold paragraphs*/
}
/*etc*/
现在使用会话变量来保存用户选择,然后根据需要向body标签添加一个类:
$bodyClass = "";
switch($_SESSION['bodyClass']) {
case "hot":
break;
case "cold":
$bodyClass= "class='cold'";
break;
default:
$bodyClass = "";
}
现在将其插入body tag
<body <?=$bodyClass ?> >
答案 1 :(得分:0)
为什么不使用$_SESSION
变量作为用户的背景选择而不是拥有多个HTML页面?这样,您可以避免重复代码。
如果您想尝试这条路线,可以在样式表中include switch.php
代替include blue.php
,其中switch.php
检查要应用的背景:
<?php
// switch.php
switch($_SESSION['background']) {
case "red":
// apply red background
break;
case "yellow":
// apply yellow background
break;
default:
// apply blue background
}
?>
答案 2 :(得分:0)
我有一个网站,用户可以编辑颜色/字体大小和字体类型,我将数据保存在我的数据库中。
我的网站中只有可编辑的元素位于一个名为“style.php”的php中,如下所示(没有标题或任何内容):
.main-header{ background: none repeat scroll 0% 0% <?php echo $edge_background ?> }
.sub-menu .arrow{ border-bottom: 9px solid <?php echo $edge_background ?> }
在我的标题中,我有一个sql,用于检查用户是否在我的数据库中有任何值,如果是,则包含该文件。
<head>
<!-- your stuff -->
<?php
//after sql check with results
$edge_background = "my value";
$color2 = "my value";
?>
<style type="text/css">
<?php include('styles.php') ?>
</style>
</head>
我不知道这是不是最好的方法,但工作正常,不需要创建大量的文件。
在您的情况下,值将随着网址而变化。您可以查看网址,然后使用$_SERVER['SERVER_NAME']
和$_SERVER['REQUEST_URI']