我怎样才能用php生成css?

时间:2013-10-20 05:47:18

标签: php css

在我这个问题的第一个版本中,我没有提供足够的信息,对不起。这是我需要帮助的更清晰的版本。你的许多答案已经很接近,这将有所帮助:

此问题的更具体版本:

我决定使用php和css来使我的页面比使用javascript实现相同结果时更有效。这并不重要。重要的是我试图这样做的两种方法(如教程中所示)是:

添加

AddType application/x-httpd-php .css

到我的.htaccess

然后,当样式表出现在页面的来源中但对我尝试使用的页面没有影响

<link rel="stylesheet" href="style.php" media="screen">

将我的样式表链接为php文件,如本教程所示。 http://www.phpro.org/articles/Embedding-PHP-In-CSS.html

这是我用php变量测试的css:

<?php
/*** set the content type header ***/
header("Content-type: text/css");

/** set the paragraph color ***/
$para_color = '#0000ff';

/*** set the heading size ***/
$heading_size = '2em';

/*** set the heading color ***/
$heading_color = '#c0c0c0';
?>

p{
    color: <?php echo $para_color;  ?>;
    font-weight: bold;
    font-size: 1.2em;
    text-align: left;
}       

h1{
    color: <?php echo $heading_color; ?>;
    font-size = <?php echo $heading_size; ?>;
    text-align: centre;
}

两种方法都给了我相同的结果,css完全按照应该作为样式表来源显示,但没有显示在页面上除非我对页面的开发工具中的样式进行了更改,之后页面风格很好。

问题:为什么会发生这种情况,我该如何解决?

旧版本:

这里的问题很简单:

如何在CSS中使用PHP?

我正在创建一个网站,它在时间和处理速度上都会更有效率,我可以在CSS中使用php来实现各种所需的结果,而不是使用javascript。

我被告知这可以做到。怎么样?

7 个答案:

答案 0 :(得分:13)

您的问题措辞错误,让很多人感到困惑。你想要的是一个PHP文件,可以“生成”一个CSS文件。因此,不使用<link>作为CSS文件,而是使用它链接到输出CSS的PHP文件。如您发布的tutorial所示。

<?php
/*** set the content type header ***/
header("Content-type: text/css");

/***
query the database for the background color
provided you have a valid MySQL connection or whatever you are using.
***/
$background_color = mysqli_query($dbc, "SELECT `background_color` FROM user_settings WHERE user_id = 1");

/** set the paragraph color ***/
$para_color = '#0000ff';

/*** set the heading size ***/
$heading_size = '2em';

/*** set the heading color ***/
$heading_color = '#c0c0c0';
?>

html{
    background: <?php echo $background_color; ?>
}

p{
        color: <?php echo $para_color;  ?>;
        font-weight: bold;
        font-size: 1.2em;
        text-align: left;
}       

h1{
        color: <?php echo $heading_color; ?>;
        font-size = <?php echo $heading_size; ?>;
        text-align: centre;
}

现在在你的PHP文件中,你会使用类似的东西。

<link rel="stylesheet" href="style.php" media="screen">

修改 添加了关于如何检索用户偏好的假设MySQL查询。由于问题的模糊性,不能彻底。

答案 1 :(得分:2)

你的html文件中的

<link href="testCSS.php" rel="stylesheet">
testCSS.php文件中的

<?php
header("Content-type: text/css");
echo "body,html{background-color:silver; height:100%;color:white}";
?>

这只是一个简单的例子。您总是可以使生成样式表的方式复杂化。

答案 2 :(得分:1)

层叠样式表(CSS)是一种样式表语言,用于描述以标记语言编写的文档的表示语义(外观和格式)。更多信息:http://en.wikipedia.org/wiki/Cascading_Style_Sheets CSS不是一种编程语言,并且没有PHP等服务器端语言附带的工具。但是,我们可以使用服务器端语言来生成样式表。

<html>
<head>
<title>...</title>
<style type=”text/css”>
table {
margin: 8px;
}

th {
font-family: Arial, Helvetica, sans-serif;
font-size: .7em;
background: #666;
color: #FFF;
padding: 2px 6px;
border-collapse: separate;
border: 1px solid #000;
}

td {
font-family: Arial, Helvetica, sans-serif;
font-size: .7em;
border: 1px solid #DDD;
}
</style>
</head>
<body>
<?php>
echo "<table>";
echo "<tr><th>ID</th><th>hashtag</th></tr>";
while($row = mysql_fetch_row($result))
{
echo "<tr onmouseover=\"hilite(this)\" onmouseout=\"lowlite(this)\"><td>$row[0]</td>                <td>$row[1]</td></tr>\n";
}
echo "</table>";
?>
</body>
</html>

答案 3 :(得分:1)

PHP是服务器端语言,而CSS是样式表,但您可以创建一些条件检查并使用classes

只是一个例子:

<span <?php if($a == 1) { echo "class='left'" ; } ?>This is some text </span>

在你的CSS中:

.left{
//some css work here
}

因此,通过这种方式,您可以基于条件语句将css应用于任何元素

答案 4 :(得分:1)

文件标题中的以下内容如何:

<style type=”text/css”>
   table {
   margin: <?php echo rand(1,5);?>px;
   }

这将包括“内联”样式(在这种情况下,通过选择5到10之间的随机数来以编程方式确定表元素的边距)。这是一个微不足道的例子,但我相信这就是你所追求的。如果没有提供更多信息,很难提供更多帮助。

显然你希望你的php做一些更明智的事情 - 但是这个想法(php产生了一些css指令)似乎就是你所追求的。

答案 5 :(得分:1)

您可以将您的css文件设为php文件。

例如,

default.css.php

在那里,你有

<?php header("Content-type: text/css; charset: UTF-8"); ?>  


body {
 background: <?=$color?>;
}

此处有更详细的信息:http://net.tutsplus.com/tutorials/php/supercharge-your-css-with-php-under-the-hood/

答案 6 :(得分:-1)

如果您在样式标记中直接在php文件上编写css部分而不是在外部包含样式表,那么这是可能的