2011-09-05 69 views
3

我是朋友乾淨的GUI。不幸的是,我需要覆蓋「chrome:// global/skin」樣式表出於某種原因。在XUL中實現基於操作系統的樣式表

什麼是最好的方法,實現不同的基於os的樣式表到xul文件 - 例如。對於像Windows XP,Windows aero或macosx aqua(overlay-aero.css,overlay-aqua.css等)的GUI。

Mozilla是否爲基於os的樣式表實現提供任何標準?

回答

5

不知道你打算如何疊加樣式:是的,通常的做法是使用manifest flags。例如,如果你在你的擴展的chrome.manifest文件中定義一個style overlay,你會做這樣的:

style chrome://browser/content/browser.xul chrome://myExtension/skin/overlay-win.css os=WINNT 
style chrome://browser/content/browser.xul chrome://myExtension/skin/overlay-osx.css os=Darwin 
style chrome://browser/content/browser.xul chrome://myExtension/skin/overlay-linux.css os=Linux 

您還可以使用Mozilla-specific media features樣式表中的一個操作系統的不同主題之間進行區分。例如:

@media all and (-moz-windows-classic) 
{ 
    ... 
} 
@media all and (-moz-windows-theme: aero) 
{ 
    ... 
} 
@media all and (-moz-windows-compositor) 
{ 
    ... 
} 
+0

好消息 - 再次感謝你,弗拉基米爾! – mate64

0

聽起來像你想創建自己的Firefox主題(必不可少的CSS文件和圖像,取代瀏覽器的標準外觀組成的擴展)。在Mozilla開發中心有關於此的整個部分:https://addons.mozilla.org/en-US/developers/docs/how-to/theme-development

+0

謝謝你,馬修。你錯了,我不想創造「另一個主題」。這是一個複雜的擴展。例如:我在一個簡單的行'(display:table-cell;)'中顯示兩個groupboxes - 但這個解決方案在macosx中看起來很愚蠢。我如何才能爲aero用戶實現aero.css文件? – mate64