我正在處理一個生成多個CSS的腳本。這是腳本。將多個CSS文件合併到一個PHP中
$full_string = "";
foreach($allfiles as $curfile => $file) {
$file = $PATH[$curfile] . $file;
$file_open = fopen($file , 'r');
$concat = "\n" . fread($file_open , filesize($file)) . "\n";
$full_string .= $concat;
fclose($file_open);
}
return $full_string;
在這裏,我所有的CSS文件合併成一個。但現在的問題是我不得不比較當前的CSS($文件)與另一個CSS(我們認爲它是overrider.css
)。如果$文件是有一個風格類似,
h1 {
color: white;
background: teal;
FONT-FAMILY: arial, helvetica, lucida-sans, sans-serif;
FONT-SIZE: 18pt;
FONT-STYLE: normal;
FONT-VARIANT: normal;
}
body
{
font-family: arial;
FONT-SIZE: 14px;
}
如果overrider.css是有一個風格類似,
body
{
font-family: Calibri;
color: #3E83F1;
}
產生應該然後實施最終CSS(output.css),
h1 {
color: white;
background: teal;
FONT-FAMILY: arial, helvetica, lucida-sans, sans-serif;
FONT-SIZE: 18pt;
FONT-STYLE: normal;
FONT-VARIANT: normal;
}
body
{
font-family: Calibri;
FONT-SIZE: 14px;
color: #3E83F1;
}
這裏,由於override.css
中的body的樣式具有font-family
,所以它取代原始CSS中的font-family屬性,並且由於顏色是不存在於($ file)中的新屬性,是原始的CSS文件,所以它應該添加屬性到原始的CSS文件。所以如何在PHP中實現這一點,因爲我沒有任何解析CSS的想法。任何想法都將不勝感激。
請注意,我需要通過將輸入作爲file1($ file)和file2(override.css)生成一個新的CSS文件,並且我們需要將output.css與覆蓋的樣式生成一致。
在此先感謝。如果你想font-family: arial;
是應用,然後將其添加爲font-family: arial !important;
你不必擔心合併它們,因爲瀏覽器會自動從第一個CSS發現那麼它將顏色的第二CSS顏色添加到body標籤
它應該生成一個新的CSS,而不是css覆蓋... – Stranger 2013-02-28 06:06:08
@Udhay你的意思是找到差異並使用php創建新的css。 – 2013-02-28 06:09:01