Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php解析器改进和简化css_Php_Css_Parsing_Simplification - Fatal编程技术网

使用php解析器改进和简化css

使用php解析器改进和简化css,php,css,parsing,simplification,Php,Css,Parsing,Simplification,我想从以下几个方面改进css语法: 定义变量 link-color1=fff 数学计算 宽度:500-3-2这看起来很愚蠢,但有变量: 宽度:集装箱-内部-3件; 风格延伸 foo{background:ddd;color:eee;}bar{@extend:foo;color:fff;} 跨浏览器功能 -moz边界半径:3px-webkit边界半径:3px;边界半径:3px;取代 边界半径:3px; 我的观点是,这些只是例子,但图书馆可以有所不同 我正在寻找一个php库,它解析一个sytax类似

我想从以下几个方面改进css语法:

定义变量 link-color1=fff 数学计算 宽度:500-3-2这看起来很愚蠢,但有变量: 宽度:集装箱-内部-3件; 风格延伸 foo{background:ddd;color:eee;}bar{@extend:foo;color:fff;} 跨浏览器功能 -moz边界半径:3px-webkit边界半径:3px;边界半径:3px;取代 边界半径:3px; 我的观点是,这些只是例子,但图书馆可以有所不同

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

我不想将php sytax插入css文件,这一点很重要,因为:

PHP看起来既复杂又丑陋 foo{color:;} 记事本++变得非常混乱。我也是 这是一个非常好的脱机工作解决方案,但我仍然在搜索PHP解决方案,因为:

改进后的css文件将可供其他开发人员使用,以便他们可以对其进行修改和测试。对于更大的社区,在服务器上使用php解析器是一种更简单的方法。 PHP还可以通过基于文件修改日期和哈希代码的简单修订系统节省资源。 下面是我写的一个例子: at/css/index.php

用法:

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

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


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

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

您可以在PHP中包含css,包括:

<link href="style.php" rel="stylesheet" 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
 }

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

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


另外,如果您的CSS必须通过PHP解析器,则不可能脱机修改CSS。

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

像这样

<?php
$css_path = '/';  // location of your real css files
$sass_cmd = 'sass -f';  // sass cmd
passthru($sass_cmd . $css_path . $_GET['cssfile'];
?>
如果你想变得更花哨,你可以使用重写规则将你所有的*.css请求通过你的PHP脚本传递出去

例如:

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

您尝试了吗?

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

可以找到文档


LESSHPP也处于启用状态。

您所说的“定义变量”和“样式继承”到底是什么意思?是否希望有一个带有颜色值的PHP变量,以便可以将其用于多个CSS属性?我需要一个PHP文件来解析我的改进版PHP,它可以解析CSS?我不明白你的意思。要解析它,您可以只使用php变量,而不必创建自定义的解析器。这个链接可能很有趣@omnosis,即使SASS是用ruby编写的,它也会在磁盘上生成静态CSS文件。因此,不需要为每个请求运行PHP脚本来生成完全相同的CSS,从而降低性能。无论何时更改SASS文档,SASS都会为您生成静态文件,因此无论何时决定更改内容,您都可以确保磁盘上有最新编译的CSS。为什么会有否决票?!这是一个完全正确的问题。这不是css。这是php。你要的不是css。你知道的?为什么要添加PHP作为标记?如果你没有添加这个标记,我就不会回答这个问题。是的,这是对的,但是我不想在我的not css文件中使用php变量函数。我想使用类似css的东西,然后用php解析。顺便说一句,你的答案不能解决继承问题。我添加了php标记,因为解析器应该是php。你不明白这一点。你不能使用类似css的东西,因为你想要的东西不是css。当然,您可以用PHP解决固有的问题。你只需要将父规则保存在一个变量中,然后回显变量。我编辑了我的答案,告诉你怎么做。你不明白我的意思。谢谢你的回答,但这不是我想要的。我知道我可以用php修改css。但是我正在寻找一个解析器,我想你最好不要浪费时间去寻找一个为你做这件事的脚本。我个人会尽一切努力加快我的CSS。我认为一个快速的网站比它有多容易更重要
是由设计师来制作CSS的。你是对的,但是如果php生成CSS,我可以通过一个简单的请求来保存它。如果只是为了开发它,那就太好了。在生成CSS file.ofc的最终版本后,您还可以从网站中删除解析器。这与php无关,但使用php,我不需要打开解析器程序,然后保存并加载页面。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
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} \.css$
RewriteRule   ^(.*\.css)$  cssparse.php?cssfile=$1