如何改变基于网址的CSS
我有一个网站,我希望用户能够更改背景图像和一些其他的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页面,它为每个变量定义背景。
因此,如果用户在blue.html上,我需要的是一种选择include'blue.php'的方法。 我可以使用不同的样式表,但是在更改CSS时会变得很麻烦。
有没有办法做到这一点与基于url的php案例?
假设你有三个主题:
在CSS中为每一个创建一个类和主题。 例如
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 ?> >
为什么不为用户的背景选择使用$_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
}
?>
我有一个网站,用户可以编辑颜色/字体大小和字体类型,并将值保存在我的数据库中。
只有我的网站中的可编辑元素是在这样一个PHP文件“style.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>
我不知道这是否是最好的方式,但工作正常,不需要创建大量的文件。
在你的情况下,值会随着URL而改变。 您只需检查网址,然后使用$_SERVER['SERVER_NAME']
和$_SERVER['REQUEST_URI']
为您的样式赋值