我想创建css解析类型。。
Parse将在CSS中的每个元素中添加我的类名。
例如,我有以下CSS
.class1 {font-size:10px}
.class2 {font-style:italic}
body {height:100%}
html {width:100%}
在我的解析器之后,它将是这样的。
.myclass .class1 {font-size:10px}
.myclass .class2 {font-style:italic}
.myclass body {height:100%}
.myclass html {width:100%}
我已经创建了一个函数,但当@media查询使用带有嵌套元素的CSS时,它就不起作用了。
有人能为我提供好的CSS解析器/解决方案吗。我已经尝试了可用的CSS解析器。这些对我的解决方案来说还不够好。
为此,我推荐Sabberworm的PHP CSS Parser。我自己也用过,这是一个很棒的工具。您可以通过Composer将下面的代码添加到您的Composer.json 中来安装它
{
"require": {
"sabberworm/php-css-parser": "*"
}
}
安装后,它非常直接。您可以从字符串中包含CSS的变量中传入CSS代码,也可以从特定目录中读取文件。在我的例子中,我将从一个目录中读取它。
$oCssParser = new Sabberworm'CSS'Parser(file_get_contents('style.css'));
$oCssDocument = $oCssParser->parse();
现在你已经准备好出发了。在这个解析器的Github上,他们实际上有一个如何为所有选择器预先设置id的示例。我会在课堂上教你怎么做。
$myClass = ".myclass";
foreach($oCssDocument->getAllDeclarationBlocks() as $oBlock) {
foreach($oBlock->getSelectors() as $oSelector) {
$oSelector->setSelector($myClass.' '.$oSelector->getSelector());
}
}
现在你已经准备好上课了。现在你想退货,不是吗?这可以通过使用内置函数render()
轻松完成。像这样的
$oFormat = Sabberworm'CSS'OutputFormat::create()->indentWithSpaces(4)->setSpaceBetweenRules("'n");
print $oCssDocument->render($oFormat);
当然,如果您想将其输出到文件中,也可以使用file_put_contents()
来完成。
希望这能有所帮助。
css方式:
*{
background: #333;
}
js方式:
document.body.getElementsByTagName("*").classList.add("class");
或
document.getElementsByTagName("*").classList.add("class");
(php方式)
echo "<script>document.getElementsByTagName('*').classList.add('yourclass');</script>"
也许您应该使用http://sass-lang.com/到您的产品