2010-07-08 81 views
3

我有一大堆(超過300)C#ASP.NET頁面* .aspx和控件* .ascx,它們內嵌CSS樣式。我的任務是將這些樣式提取到CSS文件中。從HTML中提取內聯CSS並淨化頁面

所以我正在尋找一個工具來簡化手動提取這種內聯樣式的任務,並用class =「」聲明替換它們。

現在我知道這不是理想的解決方案,但任何可以緩解任務的工具都會有幫助。

回答

0

我可能會選擇使用正則表達式的腳本語言。這看起來很適合python的列表功能 - 對於每個匹配到正則表達式,您可以檢查列表以查看是否有相應的條目,從該結果中提取並分配類,並添加每個未列出的匹配到名單繼續建設。

+0

是的......這是真的,但我更期待現有的工具來做到這一點。我不喜歡寫自己的作品。 – Drejc 2010-07-09 12:06:40

+1

不要使用正則表達式來解析HTML,請使用正確的HTML解析器:http://stackoverflow.com/a/1732454/3408 – rjmunro 2012-02-06 15:58:24

+0

他沒有在尋找解析HTML的方法。他正在試圖用另一組特定的模式替換一組特定的文本。正則表達式可以做得很好。這些模式發生在HTML中與正則表達式是否能夠適應他的需求無關。 – 2012-02-07 16:27:08

1

沒有工具會爲你寫好CSS選擇器,就像沒有工具可以爲你寫好代碼一樣。是的,您可以從模板生成代碼,但僅適用於最重複的編碼任務。 CSS比科學更藝術,因此「自動生成」不會產生好的結果。

編寫好的,乾淨的,精益的,可維護的CSS需要深入瞭解HTML標記,您試圖實現的樣式&佈局以及識別整個站點模式(如字體,顏色, h1標題,表格數據的表示等等,這些都是重複使用的。

即使編寫自己的腳本也不會產生良好的CSS。你所希望的最好的方式是提取所有這些內聯樣式,用一個唯一的id或class替換它們,並將它們全部轉儲到一個css文件中。我在這個練習中實際上並沒有看到很多好處。實際上,由於您要創建的所有額外ID或類都會有更多的代碼需要維護。

除非您開始將所有這些唯一ID或類整合到更少,更多重用的ID中,否則在上述練習中,整個站點的外觀不會保持一致,而且這是最好的手工完成的任務,而不是無論如何自動化。由於css樣式表的瀏覽器緩存,頁面加載時間可能會有所提高,但是這取決於您獲得的所有內容。

對不起,如果我偏離了你的問題,但你的網站聽起來像是在呼喚你從頭重新編寫你的CSS。

查看CSS Zen Garden獲取關於CSS可以做什麼的靈感,以及美麗CSS的例子,並且被啓發!

+1

你知道這些工作是我進來的,而所有的傷害都已經完成了。因此,我創建了一個簡單的估計,我將花費多少時間來「修復」當前的情況,至少在20天左右纔會出現。這是我希望得不到的答案。雖然以下是真實的,但它不會解決我的問題。它有助於零。 – Drejc 2010-07-19 06:43:55

+0

是的,它會花費一桶時間,比一開始就要花費的時間要長。你所能做的就是向你的團隊/老闆/客戶解釋爲什麼用工具將CSS轉儲到文件中是毫無意義的,並解釋了做正確的好處。讓他們決定是否繼續。 – saille 2010-07-20 00:59:03

0

您可以使用this工具,它會查找內聯樣式= ...定義將其替換爲類定義並生成樣式表。希望這是有幫助的。

+0

鏈接已死,我必須爲此投票迴應。 – holaSenor 2013-03-07 17:50:16