我有一些页面,我希望有相同的背景,所以我认为外部样式表将是要走的路。但是,背景会根据一天中的时间而变化,所以我不得不将一些PHP混合到CSS中。所以现在我有一个文件,background.php:
<html>
<style type="text/css">
body
{
background-image: url('<?php echo (day() == 1 ? 'images/day_sheep.jpg'
: 'images/night_sheep.jpg'); ?>');
background-position: 50% 50%;
background-repeat: no-repeat;
background-color: silver
}
a {text-decoration:none;}
a:link {color:#ff0000;}
a:visited {color:#0000FF;}
a:hover {text-decoration:underline;}
</style>
</html>
从两个不同的页面调用。一个页面工作得非常好,但是当我添加行require_once 'background.php'
时,另一个页面完全破坏了,我的意思是根本不再显示任何内容。违规页面如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Penelope's Conquests</title>
<?php require_once 'background.php'; ?>
<style type="text/css">
table {
margin: 10px;
margin-left: 50%;
margin-right: 50%;
padding: 12px;
border: 10px;
text-align: center;
background-color: #fffb40;
border-style: ridge;
border-collapse: separate;
border-color: #9c6ad6;
outline-style: inset;
}
td.cap {
text-transform: capitalize;
font-variant: small-caps;
}
td.str {
font-weight: bolder;
font-size: 1.4em;
}
</style>
</head>
<body>
<h2>To date, Queen Penelope has destroyed:<br /><br /></h2>
<?php
require_once 'victims.php';
require_once 'mysqlSheep.php';
echo '<table border="3"
frame="box"
cellpadding="5">
<caption>Penelope\'s Victims.</caption>
<tr><th>Victim</th><th>Times Zapped</th>';
$hits = mysql_query("
SELECT *
FROM victims
ORDER BY amount
");
if( $hits )
{
while( $row = mysql_fetch_array($hits) )
{
echo '<tr><td class="cap">'.$row['victim'].'</td>
<td>'.$row['amount'].'</td></tr>';
}
}
else
{
echo '<p>' . mysql_error() . '</p>';
}
echo '</tr></table><br /><br />';
echo '<table border="3"
frame="box"
cellpadding="5">
<caption>Button Clicks.</caption>
<tr><th>Hour of day</th><th>Times Clicked</th>';
$time = mysql_query("
SELECT *
FROM time
ORDER BY hits
");
while( $row = mysql_fetch_array($time) )
{
print "<tr><td class='str'>".$row['hour']."</td>";
print "<td>".$row['hits']."</td></tr>";
}
?>
</body>
</html>
为什么页面不希望使用样式表?
答案 0 :(得分:4)
另一种选择是使用<link>
属性附加css文件。
所以在你的background.php地方
<?php
header("Content-type: text/css");
?>
body
{
background-image: url('<?php echo (day() == 1 ? 'images/day_sheep.jpg'
: 'images/night_sheep.jpg'); ?>');
background-position: 50% 50%;
background-repeat: no-repeat;
background-color: silver
}
a {text-decoration:none;}
a:link {color:#ff0000;}
a:visited {color:#0000FF;}
a:hover {text-decoration:underline;}
然后使用
调用它<link rel="stylesheet" type="text/css" href="background.php" />
将这个放在一个答案会变得混乱,这就是为什么我又添加了另一个。
答案 1 :(得分:1)
您的PHP样式表中有一个<html>
标记,这意味着您将获得重复的<html>
标记..不太好
删除它,只使用<style>
代码..
<强> background.php 强>
<style type="text/css">
body
{
background-image: url('<?php echo (day() == 1 ? 'images/day_sheep.jpg'
: 'images/night_sheep.jpg'); ?>');
background-position: 50% 50%;
background-repeat: no-repeat;
background-color: silver
}
a {text-decoration:none;}
a:link {color:#ff0000;}
a:visited {color:#0000FF;}
a:hover {text-decoration:underline;}
</style>
答案 2 :(得分:1)
哦,问题是函数day()是在一个单独的文件中定义的,我忘记在重组网站时将其移除。
答案 3 :(得分:1)
来吧Marko,这是超级棒的剧本!我用你的方式在外部css文件中设置自定义宽度,它工作得很好。
如果需要,我会做所有的PHP内容:
<?php
header("Content-type: text/css");
$width= $_COOKIE['scr_width']-10;
?>
然后我在css文件中使用下面的变量,如下所示:
width:<?PHP echo $width."px;";?>
我完成了这样的包含:
<head>
<link rel="stylesheet" href="<?PHP echo myLocVars::$mySpacePath."style.php";?>">
</head>
包含CSS可能非常棘手,因为不幸的是它不会抛出错误(至少我不知道如何...),这可能是一个麻烦。这就是我给出完整路径的原因,因为它是本地文件包含的本地文件,包含在index.php中。
答案 4 :(得分:0)
如果您在localhost上测试您的网站,请尝试
require_once(dirname(background.php) . "/background.php");
而不是require_once(background.php);