【发布时间】:2015-04-21 19:41:07
【问题描述】:
我想在我的网站上添加一个功能,允许用户在多种样式之间进行选择。我在其他网站上看到过这个功能。我将如何进行此操作,或者有人可以向我推荐有关如何完成此操作的教程或指南?
【问题讨论】:
我想在我的网站上添加一个功能,允许用户在多种样式之间进行选择。我在其他网站上看到过这个功能。我将如何进行此操作,或者有人可以向我推荐有关如何完成此操作的教程或指南?
【问题讨论】:
首先,您可以简单地将样式表链接设为动态:
<link rel="stylesheet" href="<?=$style?>" type="text/css"/>
并提供改变它们的链接:
<a href="/page.php?theme=racecar">Racecar</a>
在服务器上,根据查询字符串分配$style,如果用户决定修改URL,最好默认为某个值:
<?php
$stylesArr = array('racecar', 'magenta', 'cartman');
if(isset($_GET['theme']) && in_array($_GET['theme'], $stylesArr)) {
$style = $_GET['theme'] . '.css';
setcookie("theme", $style, time()+(3600*24*30));//expires in one month
} else {
if(isset($_COOKIE['theme']) && in_array($_COOKIE['theme'], $stylesArr)) {
$style = $_COOKIE['theme'] . '.css';
} else {
$style = 'default.css';
}
}
?>
<link rel="stylesheet" href="<?=$style?>" type="text/css"/>
【讨论】:
','' or ')'' 会是这样的: if(isset($_COOKIE['theme'] && in_array($_GET['theme' ], $stylesArr)) {
您可以将有关样式的信息存储在 cookie 中,如果用户被注册,则可以存储在数据库中。然后根据值在页面上使用 php 添加所需的 css 文件。
【讨论】:
根据您的页面呈现方式,最好在选择主题后将主题存储在 cookie 中,否则您需要将 ?theme=racecar 附加到页面上的每个链接。
if(isset($_GET['theme']))
{
setcookie('theme', $_GET['theme']);
$style = $_GET['theme'];
}
else if(isset($_COOKIE['theme']))
{
$style = $_COOKIE['theme'];
}
else
{
$style = 'default';
}
<link href="/styles/<?php echo $style; ?>.css" rel="stylesheet">
【讨论】:
我也看到它是用 javascript 完成的。
与其他几个答案的基本想法相同:您将所选样式写入 cookie,然后在页面加载时读取它以确定要加载的样式表。
使用 javascript,您还可以在不重新加载页面的情况下切换样式,如果您设置好 css,您可以切换 body 的 id 或 class 之类的内容,并且无需下载即可拥有新样式一个新的样式表,因此样式切换几乎立即发生。
非常甜蜜的效果,祝实施顺利。
【讨论】: