我已经找到了一种方法来做到这一点,但由于我不熟悉PHP,我尝试过的任何东西似乎都没有用。我对它应该如何工作有一个大概的概念,看起来很简单,但我无法按照我想要的方式工作。
基本上,我的网站上有两个链接 - 每个链接都链接到一个不同的样式表,这是JS样式切换器的一部分。样式切换器工作正常,除了一件事 - 我希望链接是有条件的。例如,现在,我的链接看起来像这样:
他们都出现了。
我希望它以这种方式工作:当页面加载时,只显示“Make it Dark”链接。然后当它在“使它变暗”时,只显示主样式表的链接。
这可以在右上角的last.fm页面上看到:http://www.last.fm/
那里有两个主题:“漆黑”和“简单红”。一次只显示一个链接,以便您可以在它们之间切换。我怎么能这样做?
我很感激任何帮助。感谢。
答案 0 :(得分:4)
如果您在每个样式表中都提供了一个链接display:none
吗?
答案 1 :(得分:1)
您可以在它们两者上指定一个类,然后在相反的样式表中添加一个display:none来为用户隐藏它。所以你有:
<a href="" class="darken">Make it dark</a>
<a href="" class="lighten">Light it up</a>
在两个样式表中,你有一个黑暗的样式表:
.lighten { display: none; }
在光明之中:
.darken { display: none; }
答案 2 :(得分:1)
我个人使用会话变量而不是cookie。
这样的事情应该有效:
<?php
session_start(); // add to the top of your page
if (!isset($_SESSION['dark_theme'])) {
$_SESSION['dark_theme']==false;
}
if ($_GET['changetheme']!='') {
if ($_GET['changetheme']=='dark') {
$_SESSION['dark_theme']=true;
} else {
$_SESSION['dark_theme']=false;
}
}
?>
这一位,你想要链接的地方:
<?php
if(!$_SESSION['dark_theme']){
?>
<a href="?changetheme=dark" id="darken">Make it Dark</a>
<?
}else{
?>
<a href="?changetheme=light" id="lighten">Make it Light</a>
<?
}
?>
或者使用CSS + JavaScript:
HTML:
<a href="#" id="darken">Make it Dark</a>
<a href="#" id="lighten">Make it Light</a>
CSS:
在“黑暗”样式表中:
#darken {
display:none;
}
在“轻量级”样式表中:
#lighten {
display:none;
}
JavaScript(注意,我使用的是JQuery,因为它比普通的JS更容易编写 - 如果它不在网站上,你只需要包含JQuery):
(function($, undefined)
{
$('#darken').click(function() {
$(this).preventDefault(); // stops the link from functioning as a link
chooseStyle('none', 60); //call your change stylesheet function
$('#darken').hide(); //hide the dark link
$('#lighten').show(); // show the light link
})
$('#lighten').click(function() {
$(this).preventDefault(); // stops the link from functioning as a link
chooseStyle('none', 60); //call your change stylesheet function
$('#lighten').hide(); //hide the light link
$('#darken').show(); // show the dark link
})
})(jQuery);
答案 3 :(得分:0)
if($_COOKIES['dark_theme']){
$show_dark = true;
}else{
$show_dark = false;
}
if($show_dark){
echo "<link rel="stylesheet" href="/css/dark.css"...";
}else{
echo "<link rel="stylesheet" href="/css/light.css"...";
}
当您点击“让它变暗”时,只需重新加载页面并修改cookie。
答案 4 :(得分:0)
或者您可以告诉php在一行中执行此操作,您只需根据需要在用户切换到Cookie名称下面的另一个样式表更改时设置cookie。
echo (isset($_COOKIE['dark_theme'])) ? '<link rel="stylesheet" href="/css/dark.css">' : '<link rel="stylesheet" href="/css/light.css">';