使用PHP与Less/Sass

22

我是一名前端开发者,最近考虑使用SASS或LESS进行CSS开发。

然而,我不使用Ruby,并且不希望依赖用户启用JavaScript。有没有人有关于在PHP项目中使用SASS或LESS的技巧?


4
你应该尝试使用lessphp - http://leafo.net/lessphp/。如果你只使用PHP,那么它会增加额外的开销。 - chrisjlee
http://stackoverflow.com/a/8411274/762449 - talha2k
如果您使用PHP,可以尝试使用php-sass。如果您使用Laravel,则可以使用laravel-sass - Sliq
你可以将Libsass作为动态扩展集成到你的PHP构建中。LibSassPHP正是这样做的,它支持缩进语法(SASS)和SCSS。 - Shlomi Hassid
11个回答

26

在这里下载最新版本的lessphp

以下是我尝试使用它的示例:

<?php
require 'lessc.inc.php';

$less = new lessc('test.less');
file_put_contents('test.less.css', $less->parse());

?>
<html>
<head>
    <title>Less CSS</title>
    <link rel="stylesheet" href="test.less.css" type="text/css" />
</head>
<body>
    <h1>This isn't supposed to be black!</h1>
</body>
</html>

我的 test.less 文件:

@color : #33ddff;
.colorful(@textcolor : red){
    color : @textcolor;
}
h1{
    .colorful(@color);
}

这对我很有效,而且它是php!


是的,真正简单的解决方案,以下是我追求更少的旅程如何开始的。 - Adil

10

现在我为您编写了两种选项:

它们都有很好的文档说明。我鼓励您尝试并告诉我是否遇到任何问题。


+1(我目前正在使用SCSS模块,因为phpsass没有文档) - CamelBlues
@leafo:你们计划支持SCSS 3.3吗?我们可以期待什么时候呢? - John Slegers
@leafo 有没有一个与 lessphp 类似的 scssphp 版本?我喜欢 lessphp API 的 compileToCacheFileOnCommand 特性。 - yellow-saint

4

安装 Ruby。安装 SASS。使用 SASS。

SASS 会输出静态文件,所以您只需像处理其他 CSS 一样,在构建/发布过程中上传它们即可。


10
这会在写作和测试之间产生巨大的鸿沟,完全破坏了工作流程。 - Hugo Mota
9
如果您在Sass的监视模式下使用它,这个间隙会立即消失。 - Cheekysoft
1
@Cheekysoft链接的答案非常棒。它很好地扩展了这个被接受的答案。Sass新手们,请阅读那个答案!我知道,因为我自己也是一个Sass新手。 - Kim Stacks
1
我可以问一下为什么这个答案被接受吗?问题是关于在PHP中使用less/sass,但是使用这个解决方案需要用户安装Ruby... 我同意 - 这是实现目标的一种方式,但我不认为它是最好的。 - Karol
@Quentin 这个问题是“我该如何做...?”的形式,而不是“我应该做...?”如果问题是“我该如何将PHP用作操作系统?”,那么你可以给出关于如何使用PHP作为操作系统的最佳建议,或者选择不回答。 - Kevin Laity
显示剩余5条评论

2
如果你正在使用WordPress,那么你一定要看看 WP LESS。你只需要在wp_register_stylewp_enqueue_style或者add_editor_style中指定一个.less文件,它就会为你编译LESS代码生成CSS代码。它还会缓存生成的CSS,这样你就不必每次加载页面时都进行LESS编译了。

2

是的,永远!这只是为了指出找到答案的困难。 - Manuel Pedrera

2
LESS PHP占用了很多资源......好吧,"很多"是相对的,但无论如何,您应该缓存输出的css。 如果您使用Mac,请使用LESSapp。 如果您使用Windows,请使用dotLEss(实际上它是一个库,可以集成到几个.NET项目中,但是它有一个小命令行编译器,可以输出有效的CSS文件)。

2
作为我的工作的一部分,我使用php和sass。你可以尝试使用PhamlP,因为这就是我使用的。 PhamlP 是将 HamlSass 移植到 PHP 的一个版本。您可以让sass解析器每次页面加载时运行,或者您可以让它缓存所生成的 css。如果您想了解更多选项,请参考这里提出的同样问题。

2
您可以使用PhpLessDemandBridge来实现这一点:https://github.com/andyhausmann/PhpLessDemandBridge 您可以在模板中简单地使用它,例如:
<link rel="stylesheet" type="text/css" media="all"  href="css/engine/css.php?file=bootstrap.less" />

引擎可以通过配置文件进行配置,您需要在其中定义您的less文件和缓存文件的路径。

通过定义“css.php?file = bootstrap.less”,您将引擎指向bootstrap文件,并导入其他less文件,例如Twitter Bootstrap等。

我正在将其用于Magento、TYPO3 CMS等多个平台。

在第一行中,我包含了Twitter Bootstrap的必要部分 - 之后我包含了自己的主题和覆盖。


1

我在几个项目中使用http://leafo.net/scssphp/。它对我很有效,以下是我的做法。

将scssphp安装到lib/scssphp/中

在.htaccess文件中:

#Sass Parser: anything /css/FILENAME.css -> FILENAME.scss
RewriteRule ^css/(.*).css?$ style.php/$1.scss [NC,L]

在根目录下,我有一个style.php文件:
<?php
    require "lib/scssphp/scss.inc.php";
    $scss = new scssc();
    $scss->setFormatter("scss_formatter");
    $server = new scss_server("ui", null, $scss);
    $server->serve();       
?>

在我的HTML中,我使用了以下代码:

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

在/ui中,我有我的实际SCSS代码文件:/ui/style.scss。
一切都很顺利。 SCSSPHP只会检查文件是否需要重新编译,并且会在透明的情况下完成它,否则会发送缓存版本。

1

现在有另一种 less 编译器可用:less.php


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接