在php中的css文件中替换当前css


Replace current css within a css file in php?

我有一个具有以下规则的custom.css

div#widget {background:red !important;}
div#widget2 {background:#f0f0f0;}
div#widget2:hover {background: rgb(10,20,30);}

这些规则可以在custom.css文件中的任何位置:

示例:

div#widget {background:red !important;}
.mainwrapper {background:blue;}
div#widget2 {background:#f0f0f0;}     
p {font-size:12px;}
div#widget2:hover {background: rgb(10,20,30);}

现在我的想法是添加另一个css文件来否决现有的custom.css规则,如下所示:

div#widget {background:yellow !important;}
div#widget2 {background:#000000 !important;}
div#widget2:hover {background: #ffffff !important;}

而不是使用添加新的自定义css文件!重要规则我在想。。。有没有办法用新的背景色替换当前的custom.css规则?这有可能在php中(以安全的方式)实现吗?

(现在我正在创建一个像这样的新css)

$fp = fopen( "newcustom.css", 'w');
fwrite($fp, $important_css);
fclose($fp);

更新澄清我有一个系统,用户可以在其中创建小部件。创建小部件代码是为了让用户可以轻松地将其复制并粘贴到他/她的网站中。将为用户创建对自定义css的引用。

现在我正在更新系统。。。如果我必须添加新的css文件,那么用户必须复制并粘贴一个新的小部件代码才能使新的css工作。如果我可以替换当前的custom.css,那么它将"立即"工作。

重写会影响所包含样式表的顺序。因此,稍后在custom.css:之后包含您的新css文件

<link rel="stylesheet" type="text/css" href="custom.css" />
<link rel="stylesheet" type="text/css" href="new_file.css" />

所以,现在最后一条规则覆盖了第一条规则:

div#widget {background:red;}
div#widget {background:blue;} /* this will work */

不管怎样,稍后为其定义的css规则都会起作用。

如果你不想改变css规则的排序,你可以为每个特定的页面定义一些类名,然后使用它:

div#widget.page3_widget {background:blue;} /* this will work */
div#widget {background:red;}

此外,您可能会看到我的另一个答案,了解css专用性是如何工作的。了解css的特定规则,您可以很好地使用css。

使用jQuery可以轻松地将新的css添加到html中。

类似(#div_id').css('{ }');

为什么不简单地为特定的HTML ELEMENT添加一个类名?通过这样做。编写/覆盖当前CSS规则,如:

div.newWidget {background:red !important;}