通过php控制css

时间:2010-12-30 09:21:50

标签: php css

我即将开始研究新的LAMP项目。

一般来说,我所做的所有css类,特别是布局都是这样的:

.pageBoundaries{
   width:999px;
   margin:auto;
}

.onethird{
   width:333px;
   float:left;
   display:block;
}

.twothird{
   width:666px;
   float:left;
   display:block;
}

.half{
   width:499px;
   float:left;
   display:block;
}

现在,我在想我制作一个php文件来控制宽度(可能是颜色,边框等)。就像:

$pageWidth=999;


.pageBoundaries{
       width:<?php $pageWidth ?>px;
       margin:auto;
    }

    .onethird{
       width:<?php $pageWidth/3 ?>px;
       float:left;
       display:block;
    }

    .twothird{
       width:<?php ($pageWidth*2)/3 ?>px;
       float:left;
       display:block;
    }

    .half{
       width:<?php $pageWidth/2 ?>px;
       float:left;
       display:block;
    }

然后我可以从这个php文件设置标题,以便浏览器将其解释为css文件。关于这个计划的任何想法?它的优点和缺点?

通过这样做,我认为制作多色主题也很容易。

6 个答案:

答案 0 :(得分:2)

似乎没问题,只需确保发送所有正确的HTTP标头进行缓存,以便浏览器不会在每次请求时下载CSS文件。

另请查看SASSLESS。它们是解决同一问题的两种不同技术(因此决定其中一种)。他们所做的是,为您提供更多编写CSS的工具。像变量这样的东西,嵌套(所以你不必在整个地方重复你的选择器),扩展,混合,功能等。看看SASS的主页,它可以很好地概述它的作用。< / p>

答案 1 :(得分:1)

这种方法通常 * 很好。

请不要忘记发送权限caching headers,以便每次都不会请求资源。

如果您在每个页面上都有可能更改的CSS设置,请考虑将它们分开并将它们放入实际的HTML文档中,这样就不必每次都加载整个样式表。

*在流量非常高的站点上,PHP解释器在每个请求中解析样式表这一事实是个问题,因为它占用了RAM。在这种情况下,最好让PHP脚本生成静态文件。

答案 2 :(得分:1)

思想

这是一个有趣的想法,但可能不是最好的方法。通过PHP的动态CSS确实有一些很酷的优点,但我不会将它用于页面宽度。

特定骗局:

•加载速度较慢。您可以设置缓存标头,以便它只加载一次CSS,但仍然不是最佳方式。您必须不断清空/使缓存无效,重命名文件或添加参数。

•另外,PHP仅在页面加载时设置页面宽度值。如果页面调整大小会怎样? (因此人们通常使用javascript代替PHP来达到你所描述的目的)

通过PHP很好地使用动态CSS:

•如果要为某些用户设置特定的CSS属性,或者根据PHP中设置的某些变量设置。 (例如,为数据库中的用户存储的颜色首选项)

何时不通过PHP使用CSS:

•在页面加载后需要更改CSS时。 (例如,在调整浏览器窗口大小时调整大小/移动元素 - 不使用百分比)

替代

基于javascript的方法可能会更好。像 jQuery 这样的框架为manipulating CSS以及accessing the width of elements such as the document or window提供了一些很好的工具。

其他CSS工具:

SASS/SCSSLESS也很有用。它们提供了使用CSS设置变量等的工具。

答案 3 :(得分:0)

您必须将css和php代码嵌入到同一文件中。还有一件事,请记住,php首先呈现为服务器脚本,然后是客户端脚本,如html,js或css

答案 4 :(得分:0)

这个想法很好,但我认为你可以使用LESS以更干净的方式做同样的事情

答案 5 :(得分:0)

优点:您可以使用此方法拥有自己的动态主题

缺点:您必须停止客户端浏览器从缓存中获取动态内容,但如果您这样做,将在每次请求时下载CSS文件,为客户端加载每个页面将花费更多时间