在PHP变量中存储CSS?
我是一名php初学者,我正在尝试如何动态链接不同的php文件。在实验过程中,我意识到我可以在我的php文件中创建变量,并使我的模板文件在不编辑我的模板文件的情况下呼应出我需要的html 例如: 在about-me.php页面中,我使用在PHP变量中存储CSS?,php,css,dynamic,Php,Css,Dynamic,我是一名php初学者,我正在尝试如何动态链接不同的php文件。在实验过程中,我意识到我可以在我的php文件中创建变量,并使我的模板文件在不编辑我的模板文件的情况下呼应出我需要的html 例如: 在about-me.php页面中,我使用 <?php include ('includes/header.html'); ?> <?php include ('includes/footer.html'); ?> 并在header.php中回显 $page_title =
<?php include ('includes/header.html'); ?>
<?php include ('includes/footer.html'); ?>
并在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>
我已经试过了,而且效果很好,但我想知道这是正确的方法吗?一些更严格的人可能会说,正确的CSS不需要变量,yadda yadda 我个人认为,如果这能奏效,那么这是一种向CSS添加一些易用性的聪明方法。我完全赞成。你能做到吗?对 你应该这样做吗?嗯。(不,有点苛刻…) 最好将CSS文件名存储在php变量中,然后在标题中添加:
<link rel="stylesheet" href="<?php echo $this_page_style_sheet; ?>" />
在这种情况下没有对错之分
您可以将CSS存储在一个字符串中,并根据需要进行回显。或者您甚至可以将其嵌入到includes/header.html
文件中。这取决于你
就个人而言,如果它是CSS规则的集合,我会将其保存在自己的CSS文件中,并在需要时回显文件名
$css_filename = "/path/to/rules.css";
// ... etc etc
<link rel="stylesheet" href="<?php echo $css_filename; ?>">
$css_filename=“/path/to/rules.css”;
// ... 等等
没有一个正确的方法来做内联CSS
您的代码将正常工作,它将生成一个有效的页面,并且对用户来说它看起来绝对不错。但你不应该那样做
那么,你为什么不这样做呢?
可维护性是您不应该以这种方式处理CSS的主要原因。管理一个单独的CSS文件要比在PHP代码中寻找要更改的CSS规则容易得多
看起来您存储的数据是静态的,变量的作用是存储可以更改的数据。在脚本执行期间,网站名称(companyabc
)之类的内容不太可能更改,因此您应该将它们包含在静态HTML模板中
最重要的是缓存(大多数浏览器缓存.css
文件,节省带宽)和可访问性(屏幕阅读器可能不知道如何处理内联样式和js)
您应该如何处理动态样式?
使用PHP和CSS组合处理动态样式的一种方法是在外部文档中定义类样式,然后使用PHP应用它们
例如,将其放入styles.css
:
span.greentext { color: #0f0; }
在您的PHP文件中:
<span class='<?php echo ($someCondition) ? "greentext" : null; ?>'>Some text</span>
希望这有帮助,请不要使用内联CSS或变量,除非必要。当你不得不在接下来的5个月内更改网站时,你会为此感谢自己。这是系统工作方式的一大优点和陷阱。你可以做到这一点,它是有效的,而且似乎没有任何直接和明显的安全问题。我不知道这是否是PHP的预期用途,但它可以工作,所以如果它适合您的情况,您可以使用它。当使用了足够多的这些小解决方法,最终可能会在某个地方出现安全问题时,就会出现陷阱,但我不记得CSS曾被用作攻击的载体。您可以这样做来生成动态CSS
文件css.php
<?php
header("Content-Type: text/css");
echo 'p {color:red}';
?>
html(不完整,但可跨浏览器使用)
这应该是红色的
为什么不按预期将CSS放在样式表中?
<?php if($someCondition): ?>
<link rel="stylesheet" href="styles/conditional.css" type="text/css" media="screen">
<?php endif; ?>
<?php
header("Content-Type: text/css");
echo 'p {color:red}';
?>
<link rel="stylesheet" href="css.php" type="text/css" />
<p>This should be red</p>