编辑引擎 CSS

engine for editing CSS

我正在开发一个网络编辑器,用户可以在其中自定义门户的一些外观和感觉。为了实现这一点,我在想该工具会创建一个 CSS 文件。

例如,我给用户一个 UI 编辑器,他可以在其中 select 页眉的字体名称和字体大小,因此创建的 CSS 文件应该是这样的:

.header {
  font-size: fontSize;
  font-familiy: fontFamiliy;
}

其中 fontSize 和 fontFamily 是来自编辑器的值。

问题是我不确定执行此操作的最佳方法是什么。用户需要能够返回到编辑器并编辑值,因此引擎需要生成 CSS 但它还需要存储和加载值。

此外,字体大小和字体系列只是一个简单的示例,自定义功能可能更复杂。

一个想法是编写代码,根据编辑器中的值动态创建 CSS 文本,例如:

var cssString = '.header {';
cssString = 'font-size: ' + fontSize + ';';

对于加载,使用正则表达式或类似的东西解析 CSS 文本并检索值。

但我觉得这不是最好的方法。

我建议将 LESS 编译器与 LessPHP 编译器

一起使用
[variables.less]
@black: #000;
@red: #f00;
@green: #0F0;
@blue: #00F;

[editor]

<label>
    Font color:
    <select name="Less[header][color]">
        <options value="@black">Red</options>
        <options value="@red">Red</options>
        <options value="@green">Red</options>
        <options value="@blue">Red</options>
    </select>
</label>

<label>
    Header background color color:
    <select name="Less[header][background-color]">
        <options value="@black">Red</options>
        <options value="@red">Red</options>
        <options value="@green">Red</options>
        <options value="@blue">Red</options>
    </select>
</label>

...

[makeLess.php]
$less = '';

foreach ($_POST['Less'] as $element) {
    $less .= ".{$element} {\r\n";
        foreach ($element as $attribute => $value) {
            $less .= "\t{$attribute}: {$value}\r\n";
        }

    $less .= "}\r\n";
}

$db->save($_POST['Less']); // Delete old values, insert new. No need to check if changed.
file_put_contents(__DIR__.'/phpLess.less', $less);

require "lessc.inc.php";

$less = new lessc();
echo $less->checkedCompile(__DIR__.'/phpLess.less', __DIR__'/style.css');

将所有 Less 变量保存为 PHP 数组(也许是硬编码?)以便您可以重用它并从 PHP 数组创建 Less 变量文件。