0

我想以多种方式改进css语法,例如:

  • 定义变量
    link-color1 = #fff
  • 数学计算
    width:500-3-2 这看起来很愚蠢,但有变量:
    width: container - inner - 3px;
  • 风格延伸
    #foo{background:#ddd;color:#eee;} #bar {@extend: #foo;color:#fff;}
  • 跨浏览器功能
    -moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;替换为
    border-radius:3px;

这些只是例子,我的想法,但图书馆可以不同

我正在寻找一个 php 库,它解析一个语法类似于 css 的文件,并生成一个有效的 css 文档。

这很重要,我不想将 php sytax 插入到我的 css文件中,因为:

  • PHP 看起来又复杂又难看
    #foo {color:<?php echo $color1; ?>;}
  • Notepad++ 变得非常混乱。我也是

SASS是非常好的离线工作解决方案,但我仍在搜索 PHP 解决方案,因为:

  • 改进后的 css 文件可供其他开发人员使用,以便他们可以修改和测试它。对于更大的社区,在服务器上使用 php-parser 是一种更简单的方法。
  • PHP 也可以通过基于文件修改日期和哈希码的简单修订系统来节省资源。

这是我写 的一个例子: php parser at/css/index.php

用法:

@color1: #1a1a1a;
@color2: #444444;

div#container {background:@color1;}
div#inner {background:@color2;}

HTML链接:

<link rel="stylesheet" type="text/css" href="/css/?main.css" />

这仅适用于颜色。我需要一个用于列出选项的解析器。

4

6 回答 6

5

试试SASS。它支持变量、数学计算、样式继承和更多功能。它不是在 PHP 中实现的,但它会生成静态文件。

于 2011-05-22T21:13:19.130 回答
4

你试过CSS Crush吗?

于 2011-05-27T07:56:38.433 回答
1

你可以在 php 中包含你的 css:

<link href="style.php" rel="stylesheet" type="text/css" />

在您的 style.php 中,您可以:

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

此时,您可以使用 php 的所有功能来做任何您想做的事情:

<?php

 $rules = 'font-size:11px;padding:5px;';

?>

td { <?php echo $rules; ?> }

补充

遗产:

<?php

   $parent=array( 'td' => 'color:;padding;etc;'
                  'p' => 'other rules'
                   //> other rules
               );
?>

.inheritance {
    <?php echo $parent['td']; ?>
   //> other rules here
 }
于 2011-05-22T21:20:23.343 回答
1

我不认为这是一个好主意,尤其是在生产环境中,但如果你坚持这样做,我建议只安装 SASS 并使用 passthru() 从 php 执行它

http://sass-lang.com/

http://www.php.net/manual/en/function.passthru.php

像这样

<?php
$css_path = '/';  // location of your real css files
$sass_cmd = 'sass -f';  // sass cmd
passthru($sass_cmd . $css_path . $_GET['cssfile'];
?>

通过调用

cssparse.php?cssfile=xyz.css

如果您想变得花哨,可以使用重写规则将所有 *.css 请求汇集到您的 PHP 脚本中。

例如:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} \.css$
RewriteRule   ^(.*\.css)$  cssparse.php?cssfile=$1

这样,当您在浏览器中请求 /example.css 时,它会被重写为 /cssparse.php?cssfile=example.css 调用 SASS 并返回输出

于 2011-05-25T18:31:38.897 回答
0

你想做的不是一个好主意。每次用户加载您的 CSS 文件时,它首先必须通过 PHP 函数从您的“改进”版本生成 CSS 文件。例如,只有用户可以在其上进行自定义布局的社交网站才需要它。然后必须从数据库加载自定义样式并使用 PHP 将其插入 CSS 文件。

对于没有此功能的网站,在解析 CSS 之后,没有什么区别。创建 CSS 文件对您来说更容易/更有效。

此外,如果您的 CSS 必须通过 PHP 解析器,则无法离线修改 CSS。

于 2011-05-22T21:46:19.893 回答
0

少PHP

感谢@Kru,我发现了 Less.js,它是一个非常好的和聪明的 css 解析器,但正如我所说,最好的解决方案是 PHP。在论坛和谷歌上搜索了一下之后,我发现了LessPhp,它是 Less.js 的 PHP 端口

文档可以在这里找到。

LessPhp 也在github 上

于 2011-05-27T10:14:42.880 回答