使用php解析器改进和简化css
我想从以下几个方面改进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 用法:使用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类似
@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