来源于:http://trac.seagullproject.org/wiki/Howto/CSS/Handling

Seagull 如何处理 CSS

简介

Seagull把CSS代码写成PHP文件。也就是说,你会使用文件名stylesheet.php而不是stylesheet.css。

这样比一个正常的CSS文件提供了许多优点:

  • 能够在CSS代码中进行PHP变更替换
  • 能名修改颜色模式变量, ie, primary/secondary/tertiary colours, and quickly effect an overall colour scheme change.
  • 它可以检测客户端的浏览器类型并定制CSS代码(如果需要的话)。
  • 提供这些优点而不增加处理开销或增加带宽占用量(看下面的解析

由于对'Last-Modified'的header添加了检查逻辑,stylesheet.php可以和stylesheet.css一样有效的工作。Apache服务器上的所有文件都有一个'Last-Modified'时戳的header。这些信息在最近的客户端请求后被返回到Apache服务器。对于后来的请求,php脚本验证css文件从上次提交到客户端到现在没有被修改,并响应客户端一个'HTTP/1.x 304 Not Modified' header(告诉客户端浏览器使用缓存的css文件)。如果文件被修改了,那么新版本的css文件将被传递到客户端。

概述

基本的seagull样式表分成更小的片断。包括:

  • style.php, 容器
  • vars.php, 在这里定义php变量
  • core.php, 主要的css代码
  • $navigation.php, 导航部分

另外你可以为你正在使用的模块载入一个特定的样式表。

Defaults, eye candy

默认地,我们把表格居中放置,并且不带边界,所以你在任何地方都不必写border=“0”, align=“center”,cell{padding,spacing}这样的html代码。

我们把一些助手类,如错误类的颜色设置成红色,这样你就不用写style=“color: red”或style=“color: #ff0000”。有三个类full,wide,narrow处理宽度,分别代表100%, 90% 和 60%。这样你就不必写width=“foo”这样的代码。图像也默认设置成无边界的。

At last, in the eye candy camp we have the “simulate a button” effect in CSS, you could see it in action in the login/logout button.

导航菜单样式表

Seagull允许你无缝的增加导航菜单样式表。导航菜单是标准的无序列表。代码是很简单的。你可以看SglDefault_Twolevel.css中的代码。SglDefault_Multilevel.css对应水平菜单,SglListamaticSubtle.css对应垂直菜单。Seagull提供的惟一助手是针对当前页面元素的一个.current类。

模块的CSS

你可能通过在www/themes/default/css目录中创建一个以模块命名的css文件为模块载入css文件。比如说你想给Faq模块载入一个css文件,你只需在www/themes/default/css目录中创建faq.php。

定制

有了在Seagull 0.5.1介绍的CSS模块性,维持一个自定义树是很简单的。如果你需要变化颜色,你只需简单地用你的vars.php 替换掉原先的文件,这样做对导航样式表也适用。如果你需要更高级的修改又不想为每个seagull变化进行同步,你只需从style.php 取得你所需的样式表。祝你好运。

  • 注意,从0.6.2 版本起,在manager或action范围内,你可以使用SGL_Output#addCssFile('myFile.css')来动态加载一个CSS文件
  function _cmd_list(&$input, &$output)
  {
      SGL::logMessage(null, PEAR_LOG_DEBUG);
      $output->addCssFile('foomgr-myaction.css');
  }
  • Note: 从0.6.2 版本起,你可以通过在表单中指定一个css文件作为参数,那么这个css文件也会被加载
<form id="foo">
    <fieldset class="hide">
        <input type="hidden" name="redirMod" value="default" />
        <input type="hidden" name="redirMgr" value="service" />
        <input type="hidden" name="redirTpl" value="serviceDetail.html" />
        <input type="hidden" name="contentId" value="{contentId}" />
        <input type="hidden" name="cssFile" value="foomgr-myaction.css" />
    </fieldset>
</form>

只要参数名为'cssFile'当验证失败时它会被自动重载到$output对象。

编码标准

编码标准很简单:

  • 缩进四个空格
  • 同一个代码块不要有空行
  • 代码后面不要有空行
  • php变量使用骆驼式命名1)

i.e.:

$primaryTextLight      = '#ffffff'; // white
#sgl-header-right a {
    padding: 0 5px;
    text-decoration: none;
    color: <?php echo $primaryTextLight ?>;
}
#sgl-header-right a:hover {
  text-decoration: underline;
}
1) 应该就是第一个单词首字母小写,其它单词首字母大写,如下
 
howto/css/handling.txt · 最后更改: 2010/05/30 00:21 (外部编辑)
 
Except where otherwise noted, content on this wiki is licensed under the following license:GNU Free Documentation License 1.2