2

我是一个新手 php 学习者,我正在尝试如何动态链接不同的 php 文件。在试验时,我意识到我可以在我的 php 文件中创建变量,并使我的模板文件回显出我需要的 html,而无需编辑我的模板文件......

例如:在 about-me.php 页面中,我使用了 header.php 和 footer.php

 <?php include ('includes/header.html'); ?>
 <?php include ('includes/footer.html'); ?>

然后我创建一个变量

  $page_title = 'CompanyABC';

并在 header.php 中回显

  $page_title = 'South Asia Exact'; 

现在我的问题是我也可以对我的内联 css 执行此操作吗?例如,我创建了一个变量,用于存储我所有的内联 CSS:

 $page_inlinecss = "#SAEcontentR div#certification_certificate {
    margin:0 auto 0 auto;
    width:580px; 
    height:464px;
     }\n";

然后我在 header.php 中回显,如下所示:

<style type="text/css">
<?php echo $page_inlinecss; ?>
</style>

我已经尝试过它并且它有效,但我想知道它是正确的方法吗?

4

6 回答 6

7

没有正确的方法来做内联 CSS

你的代码会工作,它会产生一个有效的页面,而且它看起来对用户来说绝对没问题。但你不应该那样做。

那么,你为什么不这样做呢?

可维护性是您不应该以这种方式处理 CSS 的主要原因。管理一个单独的 CSS 文件比通过 PHP 代码寻找 CSS 规则来改变要容易得多。

看起来您存储的数据是静态的,变量的重点是存储可以更改的数据。网站名称 ( Company ABC) 之类的内容在脚本执行期间不太可能发生变化,因此您应该将它们包含在静态 HTML 模板中。

最重要的是缓存(大多数浏览器缓存.css文件,节省带宽)和可访问性(屏幕阅读器可能不知道如何处理内联样式和 js)等问题。

您应该如何处理动态样式?

使用 PHP 和 CSS 的组合处理动态样式(即基于不同页面加载的不同信息的样式)的一种方法是在外部文档中定义类样式,然后使用 PHP 应用它们。

例如,把它放在styles.css

span.greentext { color: #0f0; }

这在你的 PHP 文件中:

<span class='<?php echo ($someCondition) ? "greentext" : null; ?>'>Some text</span>

或者,如果您有更多样式需要处理:

或者,您可以根据条件加载特定样式表:

<?php if($someCondition): ?>
    <link rel="stylesheet" href="styles/conditional.css" type="text/css" media="screen">
<?php endif; ?>

希望这会有所帮助,除非必要,否则请不要使用内联 CSS 或变量。当您必须在 5 个月后更改站点时,您会为此感谢自己。

于 2013-08-14T15:50:36.787 回答
1

你能做这个吗?是的。你应该这样做吗?嗯。(不。有点苛刻......)

最好将 CSS 文件名存储在 php 变量中,然后在标题中添加:

<link rel="stylesheet" href="<?php echo $this_page_style_sheet; ?>" />
于 2013-08-14T15:43:35.977 回答
1

在这种情况下没有对错。

您可以将 CSS 存储在字符串中并在您认为合适的时候回显它。或者您甚至可以将其嵌入到您的includes/header.html文件中。由你决定。

就个人而言,如果它是 CSS 规则的集合,我会将其保存在自己的 CSS 文件中,并在需要时回显文件名。

$css_filename = "/path/to/rules.css";
// ... etc etc

<link rel="stylesheet" href="<?php echo $css_filename; ?>">
于 2013-08-14T15:48:43.577 回答
1

这是系统工作方式的一个优点和一个缺陷。您可以这样做,它可以工作,而且似乎不会出现任何直接和明显的安全问题。我不知道这是否是 PHP 的预期用途,但它可以工作,所以如果它适合您的情况,您可以使用它。当使用足够多的这些小变通方法时,陷阱就会出现,最终可能会在某处出现安全问题,但我不记得 CSS 曾经被用作攻击的媒介。

于 2013-08-14T15:51:20.523 回答
1

你可以这样做来生成动态css

文件 css.php

<?php
header("Content-Type: text/css");

echo 'p {color:red}';
?>

html(不完整,但应该可以跨浏览器工作)

<link rel="stylesheet" href="css.php" type="text/css" />
<p>This should be red</p>
于 2013-08-14T15:53:19.857 回答
0

一些更严格/严谨的人可能会说正确的 CSS 不需要变量,yadda yadda。

我个人认为如果这可行,那么这是为 CSS 添加一些易用性的聪明方法。我完全赞成。

于 2013-08-14T15:43:16.123 回答